git.fiddlerwoaroof.com
less/navbar.less
489b3d20
 // NAVBAR (FIXED AND STATIC)
 // -------------------------
 
 
 // COMMON STYLES
 // -------------
 
 .navbar {
   // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar
   *position: relative;
   *z-index: 2;
 
   overflow: visible;
   margin-bottom: @baseLineHeight;
 }
 
 // Gradient is applied to it's own element because overflow visible is not honored by IE when filter is present
 .navbar-inner {
   min-height: @navbarHeight;
   padding-left:  20pt;
   padding-right: 20pt;
   border-bottom: 1pt solid @navbarBorderColor;
   #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground);
   .box-shadow(~"0 1pt 0 rgba(255,255,255,0.4), 0 0 10pt rgba(0,0,0,0.1)");
 }
 
 // Set width to auto for default container
 // We then reset it for fixed navbars in the #gridSystem mixin
 .navbar .container {
   width: auto;
 }
 
 // Override the default collapsed state
 .nav-collapse.collapse {
   height: auto;
 }
 
 
 // Brand, links, text, and buttons
 .navbar {
   color: @navbarText;
   // Hover and active states
   .brand:hover {
     text-decoration: none;
   }
   // Website or project name
   .brand {
     float: left;
     display: block;
     // Vertically center the text given @navbarHeight
     @elementHeight: 20pt;
     padding: ((@navbarHeight - @elementHeight) / 2) 20pt ((@navbarHeight - @elementHeight) / 2 + 2);
     margin-left: -20pt; // negative indent to left-align the text down the page
     font-size: 20pt;
     font-weight: 200;
     line-height: 1;
     color: lighten(@navbarBrandColor, 35%);
     text-shadow: 1pt 1pt 1pt hsla(0,0%,0%,1);
     font-weight: 700;
     letter-spacing: 1pt;
   }
   // Plain text in topbar
   .navbar-text {
     margin-bottom: 0;
     line-height: @navbarHeight;
   }
   // Janky solution for now to account for links outside the .nav
   .navbar-link {
     color: @navbarLinkColor;
     &:hover {
       color: @navbarLinkColorHover;
     }
   }
   // Buttons in navbar
   .btn,
   .btn-group {
     .navbarVerticalAlign(30pt); // Vertically center in navbar
   }
   .btn-group .btn {
     margin: 0; // then undo the margin here so we don't accidentally double it
   }
 }
 
 // Navbar forms
 .navbar-form {
   margin-bottom: 0; // remove default bottom margin
   .clearfix();
   input,
   select,
   .radio,
   .checkbox {
     .navbarVerticalAlign(30pt); // Vertically center in navbar
   }
   input,
   select {
     display: inline-block;
     margin-bottom: 0;
   }
   input[type="image"],
   input[type="checkbox"],
   input[type="radio"] {
     margin-top: 3pt;
   }
   .input-append,
   .input-prepend {
     margin-top: 6pt;
     white-space: nowrap; // preven two  items from separating within a .navbar-form that has .pull-left
     input {
       margin-top: 0; // remove the margin on top since it's on the parent
     }
   }
 }
 
 // Navbar search
 .navbar-search {
   position: relative;
   float: left;
   .navbarVerticalAlign(28pt); // Vertically center in navbar
   margin-bottom: 0;
   .search-query {
     padding: 4pt 9pt;
     #font > .sans-serif(13pt, normal, 1);
     color: @white;
     background-color: @navbarSearchBackground;
     border: 1pt solid @navbarSearchBorder;
     .box-shadow(~"inset 0 1pt 2pt rgba(0,0,0,.1), 0 1pt 0pt rgba(255,255,255,.15)");
     .transition(none);
 
     // Placeholder text gets special styles; can't be a grouped selector
     &:-moz-placeholder {
       color: @navbarSearchPlaceholderColor;
     }
     &::-webkit-input-placeholder {
       color: @navbarSearchPlaceholderColor;
     }
 
     // Focus states (we use .focused since IE7-8 and down doesn't support :focus)
     &:focus,
     &.focused {
       padding: 5pt 10pt;
       color: @grayDark;
       text-shadow: 0 1pt 0 @white;
       background-color: @navbarSearchBackgroundFocus;
       border: 0;
       .box-shadow(0 0 3pt rgba(0,0,0,.15));
       outline: 0;
     }
   }
 }
 
 
 
 // FIXED NAVBAR
 // ------------
 
 // Shared (top/bottom) styles
 .navbar-fixed-top,
 .navbar-fixed-bottom {
   position: fixed;
   right: 0;
   left: 0;
   z-index: @zindexFixedNavbar;
   margin-bottom: 0; // remove 18pt margin for static navbar
 }
 .navbar-fixed-top .navbar-inner,
 .navbar-fixed-bottom .navbar-inner {
   padding-left:  0;
   padding-right: 0;
   .border-radius(0);
 }
 
 .navbar-fixed-top .container,
 .navbar-fixed-bottom .container {
   #grid > .core > .span(@gridColumns);
 }
 
 // Fixed to top
 .navbar-fixed-top {
   top: 0;
 }
 
 // Fixed to bottom
 .navbar-fixed-bottom {
   bottom: 0;
 }
 
 
 
 // NAVIGATION
 // ----------
 
 .navbar .nav {
   position: relative;
   left: 0;
   display: block;
   float: left;
   margin: 0 10pt 0 0;
 }
 .navbar .nav.pull-right {
   float: right; // redeclare due to specificity
 }
 .navbar .nav > li {
   display: block;
   float: left;
 }
 
 // Links
 .navbar .nav > li > a {
   float: none;
   // Vertically center the text given @navbarHeight
   @elementHeight: 20pt;
   padding: ((@navbarHeight - @elementHeight) / 2) 10pt ((@navbarHeight - @elementHeight) / 2 + 1);
   line-height: 19pt;
   color: @navbarLinkColor;
   text-decoration: none;
   font-weight:700;
 }
 // Buttons
 .navbar .btn {
   display: inline-block;
   padding: 4pt 10pt 4pt;
   // Vertically center the button given @navbarHeight
   @elementHeight: 28pt;
   margin: ((@navbarHeight - @elementHeight) / 2 - 1) 5pt ((@navbarHeight - @elementHeight) / 2);
   line-height: @baseLineHeight;
 }
 .navbar .btn-group {
   margin: 0;
   // Vertically center the button given @navbarHeight
   @elementHeight: 28pt;
   padding: ((@navbarHeight - @elementHeight) / 2 - 1) 5pt ((@navbarHeight - @elementHeight) / 2);
 }
 // Hover
 .navbar .nav > li > a:hover {
   color: @navbarLinkColorHover;
   text-decoration: none;
   background: transparent;
 }
 
 // Active nav items
 .navbar .nav .active > a,
 .navbar .nav .active > a:hover {
   color: @navbarLinkColorActive;
   text-decoration: none;
 }
 
 // Dividers (basically a vertical hr)
 .navbar .divider-vertical {
   height: @navbarHeight;
   width: 1pt;
   margin: 0 9pt;
   overflow: hidden;
   background-color: @navbarBackground;
   border-right: 1pt solid @navbarBackgroundHighlight;
 }
 
 // Secondary (floated right) nav in topbar
 .navbar .nav.pull-right {
   margin-left: 10pt;
   margin-right: 0;
 }
 
 // Navbar button for toggling navbar items in responsive layouts
 // These definitions need to come after '.navbar .btn'
 .navbar .btn-navbar {
   display: none;
   float: right;
   padding: 7pt 10pt;
   margin-left: 5pt;
   margin-right: 5pt;
   .buttonBackground(@navbarBackgroundHighlight, @navbarBackground);
   .box-shadow(~"inset 0 1pt 0 rgba(255,255,255,.1), 0 1pt 0 rgba(255,255,255,.075)");
 }
 .navbar .btn-navbar .icon-bar {
   display: block;
   width: 18pt;
   height: 2pt;
   background-color: #f5f5f5;
   .border-radius(1pt);
   .box-shadow(0 1pt 0 rgba(0,0,0,.25));
 }
 .btn-navbar .icon-bar + .icon-bar {
   margin-top: 3pt;
 }
 
 
 // Dropdown menus
 // --------------
 
 // Menu position and menu carets
 .navbar .dropdown-menu {
   &:before {
     content: '';
     display: inline-block;
     border-left:   7pt solid transparent;
     border-right:  7pt solid transparent;
     border-bottom: 7pt solid #ccc;
     border-bottom-color: @dropdownBorder;
     position: absolute;
     top: -7pt;
     left: 9pt;
   }
   &:after {
     content: '';
     display: inline-block;
     border-left:   6pt solid transparent;
     border-right:  6pt solid transparent;
     border-bottom: 6pt solid @dropdownBackground;
     position: absolute;
     top: -6pt;
     left: 10pt;
   }
 }
 // Menu position and menu caret support for dropups via extra dropup class
 .navbar-fixed-bottom .dropdown-menu {
   &:before {
     border-top: 7pt solid #ccc;
     border-top-color: @dropdownBorder;
     border-bottom: 0;
     bottom: -7pt;
     top: auto;
   }
   &:after {
     border-top: 6pt solid @dropdownBackground;
     border-bottom: 0;
     bottom: -6pt;
     top: auto;
   }
 }
 // Dropdown toggle caret
 .navbar .nav li.dropdown .dropdown-toggle .caret,
 .navbar .nav li.dropdown.open .caret {
   border-top-color: @gray;
   border-bottom-color: @grayLight;
 }
 .navbar .nav li.dropdown.active .caret {
   .opacity(100);
 }
 
 // Remove background color from open dropdown
 .navbar .nav li.dropdown.open > .dropdown-toggle,
 .navbar .nav li.dropdown.active > .dropdown-toggle,
 .navbar .nav li.dropdown.open.active > .dropdown-toggle {
   background-color: transparent;
 }
 
 // Dropdown link on hover
 .navbar .nav li.dropdown.active > .dropdown-toggle:hover {
   color: @white;
 }
 
 // Right aligned menus need alt position
 // TODO: rejigger this at some point to simplify the selectors
 .navbar .pull-right .dropdown-menu,
 .navbar .dropdown-menu.pull-right {
   left: auto;
   right: 0;
   &:before {
     left: auto;
     right: 12pt;
   }
   &:after {
     left: auto;
     right: 13pt;
   }
 }