| // |
| // Navbars |
| // -------------------------------------------------- |
| |
| |
| // Wrapper and base class |
| // |
| // Provide a static navbar from which we expand to create full-width, fixed, and |
| // other navbar variations. |
| |
| .navbar { |
| position: relative; |
| min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode) |
| margin-bottom: $navbar-margin-bottom; |
| border: 1px solid transparent; |
| |
| // Prevent floats from breaking the navbar |
| @include clearfix; |
| |
| @media (min-width: $grid-float-breakpoint) { |
| border-radius: $navbar-border-radius; |
| } |
| } |
| |
| |
| // Navbar heading |
| // |
| // Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy |
| // styling of responsive aspects. |
| |
| .navbar-header { |
| @include clearfix; |
| |
| @media (min-width: $grid-float-breakpoint) { |
| float: left; |
| } |
| } |
| |
| |
| // Navbar collapse (body) |
| // |
| // Group your navbar content into this for easy collapsing and expanding across |
| // various device sizes. By default, this content is collapsed when <768px, but |
| // will expand past that for a horizontal display. |
| // |
| // To start (on mobile devices) the navbar links, forms, and buttons are stacked |
| // vertically and include a `max-height` to overflow in case you have too much |
| // content for the user's viewport. |
| |
| .navbar-collapse { |
| overflow-x: visible; |
| padding-right: $navbar-padding-horizontal; |
| padding-left: $navbar-padding-horizontal; |
| border-top: 1px solid transparent; |
| box-shadow: inset 0 1px 0 rgba(255,255,255,.1); |
| @include clearfix; |
| -webkit-overflow-scrolling: touch; |
| |
| &.in { |
| overflow-y: auto; |
| } |
| |
| @media (min-width: $grid-float-breakpoint) { |
| width: auto; |
| border-top: 0; |
| box-shadow: none; |
| |
| &.collapse { |
| display: block !important; |
| height: auto !important; |
| padding-bottom: 0; // Override default setting |
| overflow: visible !important; |
| } |
| |
| &.in { |
| overflow-y: visible; |
| } |
| |
| // Undo the collapse side padding for navbars with containers to ensure |
| // alignment of right-aligned contents. |
| .navbar-fixed-top &, |
| .navbar-static-top &, |
| .navbar-fixed-bottom & { |
| padding-left: 0; |
| padding-right: 0; |
| } |
| } |
| } |
| |
| .navbar-fixed-top, |
| .navbar-fixed-bottom { |
| .navbar-collapse { |
| max-height: $navbar-collapse-max-height; |
| |
| @media (max-device-width: $screen-xs-min) and (orientation: landscape) { |
| max-height: 200px; |
| } |
| } |
| } |
| |
| |
| // Both navbar header and collapse |
| // |
| // When a container is present, change the behavior of the header and collapse. |
| |
| .container, |
| .container-fluid { |
| > .navbar-header, |
| > .navbar-collapse { |
| margin-right: -$navbar-padding-horizontal; |
| margin-left: -$navbar-padding-horizontal; |
| |
| @media (min-width: $grid-float-breakpoint) { |
| margin-right: 0; |
| margin-left: 0; |
| } |
| } |
| } |
| |
| |
| // |
| // Navbar alignment options |
| // |
| // Display the navbar across the entirety of the page or fixed it to the top or |
| // bottom of the page. |
| |
| // Static top (unfixed, but 100% wide) navbar |
| .navbar-static-top { |
| z-index: $zindex-navbar; |
| border-width: 0 0 1px; |
| |
| @media (min-width: $grid-float-breakpoint) { |
| border-radius: 0; |
| } |
| } |
| |
| // Fix the top/bottom navbars when screen real estate supports it |
| .navbar-fixed-top, |
| .navbar-fixed-bottom { |
| position: fixed; |
| right: 0; |
| left: 0; |
| z-index: $zindex-navbar-fixed; |
| |
| // Undo the rounded corners |
| @media (min-width: $grid-float-breakpoint) { |
| border-radius: 0; |
| } |
| } |
| .navbar-fixed-top { |
| top: 0; |
| border-width: 0 0 1px; |
| } |
| .navbar-fixed-bottom { |
| bottom: 0; |
| margin-bottom: 0; // override .navbar defaults |
| border-width: 1px 0 0; |
| } |
| |
| |
| // Brand/project name |
| |
| .navbar-brand { |
| float: left; |
| padding: $navbar-padding-vertical $navbar-padding-horizontal; |
| font-size: $font-size-large; |
| line-height: $line-height-computed; |
| height: $navbar-height; |
| |
| &:hover, |
| &:focus { |
| text-decoration: none; |
| } |
| |
| > img { |
| display: block; |
| } |
| |
| @media (min-width: $grid-float-breakpoint) { |
| .navbar > .container &, |
| .navbar > .container-fluid & { |
| margin-left: -$navbar-padding-horizontal; |
| } |
| } |
| } |
| |
| |
| // Navbar toggle |
| // |
| // Custom button for toggling the `.navbar-collapse`, powered by the collapse |
| // JavaScript plugin. |
| |
| .navbar-toggle { |
| position: relative; |
| float: right; |
| margin-right: $navbar-padding-horizontal; |
| padding: 9px 10px; |
| @include navbar-vertical-align(34px); |
| background-color: transparent; |
| background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 |
| border: 1px solid transparent; |
| border-radius: $border-radius-base; |
| |
| // We remove the `outline` here, but later compensate by attaching `:hover` |
| // styles to `:focus`. |
| &:focus { |
| outline: 0; |
| } |
| |
| // Bars |
| .icon-bar { |
| display: block; |
| width: 22px; |
| height: 2px; |
| border-radius: 1px; |
| } |
| .icon-bar + .icon-bar { |
| margin-top: 4px; |
| } |
| |
| @media (min-width: $grid-float-breakpoint) { |
| display: none; |
| } |
| } |
| |
| |
| // Navbar nav links |
| // |
| // Builds on top of the `.nav` components with its own modifier class to make |
| // the nav the full height of the horizontal nav (above 768px). |
| |
| .navbar-nav { |
| margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal); |
| |
| > li > a { |
| padding-top: 10px; |
| padding-bottom: 10px; |
| line-height: $line-height-computed; |
| } |
| |
| @media (max-width: $grid-float-breakpoint-max) { |
| // Dropdowns get custom display when collapsed |
| .open .dropdown-menu { |
| position: static; |
| float: none; |
| width: auto; |
| margin-top: 0; |
| background-color: transparent; |
| border: 0; |
| box-shadow: none; |
| > li > a, |
| .dropdown-header { |
| padding: 5px 15px 5px 25px; |
| } |
| > li > a { |
| line-height: $line-height-computed; |
| &:hover, |
| &:focus { |
| background-image: none; |
| } |
| } |
| } |
| } |
| |
| // Uncollapse the nav |
| @media (min-width: $grid-float-breakpoint) { |
| float: left; |
| margin: 0; |
| |
| > li { |
| float: left; |
| > a { |
| padding-top: $navbar-padding-vertical; |
| padding-bottom: $navbar-padding-vertical; |
| } |
| } |
| } |
| } |
| |
| |
| // Navbar form |
| // |
| // Extension of the `.form-inline` with some extra flavor for optimum display in |
| // our navbars. |
| |
| .navbar-form { |
| margin-left: -$navbar-padding-horizontal; |
| margin-right: -$navbar-padding-horizontal; |
| padding: 10px $navbar-padding-horizontal; |
| border-top: 1px solid transparent; |
| border-bottom: 1px solid transparent; |
| $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); |
| @include box-shadow($shadow); |
| |
| // Mixin behavior for optimum display |
| @include form-inline; |
| |
| .form-group { |
| @media (max-width: $grid-float-breakpoint-max) { |
| margin-bottom: 5px; |
| |
| &:last-child { |
| margin-bottom: 0; |
| } |
| } |
| } |
| |
| // Vertically center in expanded, horizontal navbar |
| @include navbar-vertical-align($input-height-base); |
| |
| // Undo 100% width for pull classes |
| @media (min-width: $grid-float-breakpoint) { |
| width: auto; |
| border: 0; |
| margin-left: 0; |
| margin-right: 0; |
| padding-top: 0; |
| padding-bottom: 0; |
| @include box-shadow(none); |
| } |
| } |
| |
| |
| // Dropdown menus |
| |
| // Menu position and menu carets |
| .navbar-nav > li > .dropdown-menu { |
| margin-top: 0; |
| @include border-top-radius(0); |
| } |
| // Menu position and menu caret support for dropups via extra dropup class |
| .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { |
| margin-bottom: 0; |
| @include border-top-radius($navbar-border-radius); |
| @include border-bottom-radius(0); |
| } |
| |
| |
| // Buttons in navbars |
| // |
| // Vertically center a button within a navbar (when *not* in a form). |
| |
| .navbar-btn { |
| @include navbar-vertical-align($input-height-base); |
| |
| &.btn-sm { |
| @include navbar-vertical-align($input-height-small); |
| } |
| &.btn-xs { |
| @include navbar-vertical-align(22); |
| } |
| } |
| |
| |
| // Text in navbars |
| // |
| // Add a class to make any element properly align itself vertically within the navbars. |
| |
| .navbar-text { |
| @include navbar-vertical-align($line-height-computed); |
| |
| @media (min-width: $grid-float-breakpoint) { |
| float: left; |
| margin-left: $navbar-padding-horizontal; |
| margin-right: $navbar-padding-horizontal; |
| } |
| } |
| |
| |
| // Component alignment |
| // |
| // Repurpose the pull utilities as their own navbar utilities to avoid specificity |
| // issues with parents and chaining. Only do this when the navbar is uncollapsed |
| // though so that navbar contents properly stack and align in mobile. |
| // |
| // Declared after the navbar components to ensure more specificity on the margins. |
| |
| @media (min-width: $grid-float-breakpoint) { |
| .navbar-left { |
| float: left !important; |
| } |
| .navbar-right { |
| float: right !important; |
| margin-right: -$navbar-padding-horizontal; |
| |
| ~ .navbar-right { |
| margin-right: 0; |
| } |
| } |
| } |
| |
| |
| // Alternate navbars |
| // -------------------------------------------------- |
| |
| // Default navbar |
| .navbar-default { |
| background-color: $navbar-default-bg; |
| border-color: $navbar-default-border; |
| |
| .navbar-brand { |
| color: $navbar-default-brand-color; |
| &:hover, |
| &:focus { |
| color: $navbar-default-brand-hover-color; |
| background-color: $navbar-default-brand-hover-bg; |
| } |
| } |
| |
| .navbar-text { |
| color: $navbar-default-color; |
| } |
| |
| .navbar-nav { |
| > li > a { |
| color: $navbar-default-link-color; |
| |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-hover-color; |
| background-color: $navbar-default-link-hover-bg; |
| } |
| } |
| > .active > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-active-color; |
| background-color: $navbar-default-link-active-bg; |
| } |
| } |
| > .disabled > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-disabled-color; |
| background-color: $navbar-default-link-disabled-bg; |
| } |
| } |
| } |
| |
| .navbar-toggle { |
| border-color: $navbar-default-toggle-border-color; |
| &:hover, |
| &:focus { |
| background-color: $navbar-default-toggle-hover-bg; |
| } |
| .icon-bar { |
| background-color: $navbar-default-toggle-icon-bar-bg; |
| } |
| } |
| |
| .navbar-collapse, |
| .navbar-form { |
| border-color: $navbar-default-border; |
| } |
| |
| // Dropdown menu items |
| .navbar-nav { |
| // Remove background color from open dropdown |
| > .open > a { |
| &, |
| &:hover, |
| &:focus { |
| background-color: $navbar-default-link-active-bg; |
| color: $navbar-default-link-active-color; |
| } |
| } |
| |
| @media (max-width: $grid-float-breakpoint-max) { |
| // Dropdowns get custom display when collapsed |
| .open .dropdown-menu { |
| > li > a { |
| color: $navbar-default-link-color; |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-hover-color; |
| background-color: $navbar-default-link-hover-bg; |
| } |
| } |
| > .active > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-active-color; |
| background-color: $navbar-default-link-active-bg; |
| } |
| } |
| > .disabled > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-disabled-color; |
| background-color: $navbar-default-link-disabled-bg; |
| } |
| } |
| } |
| } |
| } |
| |
| |
| // Links in navbars |
| // |
| // Add a class to ensure links outside the navbar nav are colored correctly. |
| |
| .navbar-link { |
| color: $navbar-default-link-color; |
| &:hover { |
| color: $navbar-default-link-hover-color; |
| } |
| } |
| |
| .btn-link { |
| color: $navbar-default-link-color; |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-hover-color; |
| } |
| &[disabled], |
| fieldset[disabled] & { |
| &:hover, |
| &:focus { |
| color: $navbar-default-link-disabled-color; |
| } |
| } |
| } |
| } |
| |
| // Inverse navbar |
| |
| .navbar-inverse { |
| background-color: $navbar-inverse-bg; |
| border-color: $navbar-inverse-border; |
| |
| .navbar-brand { |
| color: $navbar-inverse-brand-color; |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-brand-hover-color; |
| background-color: $navbar-inverse-brand-hover-bg; |
| } |
| } |
| |
| .navbar-text { |
| color: $navbar-inverse-color; |
| } |
| |
| .navbar-nav { |
| > li > a { |
| color: $navbar-inverse-link-color; |
| |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-hover-color; |
| background-color: $navbar-inverse-link-hover-bg; |
| } |
| } |
| > .active > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-active-color; |
| background-color: $navbar-inverse-link-active-bg; |
| } |
| } |
| > .disabled > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-disabled-color; |
| background-color: $navbar-inverse-link-disabled-bg; |
| } |
| } |
| } |
| |
| // Darken the responsive nav toggle |
| .navbar-toggle { |
| border-color: $navbar-inverse-toggle-border-color; |
| &:hover, |
| &:focus { |
| background-color: $navbar-inverse-toggle-hover-bg; |
| } |
| .icon-bar { |
| background-color: $navbar-inverse-toggle-icon-bar-bg; |
| } |
| } |
| |
| .navbar-collapse, |
| .navbar-form { |
| border-color: darken($navbar-inverse-bg, 7%); |
| } |
| |
| // Dropdowns |
| .navbar-nav { |
| > .open > a { |
| &, |
| &:hover, |
| &:focus { |
| background-color: $navbar-inverse-link-active-bg; |
| color: $navbar-inverse-link-active-color; |
| } |
| } |
| |
| @media (max-width: $grid-float-breakpoint-max) { |
| // Dropdowns get custom display |
| .open .dropdown-menu { |
| > .dropdown-header { |
| border-color: $navbar-inverse-border; |
| } |
| .divider { |
| background-color: $navbar-inverse-border; |
| } |
| > li > a { |
| color: $navbar-inverse-link-color; |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-hover-color; |
| background-color: $navbar-inverse-link-hover-bg; |
| } |
| } |
| > .active > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-active-color; |
| background-color: $navbar-inverse-link-active-bg; |
| } |
| } |
| > .disabled > a { |
| &, |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-disabled-color; |
| background-color: $navbar-inverse-link-disabled-bg; |
| } |
| } |
| } |
| } |
| } |
| |
| .navbar-link { |
| color: $navbar-inverse-link-color; |
| &:hover { |
| color: $navbar-inverse-link-hover-color; |
| } |
| } |
| |
| .btn-link { |
| color: $navbar-inverse-link-color; |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-hover-color; |
| } |
| &[disabled], |
| fieldset[disabled] & { |
| &:hover, |
| &:focus { |
| color: $navbar-inverse-link-disabled-color; |
| } |
| } |
| } |
| } |