framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
306 lines (295 loc) • 8.06 kB
text/less
/* === Navbar === */
@import url('./navbar-vars.less');
.navbars,
.navbar {
z-index: 500;
left: 0;
top: 0;
width: 100%;
}
.navbars {
position: absolute;
.navbar {
z-index: auto;
}
}
.navbar {
--f7-navbar-large-collapse-progress: 0;
position: relative;
backface-visibility: hidden;
box-sizing: border-box;
margin: 0;
// transform: translate3d(0,0,0);
height: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));
color: var(--f7-navbar-text-color, var(--f7-bars-text-color));
font-size: var(--f7-navbar-font-size);
&.stacked {
display: none;
}
b {
font-weight: 500;
}
a {
color: var(--f7-navbar-link-color, var(--f7-bars-link-color, var(--f7-theme-color)));
}
a.link {
display: flex;
justify-content: flex-start;
line-height: var(--f7-navbar-link-line-height, var(--f7-navbar-height));
height: var(--f7-navbar-link-height, var(--f7-navbar-height));
}
.title, .left, .right {
position: relative;
z-index: 10;
}
.title {
position: relative;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex-shrink: 10;
font-weight: var(--f7-navbar-title-font-weight);
display: inline-block;
line-height: var(--f7-navbar-title-line-height);
text-align: var(--f7-navbar-title-text-align);
font-size: var(--f7-navbar-title-font-size);
.ltr({
margin-left: var(--f7-navbar-title-margin-left);
margin-right: var(--f7-navbar-title-margin-left);
});
.rtl({
margin-right: var(--f7-navbar-title-margin-left);
margin-left: var(--f7-navbar-title-margin-left);
});
}
.subtitle {
display: block;
color: var(--f7-navbar-subtitle-text-color);
font-weight: normal;
font-size: var(--f7-navbar-subtitle-font-size);
line-height: var(--f7-navbar-subtitle-line-height);
text-align: var(--f7-navbar-subtitle-text-align);
}
.left, .right {
flex-shrink: 0;
display: flex;
justify-content: flex-start;
align-items: center;
// transform: translate3d(0,0,0);
}
.right:first-child {
position: absolute;
height: 100%;
}
&.no-hairline,
&.no-border,
.no-hairline,
.no-border {
.navbar-bg:after {
display: none ;
}
.title-large:after {
display: none ;
}
}
&.no-shadow,
.no-shadow {
.navbar-bg:before {
display: none ;
}
}
&.navbar-hidden,
.navbar-hidden & {
.navbar-bg:before {
opacity: 0 ;
}
}
}
.navbar-bg {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 0;
background: var(--f7-navbar-bg-color);
background-image: var(--f7-navbar-bg-image, var(--f7-bars-bg-image));
background-color: var(--f7-navbar-bg-color, var(--f7-bars-bg-color));
transition-property: transform;
.ios-translucent-bars(var(--f7-navbar-bg-color-rgb, var(--f7-bars-bg-color-rgb)));
&:after,
&:before {
backface-visibility: hidden;
}
.hairline(bottom, var(--f7-navbar-border-color, var(--f7-bars-border-color)));
.bar-shadow-bottom(var(--f7-navbar-shadow-image));
&:after {
z-index: 1;
}
}
:root {
@media (min-width: 768px) and (min-height: 600px) {
--f7-navbar-height: var(--f7-navbar-tablet-height);
}
}
// Transitions
.navbar-transitioning {
&,
& .left,
& .title,
& .right,
& .title-large-text,
& .navbar-bg,
& .subnavbar,
& .navbar-bg:before {
transition-duration: var(--f7-navbar-hide-show-transition-duration);
}
}
.navbar-page-transitioning {
transition-duration: var(--f7-page-swipeback-transition-duration) ;
.title-large-text,
.navbar-bg {
transition-duration: var(--f7-page-swipeback-transition-duration) ;
}
}
// Hidden
.navbar-hidden {
transform: translate3d(0, calc(-1 * var(--f7-navbar-height)), 0);
.navbar-inner {
pointer-events: none;
> .left,
> .title,
> .right {
opacity: 0 ;
}
}
.subnavbar {
pointer-events: auto;
}
}
.navbar-hidden-statusbar {
transform: translate3d(0, calc(-1 * var(--f7-navbar-height) - var(--f7-safe-area-top)), 0);
}
.navbar-large-hidden .navbar-large {
--f7-navbar-large-collapse-progress: 1;
}
.navbar-inner {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
box-sizing: border-box;
padding: var(--f7-safe-area-top) calc(var(--f7-navbar-inner-padding-right) + var(--f7-safe-area-right)) 0 calc(var(--f7-navbar-inner-padding-left) + var(--f7-safe-area-left));
transform: translate3d(0,0,0);
z-index: 10;
}
.views, .view, .page, .navbars {
> .navbar {
position: absolute;
}
}
// Transparent navbar
.navbar-transparent:not(.navbar-large):not(.navbar-transparent-visible):not(.with-searchbar-expandable-enabled) {
.navbar-bg,
.title {
opacity: 0;
}
}
// Large Title Navbar
.navbar-large-transparent .navbar-bg,
.navbar-large.navbar-transparent .navbar-bg {
opacity: var(--f7-navbar-large-collapse-progress);
height: 100%;
transform: none;
}
.navbar-large .navbar-bg,
.ios .router-navbar-transition-to-large .navbar-bg,
.ios .router-navbar-transition-from-large .navbar-bg,
.navbar-bg.ios-swipeback-navbar-bg-large,
.navbar-large-transparent .navbar-bg.ios-swipeback-navbar-bg-large,
.navbar-large.navbar-transparent .navbar-bg.ios-swipeback-navbar-bg-large {
height: calc(100% + var(--f7-navbar-large-title-height));
transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);
}
.ios .navbar:not(.navbar-large) .navbar-bg {
--f7-navbar-large-collapse-progress: 1;
}
.navbar-large .title {
opacity: var(--f7-navbar-large-collapse-progress);
}
.navbar-large-collapsed {
--f7-navbar-large-collapse-progress: 1;
.title-large {
pointer-events: none;
}
}
.navbar .title-large {
box-sizing: border-box;
position: absolute;
left: 0;
right: 0;
top: 100%;
display: flex;
align-items: flex-end;
white-space: nowrap;
overflow: hidden;
height: var(--f7-navbar-large-title-height);
z-index: 5;
}
.navbar .title-large-text {
text-overflow: ellipsis;
white-space: nowrap;
color: var(--f7-navbar-large-title-text-color);
letter-spacing: var(--f7-navbar-large-title-letter-spacing);
font-size: var(--f7-navbar-large-title-font-size);
font-weight: var(--f7-navbar-large-title-font-weight);
line-height: var(--f7-navbar-large-title-line-height);
padding-left: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left));
padding-right: calc(var(--f7-navbar-large-title-padding-right) + var(--f7-safe-area-right));
padding-top: var(--f7-navbar-large-title-padding-vertical);
padding-bottom: var(--f7-navbar-large-title-padding-vertical);
box-sizing: border-box;
overflow: hidden;
width: 100%;
transform: translate3d(0px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0);
.ltr({
transform-origin: calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center;
});
.rtl({
transform-origin: calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center;
});
}
.navbar-no-title-large-transition {
.title-large-text {
transition-duration: 0ms;
}
}
// Relation with page
.navbar ~ *,
.navbars ~ * {
--f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-safe-area-top));
}
.navbar ~ * .page-with-navbar-large,
.navbar ~ .page-with-navbar-large,
.navbars ~ * .page-with-navbar-large,
.navbars ~ .page-with-navbar-large,
.page-with-navbar-large .navbar ~ * {
--f7-page-navbar-offset: calc(var(--f7-navbar-height) + var(--f7-navbar-large-title-height) + var(--f7-safe-area-top));
}
.page.no-navbar,
.page.no-navbar .navbar ~ * {
--f7-page-navbar-offset: var(--f7-safe-area-top);
}
.if-ios-theme({
@import url('./navbar-ios.less');
});
.if-md-theme({
@import url('./navbar-md.less');
});
.if-aurora-theme({
@import url('./navbar-aurora.less');
});