Files
ionic-framework/src/components/app/structure.scss
2016-07-28 15:28:55 -05:00

226 lines
3.3 KiB
SCSS

@import "../../globals.core";
@import "./z-index";
// App Structure
// --------------------------------------------------
* {
box-sizing: border-box;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none;
}
html {
width: 100%;
height: 100%;
text-size-adjust: 100%;
}
body {
@include user-select-none();
position: fixed;
overflow: hidden;
margin: 0;
padding: 0;
width: 100%;
max-width: 100%;
height: 100%;
max-height: 100%;
-webkit-font-smoothing: antialiased;
font-smoothing: antialiased;
text-rendering: optimizeLegibility;
-webkit-user-drag: none;
-ms-content-zooming: none;
touch-action: manipulation;
word-wrap: break-word;
text-size-adjust: none;
}
// Nav Container Structure
// --------------------------------------------------
ion-app,
ion-nav,
ion-tab,
ion-tabs,
.app-root {
position: absolute;
top: 0;
left: 0;
z-index: $z-index-page-container;
display: block;
overflow: hidden;
width: 100%;
height: 100%;
}
ion-tab scroll-cotent {
display: none;
}
ion-tab {
transform: translateY(-200%);
}
ion-tab.show-tab {
transform: translateY(0);
}
ion-tab.show-tab scroll-cotent {
display: block;
}
// Page Container Structure
// --------------------------------------------------
ion-page {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
// do not show, but still render so we can get dimensions
opacity: 0;
}
ion-content {
position: relative;
top: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
}
ion-page > ion-content {
position: absolute;
}
ion-page scroll-content {
// do not render the scroll-content at all until ready
display: none;
}
ion-page.show-page {
// show the page now that it's ready
opacity: 1;
}
ion-page.show-page scroll-content {
// render the content when ready
display: block;
}
// Toolbar Container Structure
// --------------------------------------------------
ion-header {
position: absolute;
top: 0;
left: 0;
z-index: $z-index-toolbar;
display: block;
width: 100%;
}
ion-toolbar {
position: relative;
z-index: $z-index-toolbar;
}
ion-footer {
position: absolute;
bottom: 0;
left: 0;
z-index: $z-index-toolbar;
display: block;
width: 100%;
}
ion-tabbar {
position: absolute;
bottom: 0;
left: 0;
z-index: $z-index-toolbar;
display: flex;
width: 100%;
// default to hidden until ready
opacity: 0;
}
ion-tabbar.show-tabbar {
opacity: 1;
}
[tabsPlacement=top] > ion-tabbar {
top: 0;
bottom: auto;
}
// Scrollable Content
// --------------------------------------------------
scroll-content {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: $z-index-scroll-content;
display: block;
overflow-x: hidden;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
will-change: scroll-position;
}
ion-content.js-scroll > scroll-content {
position: relative;
min-height: 100%;
overflow-x: initial;
overflow-y: initial;
-webkit-overflow-scrolling: auto;
will-change: initial;
}
.disable-scroll ion-page scroll-content {
overflow-y: hidden;
overflow-x: hidden;
}
[nav-viewport],
[nav-portal],
[tab-portal],
.nav-decor {
display: none;
}