framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
404 lines (395 loc) • 10.3 kB
text/less
/* === Panels === */
@import './panel-vars.less';
.panel-backdrop {
position: absolute;
left: 0;
top: 0px;
width: 100%;
height: 100%;
opacity: 0;
z-index: 5999;
visibility: hidden;
pointer-events: none;
transform: translate3d(0, 0, 0);
background-color: var(--f7-panel-backdrop-bg-color);
transition-property: transform, opacity;
transition-duration: var(--f7-panel-transition-duration);
.with-panel,
.with-panel-closing {
visibility: visible;
}
&.not-animated {
transition-duration: 0ms ;
}
}
.panel {
z-index: 1000;
box-sizing: border-box;
position: absolute;
top: 0px;
height: 100%;
transform: translate3d(0, 0, 0);
width: var(--f7-panel-width);
background-color: var(--f7-panel-bg-color);
overflow: visible;
transition-property: transform;
transition-duration: var(--f7-panel-transition-duration);
&:not(.panel-in):not(.panel-out):not(.panel-in-breakpoint):not(.panel-in-collapsed):not(
.panel-in-swipe
) {
display: none;
}
&:after {
pointer-events: none;
opacity: 0;
z-index: 5999;
position: absolute;
content: '';
top: 0;
width: 20px;
height: 100%;
transition-property: transform, opacity;
transition-duration: var(--f7-panel-transition-duration);
}
&.not-animated {
&,
&:after {
transition-duration: 0ms ;
}
}
&.panel-reveal.not-animated {
& ~ .views,
& ~ .view {
transition-duration: 0ms ;
}
}
&.panel-resizing {
user-select: none;
&,
&:after,
& ~ .views,
& ~ .view {
transition-duration: 0ms ;
}
}
}
.panel-cover,
.panel-floating {
z-index: 6000;
}
.panel-floating {
overflow: hidden;
border-radius: 16px;
height: auto;
top: calc(8px + var(--f7-safe-area-top, 0px));
bottom: calc(8px + var(--f7-safe-area-bottom, 0px));
.views,
.view {
--f7-safe-area-top: 0px;
--f7-safe-area-bottom: 0px;
}
}
.page .panel-floating {
top: calc(8px + var(--f7-page-navbar-offset, 0px));
bottom: calc(8px + var(--f7-safe-area-bottom, 0px));
.page {
--f7-page-navbar-offset: 0px;
}
.navbar ~ *,
.navbars ~ * {
--f7-page-navbar-offset: calc(var(--f7-navbar-height));
}
}
.panel-left {
left: 0;
width: var(--f7-panel-left-width, var(--f7-panel-width));
&.panel-cover,
&.panel-floating,
&.panel-push {
transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0);
}
}
.panel-right {
right: 0;
width: var(--f7-panel-right-width, var(--f7-panel-width));
&.panel-cover,
&.panel-floating,
&.panel-push {
transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0);
}
}
.panel-in-breakpoint {
transform: translate3d(0, 0, 0) ;
transition-duration: 0ms;
&:after {
display: none;
}
&.panel-cover,
&.panel-floating {
z-index: 5900;
}
}
.panel,
.panel-backdrop {
transition-timing-function: var(--f7-panel-transition-timing-function);
}
html {
&.with-panel-left-reveal,
&.with-panel-right-reveal,
&.with-panel-left-push,
&.with-panel-right-push,
&.with-panel-closing {
.views,
.framework7-root > .view {
transition-duration: var(--f7-panel-transition-duration);
transition-property: transform;
transition-timing-function: var(--f7-panel-transition-timing-function);
}
}
&.with-panel {
.framework7-root > .views,
.framework7-root > .view {
.page-content {
.not-scrollable();
}
}
}
&.with-panel-left-reveal,
&.with-panel-left-push {
.views,
.framework7-root > .view {
transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);
}
}
&.with-panel-right-reveal,
&.with-panel-right-push {
.views,
.framework7-root > .view {
transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);
}
}
}
.page {
> .panel-backdrop {
z-index: 290;
}
> .panel-reveal,
.panel-push {
z-index: 1;
}
> .panel-cover,
> .panel-floating {
z-index: 300;
}
&.with-panel-left-reveal,
&.with-panel-right-reveal,
&.with-panel-left-push,
&.with-panel-right-push,
&.with-panel-closing {
> .page-content,
> .tabs {
transition-duration: var(--f7-panel-transition-duration);
transition-property: transform;
transition-timing-function: var(--f7-panel-transition-timing-function);
}
}
&.with-panel-left-reveal,
&.with-panel-left-push {
> .page-content,
> .tabs {
transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);
}
}
&.with-panel-right-reveal,
&.with-panel-right-push {
> .page-content,
> .tabs {
transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);
}
}
}
.with-panel-closing {
.panel-backdrop-in {
visibility: visible;
pointer-events: auto;
opacity: 0;
}
}
.with-panel-left-reveal,
.with-panel-right-reveal,
.with-panel-left-cover,
.with-panel-right-cover,
.with-panel-left-floating,
.with-panel-right-floating,
.with-panel-left-push,
.with-panel-right-push {
.panel-backdrop-in {
visibility: visible;
pointer-events: auto;
opacity: 1;
}
}
.with-panel-left-reveal,
.with-panel-left-push {
.panel-backdrop-in {
transform: translate3d(var(--f7-panel-left-width, var(--f7-panel-width)), 0, 0);
}
}
.with-panel-right-reveal,
.with-panel-right-push {
.panel-backdrop-in {
transform: translate3d(calc(-1 * var(--f7-panel-right-width, var(--f7-panel-width))), 0, 0);
}
}
.with-panel-left-cover .panel-left,
.with-panel-left-push .panel-left {
transform: translate3d(0px, 0, 0);
}
.with-panel-left-floating .panel-left {
transform: translate3d(8px, 0, 0);
}
.with-panel-right-cover .panel-right,
.with-panel-right-push .panel-right {
transform: translate3d(0px, 0, 0);
}
.with-panel-right-floating .panel-right {
transform: translate3d(-8px, 0, 0);
}
.panel-resizable {
max-width: 100%;
}
.panel-resize-handler {
position: absolute;
top: 0;
height: 100%;
width: 6px;
cursor: col-resize;
z-index: 6000;
display: none;
.panel-resizable & {
display: block;
}
.panel-left.panel-cover &,
.panel-left.panel-floating & {
right: -3px;
}
.panel-left.panel-reveal &,
.panel-left.panel-push & {
right: 0;
}
.panel-right.panel-cover &,
.panel-right.panel-floating & {
left: -3px;
}
.panel-right.panel-reveal &,
.panel-right.panel-push & {
left: 0;
}
}
.panel-left.panel-in-collapsed {
& ~ .views,
& ~ .view,
& ~ .page-content,
& ~ .tabs {
margin-left: var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width));
}
.page.with-panel-left-reveal & ~ .page-content,
.page.with-panel-left-reveal & ~ .tabs,
html.with-panel-left-reveal & ~ .views,
html.with-panel-left-reveal & ~ .view {
transform: translate3d(
calc(
var(--f7-panel-left-width, var(--f7-panel-width)) -
var(--f7-panel-left-collapsed-width, var(--f7-panel-collapsed-width))
),
0,
0
);
}
}
.panel-right.panel-in-collapsed {
& ~ .views,
& ~ .view,
& ~ .page-content,
& ~ .tabs {
margin-right: var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width));
}
.page.with-panel-right-reveal & ~ .page-content,
.page.with-panel-right-reveal & ~ .tabs,
html.with-panel-right-reveal & ~ .views,
html.with-panel-right-reveal & ~ .view {
transform: translate3d(
calc(
var(--f7-panel-right-collapsed-width, var(--f7-panel-collapsed-width)) -
var(--f7-panel-right-width, var(--f7-panel-width))
),
0,
0
);
}
}
html.with-modal-popup-push .framework7-root,
html.with-modal-popup-push-closing .framework7-root {
--f7-panelPushScale: var(--f7-popup-push-scale);
--f7-panelPushTransitionDuration: var(--f7-popup-transition-duration);
--f7-panelPushTransitionTimingFunction: var(--f7-popup-transition-timing-function);
--f7-panelPushBorderRadius: var(--f7-popup-push-border-radius);
}
html.with-modal-sheet-push .framework7-root,
html.with-modal-sheet-push-closing .framework7-root {
--f7-panelPushScale: var(--f7-sheet-push-scale);
--f7-panelPushTransitionDuration: var(--f7-sheet-transition-duration);
--f7-panelPushTransitionTimingFunction: var(--f7-sheet-transition-timing-function);
--f7-panelPushBorderRadius: var(--f7-sheet-push-border-radius);
}
html.with-modal-popup-push .framework7-root,
html.with-modal-sheet-push .framework7-root {
> .panel-in,
> .panel-out {
transition-duration: var(--f7-panelPushTransitionDuration);
transition-timing-function: var(--f7-panelPushTransitionTimingFunction);
&.panel-reveal.panel-left,
&.panel-push.panel-left {
transform: scale(var(--f7-panelPushScale, 1));
transform-origin: 50vw center;
border-top-left-radius: var(--f7-panelPushBorderRadius);
.view {
border-top-left-radius: var(--f7-panelPushBorderRadius);
}
}
&.panel-reveal.panel-right,
&.panel-push.panel-right {
transform: scale(var(--f7-panelPushScale, 1));
transform-origin: calc(var(--f7-panel-left-width, var(--f7-panel-width)) - 50vw) center;
border-top-right-radius: var(--f7-panelPushBorderRadius);
.view {
border-top-right-radius: var(--f7-panelPushBorderRadius);
}
}
&.panel-cover.panel-left {
transform: translate3d(calc(-1 * var(--f7-panel-left-width, var(--f7-panel-width))), 0, 0px);
}
&.panel-cover.panel-right {
transform: translate3d(var(--f7-panel-right-width, var(--f7-panel-width)), 0, 0px);
}
}
}
html.with-modal-popup-push-closing .framework7-root > .panel-in,
html.with-modal-sheet-push-closing .framework7-root > .panel-in {
transition-duration: var(--f7-panelPushTransitionDuration);
transition-timing-function: var(--f7-panelPushTransitionTimingFunction);
&.panel-reveal.panel-left,
&.panel-push.panel-left {
transform-origin: 50vw center;
}
&.panel-reveal.panel-right,
&.panel-push.panel-right {
transform-origin: calc(var(--f7-panel-right-width, var(--f7-panel-width)) - 50vw) center;
}
}
.if-ios-theme({
@import './panel-ios.less';
});
.if-md-theme({
@import './panel-md.less';
});