Torq/css/navbar.css
2025-04-11 16:38:52 -05:00

264 lines
5.4 KiB
CSS

/*
* Simplified Modern Navbar
* Flattened structure using flexbox
*/
/* Base navbar */
.navbar {
display: flex;
flex-wrap: wrap;
align-items: center;
padding: 0 20px;
min-height: var(--navbar-height);
margin-bottom: var(--base-line-height);
background-color: var(--navbar-background);
background-image: linear-gradient(to bottom, var(--navbar-background-highlight), var(--navbar-background));
border: 1px solid var(--navbar-border);
border-radius: var(--base-border-radius);
box-shadow: 0 1px 4px rgba(0,0,0,.065);
}
/* Brand */
.navbar-brand {
display: flex;
align-items: center;
height: var(--navbar-height);
padding: 0 20px;
margin-left: -20px;
margin-right: 20px;
font-size: 20px;
font-weight: 200;
color: var(--navbar-brand-color);
text-shadow: 0 1px 0 var(--navbar-background-highlight);
text-decoration: none;
}
.navbar-brand:hover,
.navbar-brand:focus {
text-decoration: none;
}
/* Toggle button for responsive */
.navbar-toggle {
display: none;
padding: 7px 10px;
margin-left: auto;
margin-right: 5px;
color: #fff;
background-color: #ededed;
background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
border: 1px solid #ccc;
border-radius: var(--base-border-radius);
box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
}
.navbar-toggle .icon-bar {
display: block;
width: 18px;
height: 2px;
background-color: #888;
border-radius: 1px;
box-shadow: 0 1px 0 rgba(0,0,0,.25);
}
.navbar-toggle .icon-bar + .icon-bar {
margin-top: 3px;
}
/* Collapsible navigation */
.navbar-collapse {
display: flex;
flex-grow: 1;
}
/* Nav lists */
.navbar-nav {
display: flex;
padding-left: 0;
margin: 0 10px 0 0;
list-style: none;
}
.navbar-nav > li > a {
display: flex;
align-items: center;
height: var(--navbar-height);
padding: 0 15px;
color: var(--navbar-link-color);
text-decoration: none;
text-shadow: 0 1px 0 var(--navbar-background-highlight);
}
.navbar-nav > li > a:focus,
.navbar-nav > li > a:hover {
background-color: var(--navbar-link-background-hover);
color: var(--navbar-link-color-hover);
text-decoration: none;
}
/* Active items */
.navbar-nav > .active > a,
.navbar-nav > .active > a:hover,
.navbar-nav > .active > a:focus {
color: var(--navbar-link-color-active);
text-decoration: none;
background-color: var(--navbar-link-background-active);
box-shadow: inset 0 3px 8px rgba(0,0,0,.125);
}
/* Right aligned nav */
.navbar-right {
margin-left: auto;
margin-right: 0;
}
/* Dropdown menus */
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: var(--zindex-dropdown);
display: none;
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
background-color: var(--dropdown-background);
border: 1px solid var(--dropdown-border);
border-radius: var(--base-border-radius);
box-shadow: 0 5px 10px rgba(0,0,0,.2);
}
.dropdown-menu:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-bottom-color: var(--dropdown-border);
position: absolute;
top: -7px;
left: 9px;
}
.dropdown-menu:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid var(--dropdown-background);
position: absolute;
top: -6px;
left: 10px;
}
.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
color: var(--dropdown-link-color);
text-decoration: none;
white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
color: var(--dropdown-link-color-hover);
background-color: var(--dropdown-link-background-hover);
}
.dropdown.open > .dropdown-menu {
display: block;
}
/* Dividers */
.divider-vertical {
height: var(--navbar-height);
margin: 0 9px;
border-left: 1px solid var(--navbar-background);
border-right: 1px solid var(--navbar-background-highlight);
}
.dropdown-menu .divider {
height: 1px;
margin: 9px 1px;
overflow: hidden;
background-color: var(--dropdown-divider-top);
border-bottom: 1px solid var(--dropdown-divider-bottom);
}
/* Inverted navbar */
.navbar-inverse {
background-color: var(--navbar-inverse-background);
background-image: linear-gradient(to bottom, var(--navbar-inverse-background-highlight), var(--navbar-inverse-background));
border-color: var(--navbar-inverse-border);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
color: var(--navbar-inverse-link-color);
text-shadow: 0 -1px 0 rgba(0,0,0,.25);
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus,
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
color: var(--navbar-inverse-link-color-hover);
}
/* Responsive */
@media (max-width: 979px) {
.navbar-toggle {
display: block;
}
.navbar-collapse {
display: none;
width: 100%;
order: 1;
}
.navbar-collapse.show {
display: flex;
flex-direction: column;
}
.navbar-nav {
flex-direction: column;
width: 100%;
margin: 0;
}
.navbar-nav > li > a {
height: auto;
padding: 9px 15px;
margin-bottom: 2px;
border-radius: 3px;
}
.navbar-right {
margin-left: 0;
}
.dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
box-shadow: none;
}
.dropdown-menu:before,
.dropdown-menu:after {
display: none;
}
}
@media (min-width: 980px) {
.navbar-collapse {
display: flex !important;
}
}