]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
IE7 fixes for split buttons and dropdowns
authorPete Hopkins <phopkins@twitter.com>
Fri, 27 Jan 2012 21:06:58 +0000 (16:06 -0500)
committerPete Hopkins <phopkins@twitter.com>
Fri, 27 Jan 2012 21:10:40 +0000 (16:10 -0500)
less/button-groups.less
less/dropdowns.less

index fd802cc3597a36181799c98e1e432c65b746abf2..a058f0344803db45d2e3134d31672b542bffa54a 100644 (file)
@@ -6,6 +6,7 @@
 .btn-group {
   position: relative;
   .clearfix(); // clears the floated buttons
+  .ie7-restore-left-whitespace;
 }
 
 // Space out series of button groups
   padding-right: 8px;
   @shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
   .box-shadow(@shadow);
+  *padding-top: 5px;
+  *padding-bottom: 5px;
 }
 
-// Reposition menu on open and round all corners
-.btn-group.open .dropdown-menu {
-  display: block;
-  margin-top: 1px;
-  .border-radius(5px);
-}
-.btn-group.open .dropdown-toggle {
-  background-image: none;
-  @shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
-  .box-shadow(@shadow);
+.btn-group.open {
+  // IE7's z-index only goes to the nearest positioned ancestor, which would
+  // make the menu appear below buttons that appeared later on the page
+  *z-index: @zindexDropdown;
+
+  // Reposition menu on open and round all corners
+  .dropdown-menu {
+    display: block;
+    margin-top: 1px;
+    .border-radius(5px);
+  }
+
+  .dropdown-toggle {
+    background-image: none;
+    @shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
+    .box-shadow(@shadow);
+  }
 }
 
 // Reposition the caret
index 06114b254d0abc99dfe1d2361c72a9997c04dda2..e73b056e96b888885d617b38b882dabfd373489c 100644 (file)
@@ -5,12 +5,19 @@
 .dropdown {
   position: relative;
 }
+.dropdown .dropdown-toggle {
+  // The caret makes the toggle a bit too tall in IE7
+  *margin-bottom: -3px;
+}
 // Dropdown arrow/caret
 .caret {
   display: inline-block;
   width: 0;
   height: 0;
   text-indent: -99999px;
+  // IE7 won't do the border trick if there's a text indent, but it doesn't
+  // do the content that text-indent is hiding, either, so we're ok.
+  *text-indent: 0;
   vertical-align: top;
   border-left:  4px solid transparent;
   border-right: 4px solid transparent;
@@ -21,7 +28,6 @@
 .dropdown .caret {
   margin-top: 8px;
   margin-left: 2px;
-  *margin-top: 7px;
 }
 .dropdown:hover .caret,
 .open.dropdown .caret {
@@ -31,6 +37,7 @@
 .dropdown-menu {
   position: absolute;
   top: 100%;
+  left: 0;
   z-index: @zindexDropdown;
   float: left;
   display: none; // none by default, but block on "open" of the menu
@@ -50,7 +57,6 @@
   -webkit-background-clip: padding-box;
      -moz-background-clip: padding;
           background-clip: padding-box;
-  zoom: 1; // do we need this?
   *border-right-width: 2px;
   *border-bottom-width: 2px;
 
     overflow: hidden;
     background-color: #e5e5e5;
     border-bottom: 1px solid @white;
+
+    // IE7 needs a set width since we gave a height. Restricting just
+    // to IE7 to keep the 1px left/right space in other browsers.
+    // It is unclear where IE is getting the extra space that we need
+    // to negative-margin away, but so it goes.
+    *width: 100%;
+    *margin: -5px 0 5px;
   }
 
   // Links within the dropdown menu
 
 // Open state for the dropdown
 .dropdown.open {
+  // IE7's z-index only goes to the nearest positioned ancestor, which would
+  // make the menu appear below buttons that appeared later on the page
+  *z-index: @zindexDropdown;
+
   .dropdown-toggle {
     color: @white;
     background: #ccc;