web-apps/vendor/bootstrap/less/_navbar.less
2020-05-21 19:29:40 +03:00

464 lines
13 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Contents
//
// Navbar
// Navbar brand
// Navbar nav
// Navbar text
// Navbar divider
// Responsive navbar
// Navbar position
// Navbar themes
// Navbar
//
// Provide a static navbar from which we expand to create full-width, fixed, and
// other navbar variations.
// LESS PORT: Because of the way `:extend()` works in Less (and the workaround were using to
// emulate Sass placeholder selectors) we need to include the selectors that extend the
// placeholders at the root. Then `&:extend(<placeholder> all)` will attach the selectors to every
// instance of the placeholder.
.container,
.container-fluid {
&:extend(\%container-flex-properties all);
}
.navbar {
position: relative;
display: flex;
flex-wrap: wrap; // allow us to do the line break for collapsing content
align-items: center;
justify-content: space-between; // space out brand from logo
padding: @navbar-padding-y @navbar-padding-x;
// Because flex properties aren't inherited, we need to redeclare these first
// few properties so that content nested within behave properly.
// LESS PORT: Unfortunately we have to use an actual selector here in order to be able to
// `:extend()` it later. This means that the selector is output in the compiled CSS, creating a
// small disparity between the Less and Sass versions.
// LESS PORT: The `-@{breakpoint}` suffix is omitted from the selector here since its not needed
// with the `:extend()` workaround were using.
\%container-flex-properties {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
// LESS PORT: Because of the way `:extend()` works in Less (and the workaround were using to
// emulate Sass placeholder selectors) we include this selector at the root, instead. (We also
// omit the `-@{breakpoint}` suffix since its not needed.)
// .container,
// .container-fluid {
// &:extend(\%container-flex-properties);
// }
// LESS PORT: Since we `&:extend(.container-fluid all)` in `_grid.less` we dont need to output
// the container-max-width selectors here. Using the `all` means the container-max-width
// selectors will already be attached to all instances of `.container-fluid`.
// each(@container-max-widths, #(@container-max-width, @breakpoint) {
// // LESS PORT: A variable is required here to do the selector interpolation, since an
// // expression cannot be interpolated like in the Sass version.
// @infix: breakpoint-infix(@breakpoint, @container-max-widths);
// // LESS PORT: The Sass version actually uses `> .container` here but that doesnt seem to
// // match the output CSS, so were omitting it.
// .container@{infix} {
// &:extend(.navbar \%container-flex-properties);
// }
// });
}
// Navbar brand
//
// Used for brand, project, or site names.
.navbar-brand {
display: inline-block;
padding-top: @navbar-brand-padding-y;
padding-bottom: @navbar-brand-padding-y;
margin-right: @navbar-padding-x;
#font-size(@navbar-brand-font-size);
line-height: inherit;
white-space: nowrap;
#hover-focus({
text-decoration: none;
});
}
// Navbar nav
//
// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
.navbar-nav {
display: flex;
flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
padding-left: 0;
margin-bottom: 0;
list-style: none;
.nav-link {
padding-right: 0;
padding-left: 0;
}
.dropdown-menu {
position: static;
float: none;
}
}
// Navbar text
//
//
.navbar-text {
display: inline-block;
padding-top: @nav-link-padding-y;
padding-bottom: @nav-link-padding-y;
}
// Responsive navbar
//
// Custom styles for responsive collapsing and toggling of navbar contents.
// Powered by the collapse Bootstrap JavaScript plugin.
// When collapsed, prevent the toggleable navbar contents from appearing in
// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
// on the `.navbar` parent.
.navbar-collapse {
flex-basis: 100%;
flex-grow: 1;
// For always expanded or extra full navbars, ensure content aligns itself
// properly vertically. Can be easily overridden with flex utilities.
align-items: center;
}
// Button for toggling the navbar when in its collapsed state
.navbar-toggler {
padding: @navbar-toggler-padding-y @navbar-toggler-padding-x;
#font-size(@navbar-toggler-font-size);
line-height: 1;
background-color: transparent; // remove default button style
border: @border-width solid transparent; // remove default button style
#border-radius(@navbar-toggler-border-radius);
#hover-focus({
text-decoration: none;
});
}
// Keep as a separate element so folks can easily override it with another icon
// or image file as needed.
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
height: 1.5em;
vertical-align: middle;
content: "";
background: no-repeat center center;
background-size: 100% 100%;
}
// Generate series of `.navbar-expand-*` responsive classes for configuring
// where your navbar collapses.
//.navbar-expand {
// @each $breakpoint in map-keys($grid-breakpoints) {
// $next: breakpoint-next($breakpoint, $grid-breakpoints);
// $infix: breakpoint-infix($next, $grid-breakpoints);
//
// &#{$infix} {
// @include media-breakpoint-down($breakpoint) {
// %container-navbar-expand-#{$breakpoint} {
// padding-right: 0;
// padding-left: 0;
// }
//
// > .container,
// > .container-fluid {
// @extend %container-navbar-expand-#{$breakpoint};
// }
//
// @each $size, $container-max-width in $container-max-widths {
// > .container#{breakpoint-infix($size, $container-max-widths)} {
// @extend %container-navbar-expand-#{$breakpoint};
// }
// }
// }
//
// @include media-breakpoint-up($next) {
// flex-flow: row nowrap;
// justify-content: flex-start;
//
// .navbar-nav {
// flex-direction: row;
//
// .dropdown-menu {
// position: absolute;
// }
//
// .nav-link {
// padding-right: $navbar-nav-link-padding-x;
// padding-left: $navbar-nav-link-padding-x;
// }
// }
//
// // For nesting containers, have to redeclare for alignment purposes
// %container-nesting-#{$breakpoint} {
// flex-wrap: nowrap;
// }
//
// > .container,
// > .container-fluid {
// @extend %container-nesting-#{$breakpoint};
// }
//
// @each $size, $container-max-width in $container-max-widths {
// > .container#{breakpoint-infix($size, $container-max-widths)} {
// @extend %container-nesting-#{$breakpoint};
// }
// }
//
// .navbar-collapse {
// display: flex !important; // stylelint-disable-line declaration-no-important
//
// // Changes flex-bases to auto because of an IE10 bug
// flex-basis: auto;
// }
//
// .navbar-toggler {
// display: none;
// }
// }
// }
// }
//}
// LESS PORT: Because of the way `:extend()` works in Less (and the workaround were using to
// emulate Sass placeholder selectors) we need to include the selectors that extend the
// placeholders at the root. Then `&:extend(<placeholder> all)` will attach the selectors to every
// instance of the placeholder.
> .container,
> .container-fluid {
&:extend(\%container-navbar-expand all);
&:extend(\%container-nesting all);
}
each(map-keys(@grid-breakpoints), #(@breakpoint) {
.navbar-expand {
@next: breakpoint-next(@breakpoint, @grid-breakpoints);
@infix: breakpoint-infix(@next, @grid-breakpoints);
&@{infix} {
#media-breakpoint-down(@breakpoint, {
// LESS PORT: Unfortunately we have to use an actual selector here in order to be able
// to `:extend()` it later. This means that the selector is output in the compiled CSS,
// creating a small disparity between the Less and Sass versions.
// LESS PORT: The `-@{breakpoint}` suffix is omitted from the selector here since its
// not needed with the `:extend()` workaround were using.
> \%container-navbar-expand {
padding-right: 0;
padding-left: 0;
}
// LESS PORT: Because of the way `:extend()` works in Less (and the workaround were
// using to emulate Sass placeholder selectors) we include this selector at the root,
// instead. (We also omit the `-@{breakpoint}` suffix since its not needed.)
// > .container,
// > .container-fluid {
// &:extend(\%container-navbar-expand-@{breakpoint});
// }
// LESS PORT: Since we `&:extend(.container-fluid all)` in `_grid.less` we dont need to
// output the container-max-width selectors here. Using the `all` means the
// container-max-width selectors will already be attached to all instances of
// `.container-fluid`.
// each(@container-max-widths, #(@container-max-width, @size) {
// // LESS PORT: A variable is required here to do the selector interpolation, since an
// // expression cannot be interpolated like in the Sass version.
// @infix: breakpoint-infix(@size, @container-max-widths);
// > .container@{infix} {
// &:extend(\%container-navbar-expand-@{breakpoint});
// }
// });
});
#media-breakpoint-up(@next, {
flex-flow: row nowrap;
justify-content: flex-start;
.navbar-nav {
flex-direction: row;
.dropdown-menu {
position: absolute;
}
.nav-link {
padding-right: @navbar-nav-link-padding-x;
padding-left: @navbar-nav-link-padding-x;
}
}
// For nesting containers, have to redeclare for alignment purposes
// LESS PORT: Unfortunately we have to use an actual selector here in order to be able
// to `:extend()` it later. This means that the selector is output in the compiled CSS,
// creating a small disparity between the Less and Sass versions.
// LESS PORT: The `-@{breakpoint}` suffix is omitted from the selector here since its
// not needed with the `:extend()` workaround were using. We also have to prefix with
// a `>` so that the immediate decendant selector will be included when we `:extend()`.
> \%container-nesting {
flex-wrap: nowrap;
}
// LESS PORT: The `-@{breakpoint}` suffix is omitted from the since the
// \%container-nesting-@{breakpoint} {
// flex-wrap: nowrap;
// }
// LESS PORT: Because of the way `:extend()` works in Less (and the workaround were
// using to emulate Sass placeholder selectors) we include this selector at the root,
// instead. (We also omit the `-@{breakpoint}` suffix since its not needed.)
// > .container,
// > .container-fluid {
// &:extend(\%container-nesting-@{breakpoint});
// }
// LESS PORT: Since we `&:extend(.container-fluid all)` in `_grid.less` we dont need to
// output the container-max-width selectors here. Using the `all` means the
// container-max-width selectors will already be attached to all instances of
// `.container-fluid`.
// each(@container-max-widths, #(@container-max-width, @size) {
// // LESS PORT: A variable is required here to do the selector interpolation, since an
// // expression cannot be interpolated like in the Sass version.
// @infix: breakpoint-infix(@size, @container-max-widths);
// > .container@{infix} {
// &:extend(\%container-nesting-@{breakpoint});
// }
// });
.navbar-collapse {
display: flex !important;
// Changes flex-bases to auto because of an IE10 bug
flex-basis: auto;
}
.navbar-toggler {
display: none;
}
});
}
}
});
// Navbar themes
//
// Styles for switching between navbars with light or dark background.
// Dark links against a light background
.navbar-light {
.navbar-brand {
color: @navbar-light-brand-color;
#hover-focus({
color: @navbar-light-brand-hover-color;
});
}
.navbar-nav {
.nav-link {
color: @navbar-light-color;
#hover-focus({
color: @navbar-light-hover-color;
});
&.disabled {
color: @navbar-light-disabled-color;
}
}
.show > .nav-link,
.active > .nav-link,
.nav-link.show,
.nav-link.active {
color: @navbar-light-active-color;
}
}
.navbar-toggler {
color: @navbar-light-color;
border-color: @navbar-light-toggler-border-color;
}
.navbar-toggler-icon {
background-image: escape-svg(@navbar-light-toggler-icon-bg);
}
.navbar-text {
color: @navbar-light-color;
a {
color: @navbar-light-active-color;
#hover-focus({
color: @navbar-light-active-color;
});
}
}
}
// White links against a dark background
.navbar-dark {
.navbar-brand {
color: @navbar-dark-brand-color;
#hover-focus({
color: @navbar-dark-brand-hover-color;
});
}
.navbar-nav {
.nav-link {
color: @navbar-dark-color;
#hover-focus({
color: @navbar-dark-hover-color;
});
&.disabled {
color: @navbar-dark-disabled-color;
}
}
.show > .nav-link,
.active > .nav-link,
.nav-link.show,
.nav-link.active {
color: @navbar-dark-active-color;
}
}
.navbar-toggler {
color: @navbar-dark-color;
border-color: @navbar-dark-toggler-border-color;
}
.navbar-toggler-icon {
background-image: escape-svg(@navbar-dark-toggler-icon-bg);
}
.navbar-text {
color: @navbar-dark-color;
a {
color: @navbar-dark-active-color;
#hover-focus({
color: @navbar-dark-active-color;
});
}
}
}