IE7 fixes for split buttons and dropdowns

This commit is contained in:
Pete Hopkins 2012-01-27 16:06:58 -05:00
parent 347a15b69a
commit 8328987b15
2 changed files with 39 additions and 12 deletions

View File

@ -6,6 +6,7 @@
.btn-group { .btn-group {
position: relative; position: relative;
.clearfix(); // clears the floated buttons .clearfix(); // clears the floated buttons
.ie7-restore-left-whitespace;
} }
// Space out series of button groups // Space out series of button groups
@ -84,19 +85,28 @@
padding-right: 8px; 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); @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); .box-shadow(@shadow);
*padding-top: 5px;
*padding-bottom: 5px;
} }
.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 // Reposition menu on open and round all corners
.btn-group.open .dropdown-menu { .dropdown-menu {
display: block; display: block;
margin-top: 1px; margin-top: 1px;
.border-radius(5px); .border-radius(5px);
} }
.btn-group.open .dropdown-toggle {
.dropdown-toggle {
background-image: none; background-image: none;
@shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); @shadow: inset 0 1px 6px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
.box-shadow(@shadow); .box-shadow(@shadow);
} }
}
// Reposition the caret // Reposition the caret
.btn .caret { .btn .caret {

View File

@ -5,12 +5,19 @@
.dropdown { .dropdown {
position: relative; position: relative;
} }
.dropdown .dropdown-toggle {
// The caret makes the toggle a bit too tall in IE7
*margin-bottom: -3px;
}
// Dropdown arrow/caret // Dropdown arrow/caret
.caret { .caret {
display: inline-block; display: inline-block;
width: 0; width: 0;
height: 0; height: 0;
text-indent: -99999px; 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; vertical-align: top;
border-left: 4px solid transparent; border-left: 4px solid transparent;
border-right: 4px solid transparent; border-right: 4px solid transparent;
@ -21,7 +28,6 @@
.dropdown .caret { .dropdown .caret {
margin-top: 8px; margin-top: 8px;
margin-left: 2px; margin-left: 2px;
*margin-top: 7px;
} }
.dropdown:hover .caret, .dropdown:hover .caret,
.open.dropdown .caret { .open.dropdown .caret {
@ -31,6 +37,7 @@
.dropdown-menu { .dropdown-menu {
position: absolute; position: absolute;
top: 100%; top: 100%;
left: 0;
z-index: @zindexDropdown; z-index: @zindexDropdown;
float: left; float: left;
display: none; // none by default, but block on "open" of the menu display: none; // none by default, but block on "open" of the menu
@ -50,7 +57,6 @@
-webkit-background-clip: padding-box; -webkit-background-clip: padding-box;
-moz-background-clip: padding; -moz-background-clip: padding;
background-clip: padding-box; background-clip: padding-box;
zoom: 1; // do we need this?
*border-right-width: 2px; *border-right-width: 2px;
*border-bottom-width: 2px; *border-bottom-width: 2px;
@ -68,6 +74,13 @@
overflow: hidden; overflow: hidden;
background-color: #e5e5e5; background-color: #e5e5e5;
border-bottom: 1px solid @white; 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 // Links within the dropdown menu
@ -93,6 +106,10 @@
// Open state for the dropdown // Open state for the dropdown
.dropdown.open { .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 { .dropdown-toggle {
color: @white; color: @white;
background: #ccc; background: #ccc;