Twitter-Bootstrap:两个下拉式切换按钮并排工作不正常

前端之家收集整理的这篇文章主要介绍了Twitter-Bootstrap:两个下拉式切换按钮并排工作不正常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
简介:我网站的其中一个部分需要一个小工具栏,并列两个下拉菜单.我试图通过以下标记来实现这一点(简化):
  1. <div class="btn-group">
  2. <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">
  3. <span id="uniqueId">Text1</span> <span class="caret"></span>
  4. </button>
  5. <ul class="dropdown-menu">
  6. <li><a onclick="javascript:someFunction()">Item1</a></li>
  7. <li><a onclick="javascript:someFunction()">Item2</a></li>
  8. ...
  9. </ul>
  10. <button class="btn btn-mini dropdown-toggle" data-toggle="dropdown">
  11. <span id="uniqueId2">Text2</span> <span class="caret"></span>
  12. </button>
  13. <ul class="dropdown-menu">
  14. <li><a onclick="javascript:someOtherFunction()">Item1</a></li>
  15. <li><a onclick="javascript:someOtherFunction()">Item2</a></li>
  16. ...
  17. </ul>
  18. </div>

我想得到一个漂亮的双按钮工具栏,只有工具栏外侧的圆角.

问题:

当我点击任一按钮时,两个按钮都显示为“按下”,我无法在视觉上区分我刚才点击的那个按钮.所有其他功能都可以正常工作 – 即菜单被正确显示并且具有正确的选项.

有没有办法让这些按钮分别改变他们的风格?

更新:

我知道通过使用div将我的按钮分成两个btn组或(如@Sherbrow建议),可以很好的实现这个工作. Bootstrap documentation也建议

Buttons with dropdowns must be individually wrapped in their own .btn-group within a .btn-toolbar for proper rendering.

我想知道 – 有可能以某种方式避免这种单独的包装,并在一个单一的btn组内有两个正常行为的下拉列表?

我认为我要求非常非标准和无证件的行为,如果没有人可以提出这样做​​,我会接受一个答案“这是不可能的”.

解决方法

你忘了你的.

更新2:忘记了一些组代码.并做了gist (github)

更新:做一个更好的包装,和样式像按钮.这基本上是另一种按钮式样式,但没有.btn类的行李.

  1. <div class="btn-group">
  2. <div class="dropdown dropdown-btn">
  3. <div class="dropdown-toggle" data-toggle="dropdown">
  4. <span id="uniqueId">Text1</span><span class="caret"/>
  5. </div >
  6. <ul class="dropdown-menu">
  7. <li><a onclick="javascript:someFunction()">Item1</a></li>
  8. <li><a onclick="javascript:someFunction()">Item2</a></li>
  9. <!-- ... -->
  10. </ul>
  11. </div>
  12. <div class="dropdown dropdown-btn">
  13. <div class="dropdown-toggle" data-toggle="dropdown">
  14. <span id="uniqueId2">Text2</span><span class="caret"/>
  15. </div >
  16. <ul class="dropdown-menu">
  17. <li><a onclick="javascript:someOtherFunction()">Item1</a></li>
  18. <li><a onclick="javascript:someOtherFunction()">Item2</a></li>
  19. <!-- ... -->
  20. </ul>
  21. </div>
  22. </div>

有一个大的CSS调整(button.less和button-groups.less重用改变.btn到.dropdown-btn从here (github)):

  1. .dropdown-btn {
  2. display: inline-block;
  3. *display: inline;
  4. /* IE7 inline-block hack */
  5. *zoom: 1;
  6. padding: 4px 10px 4px;
  7. margin-bottom: 0;
  8. font-size: 13px;
  9. line-height: 18px;
  10. *line-height: 20px;
  11. color: #333333;
  12. text-align: center;
  13. text-shadow: 0 1px 1px rgba(255,255,0.75);
  14. vertical-align: middle;
  15. cursor: pointer;
  16. background-color: #f5f5f5;
  17. background-image: -moz-linear-gradient(top,#ffffff,#e6e6e6);
  18. background-image: -ms-linear-gradient(top,#e6e6e6);
  19. background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#e6e6e6));
  20. background-image: -webkit-linear-gradient(top,#e6e6e6);
  21. background-image: -o-linear-gradient(top,#e6e6e6);
  22. background-image: linear-gradient(top,#e6e6e6);
  23. background-repeat: repeat-x;
  24. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);
  25. border-color: #e6e6e6 #e6e6e6 #bfbfbf;
  26. border-color: rgba(0,0.1) rgba(0,0.25);
  27. *background-color: #e6e6e6;
  28. /* Darken IE7 buttons by default so they stand out more given they won't have borders */
  29. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  30. border: 1px solid #cccccc;
  31. *border: 0;
  32. border-bottom-color: #b3b3b3;
  33. -webkit-border-radius: 4px;
  34. -moz-border-radius: 4px;
  35. border-radius: 4px;
  36. *margin-left: .3em;
  37. -webkit-Box-shadow: inset 0 1px 0 rgba(255,.2),0 1px 2px rgba(0,.05);
  38. -moz-Box-shadow: inset 0 1px 0 rgba(255,.05);
  39. Box-shadow: inset 0 1px 0 rgba(255,.05);
  40. }
  41. .dropdown-btn:hover,.dropdown-btn:active,.dropdown-btn.active,.dropdown-btn.disabled,.dropdown-btn[disabled] {
  42. background-color: #e6e6e6;
  43. *background-color: #d9d9d9;
  44. }
  45. .dropdown-btn:active,.dropdown-btn.active { background-color: #cccccc \9 }
  46. .dropdown-btn:first-child { *margin-left: 0 }
  47. .dropdown-btn:hover {
  48. color: #333333;
  49. text-decoration: none;
  50. background-color: #e6e6e6;
  51. *background-color: #d9d9d9;
  52. /* Buttons in IE7 don't get borders,so darken on hover */
  53. background-position: 0 -15px;
  54. -webkit-transition: background-position 0.1s linear;
  55. -moz-transition: background-position 0.1s linear;
  56. -ms-transition: background-position 0.1s linear;
  57. -o-transition: background-position 0.1s linear;
  58. transition: background-position 0.1s linear;
  59. }
  60. .dropdown-btn:focus {
  61. outline: thin dotted #333;
  62. outline: 5px auto -webkit-focus-ring-color;
  63. outline-offset: -2px;
  64. }
  65. .dropdown-btn.active,.dropdown-btn:active {
  66. background-color: #e6e6e6;
  67. background-color: #d9d9d9 \9;
  68. background-image: none;
  69. outline: 0;
  70. -webkit-Box-shadow: inset 0 2px 4px rgba(0,.15),.05);
  71. -moz-Box-shadow: inset 0 2px 4px rgba(0,.05);
  72. Box-shadow: inset 0 2px 4px rgba(0,.05);
  73. }
  74. .dropdown-btn.disabled,.dropdown-btn[disabled] {
  75. cursor: default;
  76. background-color: #e6e6e6;
  77. background-image: none;
  78. opacity: 0.65;
  79. filter: alpha(opacity=65);
  80. -webkit-Box-shadow: none;
  81. -moz-Box-shadow: none;
  82. Box-shadow: none;
  83. }
  84. .dropdown-btn-large {
  85. padding: 9px 14px;
  86. font-size: 15px;
  87. line-height: normal;
  88. -webkit-border-radius: 5px;
  89. -moz-border-radius: 5px;
  90. border-radius: 5px;
  91. }
  92. .dropdown-btn-large [class^="icon-"] { margin-top: 1px }
  93. .dropdown-btn-small {
  94. padding: 5px 9px;
  95. font-size: 11px;
  96. line-height: 16px;
  97. }
  98. .dropdown-btn-small [class^="icon-"] { margin-top: -1px }
  99. .dropdown-btn-mini {
  100. padding: 2px 6px;
  101. font-size: 11px;
  102. line-height: 14px;
  103. }
  104. .dropdown-btn-primary,.dropdown-btn-primary:hover,.dropdown-btn-warning,.dropdown-btn-warning:hover,.dropdown-btn-danger,.dropdown-btn-danger:hover,.dropdown-btn-success,.dropdown-btn-success:hover,.dropdown-btn-info,.dropdown-btn-info:hover,.dropdown-btn-inverse,.dropdown-btn-inverse:hover {
  105. color: #ffffff;
  106. text-shadow: 0 -1px 0 rgba(0,0.25);
  107. }
  108. .dropdown-btn-primary.active,.dropdown-btn-warning.active,.dropdown-btn-danger.active,.dropdown-btn-success.active,.dropdown-btn-info.active,.dropdown-btn-inverse.active { color: rgba(255,0.75) }
  109. .dropdown-btn {
  110. border-color: #ccc;
  111. border-color: rgba(0,0.25);
  112. }
  113. .dropdown-btn-primary {
  114. background-color: #0074cc;
  115. background-image: -moz-linear-gradient(top,#0088cc,#0055cc);
  116. background-image: -ms-linear-gradient(top,#0055cc);
  117. background-image: -webkit-gradient(linear,from(#0088cc),to(#0055cc));
  118. background-image: -webkit-linear-gradient(top,#0055cc);
  119. background-image: -o-linear-gradient(top,#0055cc);
  120. background-image: linear-gradient(top,#0055cc);
  121. background-repeat: repeat-x;
  122. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0055cc',GradientType=0);
  123. border-color: #0055cc #0055cc #003580;
  124. border-color: rgba(0,0.25);
  125. *background-color: #0055cc;
  126. /* Darken IE7 buttons by default so they stand out more given they won't have borders */
  127. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  128. }
  129. .dropdown-btn-primary:hover,.dropdown-btn-primary:active,.dropdown-btn-primary.active,.dropdown-btn-primary.disabled,.dropdown-btn-primary[disabled] {
  130. background-color: #0055cc;
  131. *background-color: #004ab3;
  132. }
  133. .dropdown-btn-primary:active,.dropdown-btn-primary.active { background-color: #004099 \9 }
  134. .dropdown-btn-warning {
  135. background-color: #faa732;
  136. background-image: -moz-linear-gradient(top,#fbb450,#f89406);
  137. background-image: -ms-linear-gradient(top,#f89406);
  138. background-image: -webkit-gradient(linear,from(#fbb450),to(#f89406));
  139. background-image: -webkit-linear-gradient(top,#f89406);
  140. background-image: -o-linear-gradient(top,#f89406);
  141. background-image: linear-gradient(top,#f89406);
  142. background-repeat: repeat-x;
  143. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);
  144. border-color: #f89406 #f89406 #ad6704;
  145. border-color: rgba(0,0.25);
  146. *background-color: #f89406;
  147. /* Darken IE7 buttons by default so they stand out more given they won't have borders */
  148. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  149. }
  150. .dropdown-btn-warning:hover,.dropdown-btn-warning:active,.dropdown-btn-warning.disabled,.dropdown-btn-warning[disabled] {
  151. background-color: #f89406;
  152. *background-color: #df8505;
  153. }
  154. .dropdown-btn-warning:active,.dropdown-btn-warning.active { background-color: #c67605 \9 }
  155. .dropdown-btn-danger {
  156. background-color: #da4f49;
  157. background-image: -moz-linear-gradient(top,#ee5f5b,#bd362f);
  158. background-image: -ms-linear-gradient(top,#bd362f);
  159. background-image: -webkit-gradient(linear,from(#ee5f5b),to(#bd362f));
  160. background-image: -webkit-linear-gradient(top,#bd362f);
  161. background-image: -o-linear-gradient(top,#bd362f);
  162. background-image: linear-gradient(top,#bd362f);
  163. background-repeat: repeat-x;
  164. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);
  165. border-color: #bd362f #bd362f #802420;
  166. border-color: rgba(0,0.25);
  167. *background-color: #bd362f;
  168. /* Darken IE7 buttons by default so they stand out more given they won't have borders */
  169. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  170. }
  171. .dropdown-btn-danger:hover,.dropdown-btn-danger:active,.dropdown-btn-danger.disabled,.dropdown-btn-danger[disabled] {
  172. background-color: #bd362f;
  173. *background-color: #a9302a;
  174. }
  175. .dropdown-btn-danger:active,.dropdown-btn-danger.active { background-color: #942a25 \9 }
  176. .dropdown-btn-success {
  177. background-color: #5bb75b;
  178. background-image: -moz-linear-gradient(top,#62c462,#51a351);
  179. background-image: -ms-linear-gradient(top,#51a351);
  180. background-image: -webkit-gradient(linear,from(#62c462),to(#51a351));
  181. background-image: -webkit-linear-gradient(top,#51a351);
  182. background-image: -o-linear-gradient(top,#51a351);
  183. background-image: linear-gradient(top,#51a351);
  184. background-repeat: repeat-x;
  185. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);
  186. border-color: #51a351 #51a351 #387038;
  187. border-color: rgba(0,0.25);
  188. *background-color: #51a351;
  189. /* Darken IE7 buttons by default so they stand out more given they won't have borders */
  190. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  191. }
  192. .dropdown-btn-success:hover,.dropdown-btn-success:active,.dropdown-btn-success.disabled,.dropdown-btn-success[disabled] {
  193. background-color: #51a351;
  194. *background-color: #499249;
  195. }
  196. .dropdown-btn-success:active,.dropdown-btn-success.active { background-color: #408140 \9 }
  197. .dropdown-btn-info {
  198. background-color: #49afcd;
  199. background-image: -moz-linear-gradient(top,#5bc0de,#2f96b4);
  200. background-image: -ms-linear-gradient(top,#2f96b4);
  201. background-image: -webkit-gradient(linear,from(#5bc0de),to(#2f96b4));
  202. background-image: -webkit-linear-gradient(top,#2f96b4);
  203. background-image: -o-linear-gradient(top,#2f96b4);
  204. background-image: linear-gradient(top,#2f96b4);
  205. background-repeat: repeat-x;
  206. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);
  207. border-color: #2f96b4 #2f96b4 #1f6377;
  208. border-color: rgba(0,0.25);
  209. *background-color: #2f96b4;
  210. /* Darken IE7 buttons by default so they stand out more given they won't have borders */
  211. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  212. }
  213. .dropdown-btn-info:hover,.dropdown-btn-info:active,.dropdown-btn-info.disabled,.dropdown-btn-info[disabled] {
  214. background-color: #2f96b4;
  215. *background-color: #2a85a0;
  216. }
  217. .dropdown-btn-info:active,.dropdown-btn-info.active { background-color: #24748c \9 }
  218. .dropdown-btn-inverse {
  219. background-color: #414141;
  220. background-image: -moz-linear-gradient(top,#555555,#222222);
  221. background-image: -ms-linear-gradient(top,#222222);
  222. background-image: -webkit-gradient(linear,from(#555555),to(#222222));
  223. background-image: -webkit-linear-gradient(top,#222222);
  224. background-image: -o-linear-gradient(top,#222222);
  225. background-image: linear-gradient(top,#222222);
  226. background-repeat: repeat-x;
  227. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#222222',GradientType=0);
  228. border-color: #222222 #222222 #000000;
  229. border-color: rgba(0,0.25);
  230. *background-color: #222222;
  231. /* Darken IE7 buttons by default so they stand out more given they won't have borders */
  232. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  233. }
  234. .dropdown-btn-inverse:hover,.dropdown-btn-inverse:active,.dropdown-btn-inverse.active,.dropdown-btn-inverse.disabled,.dropdown-btn-inverse[disabled] {
  235. background-color: #222222;
  236. *background-color: #151515;
  237. }
  238. .dropdown-btn-inverse:active,.dropdown-btn-inverse.active { background-color: #080808 \9 }
  239. button.dropdown-btn,input[type="submit"].dropdown-btn {
  240. *padding-top: 2px;
  241. *padding-bottom: 2px;
  242. }
  243. button.dropdown-btn::-moz-focus-inner,input[type="submit"].dropdown-btn::-moz-focus-inner {
  244. padding: 0;
  245. border: 0;
  246. }
  247. button.dropdown-btn.dropdown-btn-large,input[type="submit"].dropdown-btn.dropdown-btn-large {
  248. *padding-top: 7px;
  249. *padding-bottom: 7px;
  250. }
  251. button.dropdown-btn.dropdown-btn-small,input[type="submit"].dropdown-btn.dropdown-btn-small {
  252. *padding-top: 3px;
  253. *padding-bottom: 3px;
  254. }
  255. button.dropdown-btn.dropdown-btn-mini,input[type="submit"].dropdown-btn.dropdown-btn-mini {
  256. *padding-top: 1px;
  257. *padding-bottom: 1px;
  258. }
  259. .btn-group {
  260. position: relative;
  261. *zoom: 1;
  262. *margin-left: .3em;
  263. }
  264. .btn-group:before,.btn-group:after {
  265. display: table;
  266. content: "";
  267. }
  268. .btn-group:after { clear: both }
  269. .btn-group:first-child { *margin-left: 0 }
  270. .btn-group + .btn-group { margin-left: 5px }
  271. .dropdown-btn-toolbar {
  272. margin-top: 9px;
  273. margin-bottom: 9px;
  274. }
  275. .dropdown-btn-toolbar .btn-group {
  276. display: inline-block;
  277. *display: inline;
  278. /* IE7 inline-block hack */
  279. *zoom: 1;
  280. }
  281. .btn-group > .dropdown-btn {
  282. position: relative;
  283. float: left;
  284. margin-left: -1px;
  285. -webkit-border-radius: 0;
  286. -moz-border-radius: 0;
  287. border-radius: 0;
  288. }
  289. .btn-group > .dropdown-btn:first-child {
  290. margin-left: 0;
  291. -webkit-border-top-left-radius: 4px;
  292. -moz-border-radius-topleft: 4px;
  293. border-top-left-radius: 4px;
  294. -webkit-border-bottom-left-radius: 4px;
  295. -moz-border-radius-bottomleft: 4px;
  296. border-bottom-left-radius: 4px;
  297. }
  298. .btn-group > .dropdown-btn:last-child,.btn-group > .dropdown-toggle {
  299. -webkit-border-top-right-radius: 4px;
  300. -moz-border-radius-topright: 4px;
  301. border-top-right-radius: 4px;
  302. -webkit-border-bottom-right-radius: 4px;
  303. -moz-border-radius-bottomright: 4px;
  304. border-bottom-right-radius: 4px;
  305. }
  306. .btn-group > .dropdown-btn.large:first-child {
  307. margin-left: 0;
  308. -webkit-border-top-left-radius: 6px;
  309. -moz-border-radius-topleft: 6px;
  310. border-top-left-radius: 6px;
  311. -webkit-border-bottom-left-radius: 6px;
  312. -moz-border-radius-bottomleft: 6px;
  313. border-bottom-left-radius: 6px;
  314. }
  315. .btn-group > .dropdown-btn.large:last-child,.btn-group > .large.dropdown-toggle {
  316. -webkit-border-top-right-radius: 6px;
  317. -moz-border-radius-topright: 6px;
  318. border-top-right-radius: 6px;
  319. -webkit-border-bottom-right-radius: 6px;
  320. -moz-border-radius-bottomright: 6px;
  321. border-bottom-right-radius: 6px;
  322. }
  323. .btn-group > .dropdown-btn:hover,.btn-group > .dropdown-btn:focus,.btn-group > .dropdown-btn:active,.btn-group > .dropdown-btn.active { z-index: 2 }
  324. .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle { outline: 0 }
  325. .btn-group > .dropdown-toggle {
  326. padding-left: 8px;
  327. padding-right: 8px;
  328. -webkit-Box-shadow: inset 1px 0 0 rgba(255,.125),inset 0 1px 0 rgba(255,.05);
  329. -moz-Box-shadow: inset 1px 0 0 rgba(255,.05);
  330. Box-shadow: inset 1px 0 0 rgba(255,.05);
  331. *padding-top: 4px;
  332. *padding-bottom: 4px;
  333. }
  334. .btn-group > .dropdown-btn-mini.dropdown-toggle {
  335. padding-left: 5px;
  336. padding-right: 5px;
  337. }
  338. .btn-group > .dropdown-btn-small.dropdown-toggle {
  339. *padding-top: 4px;
  340. *padding-bottom: 4px;
  341. }
  342. .btn-group > .dropdown-btn-large.dropdown-toggle {
  343. padding-left: 12px;
  344. padding-right: 12px;
  345. }
  346. .btn-group.open .dropdown-toggle {
  347. background-image: none;
  348. -webkit-Box-shadow: inset 0 2px 4px rgba(0,.05);
  349. }
  350. .btn-group.open .dropdown-btn.dropdown-toggle { background-color: #e6e6e6 }
  351. .btn-group.open .dropdown-btn-primary.dropdown-toggle { background-color: #0055cc }
  352. .btn-group.open .dropdown-btn-warning.dropdown-toggle { background-color: #f89406 }
  353. .btn-group.open .dropdown-btn-danger.dropdown-toggle { background-color: #bd362f }
  354. .btn-group.open .dropdown-btn-success.dropdown-toggle { background-color: #51a351 }
  355. .btn-group.open .dropdown-btn-info.dropdown-toggle { background-color: #2f96b4 }
  356. .btn-group.open .dropdown-btn-inverse.dropdown-toggle { background-color: #222222 }
  357. .dropdown-btn .caret {
  358. margin-top: 7px;
  359. margin-left: 0;
  360. }
  361. .dropdown-btn:hover .caret,.open.btn-group .caret {
  362. opacity: 1;
  363. filter: alpha(opacity=100);
  364. }
  365. .dropdown-btn-mini .caret { margin-top: 5px }
  366. .dropdown-btn-small .caret { margin-top: 6px }
  367. .dropdown-btn-large .caret {
  368. margin-top: 6px;
  369. border-left-width: 5px;
  370. border-right-width: 5px;
  371. border-top-width: 5px;
  372. }
  373. .dropup .dropdown-btn-large .caret {
  374. border-bottom: 5px solid #000000;
  375. border-top: 0;
  376. }
  377. .dropdown-btn-primary .caret,.dropdown-btn-warning .caret,.dropdown-btn-danger .caret,.dropdown-btn-info .caret,.dropdown-btn-success .caret,.dropdown-btn-inverse .caret {
  378. border-top-color: #ffffff;
  379. border-bottom-color: #ffffff;
  380. opacity: 0.75;
  381. filter: alpha(opacity=75);
  382. }

Live demo (jsfiddle)

Live demo (jsfiddle) updated

Live demo(jsfiddle) updated 2

PS:不要尝试版本3或4 …

猜你在找的Bootstrap相关文章