amis/packages/amis-ui/scss/layout/_layout.scss

478 lines
9.1 KiB
SCSS
Raw Normal View History

html,
body {
2019-12-06 09:58:08 +08:00
width: 100%;
height: 100%;
2019-04-30 11:11:25 +08:00
}
2019-04-30 11:11:25 +08:00
body {
2019-12-06 09:58:08 +08:00
overflow-x: hidden;
2019-04-30 11:11:25 +08:00
}
.#{$ns}Layout {
2019-12-06 09:58:08 +08:00
min-height: 100%;
width: 100%;
position: relative;
&:before {
content: '';
position: absolute;
width: inherit;
top: 0;
bottom: 0;
z-index: -1;
background: var(--body-bg);
2019-12-06 09:58:08 +08:00
border: inherit;
display: block;
}
&--boxed {
margin-right: auto;
margin-left: auto;
// box-shadow: 0 0 30px rgba(0, 0, 0, 0.3);
}
.#{$ns}Layout-header {
background: var(--Layout-header-bg);
box-shadow: var(--Layout-header-boxShadow);
height: var(--Layout-header-height);
2019-12-06 09:58:08 +08:00
}
&--headerFixed {
padding-top: var(--Layout-header-height);
2019-04-30 11:11:25 +08:00
.#{$ns}Layout-header {
2019-12-06 09:58:08 +08:00
position: fixed;
top: 0;
width: 100%;
z-index: $zindex-fixed;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
&-brandBar {
background: var(--Layout-brand-bg);
color: var(--Layout-brandBar-color);
2019-12-06 09:58:08 +08:00
> button {
padding: px2rem(10px) px2rem(17px);
font-size: px2rem(16px);
line-height: calc(var(--Layout-header-height) - var(--gap-md));
2019-12-06 09:58:08 +08:00
text-decoration: none;
background: transparent;
2019-12-06 09:58:08 +08:00
border: none;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
&-brand {
color: var(--Layout-brand-color);
2019-12-06 09:58:08 +08:00
text-align: left;
font-size: var(--fontSizeMd);
font-weight: var(--fontWeightNormal);
2019-12-06 09:58:08 +08:00
max-width: 100%;
height: auto;
line-height: var(--Layout-header-height);
2019-12-06 09:58:08 +08:00
display: inline-block;
vertical-align: middle;
padding: 0 var(--gap-base);
2019-12-06 09:58:08 +08:00
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&:hover {
text-decoration: none;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
img {
max-height: calc(var(--Layout-header-height) / 2);
2019-12-06 09:58:08 +08:00
// margin-top: px2rem(-4px);
vertical-align: middle;
display: inline;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&-headerBar {
border-bottom: var(--Layout-headerBar-borderBottom);
min-height: var(--Layout-header-height);
padding: 0 var(--gap-sm);
display: flex;
flex-direction: row;
align-items: center;
}
&-offScreenBtn {
display: none;
float: right;
padding: 13px var(--gap-md);
2019-12-06 09:58:08 +08:00
}
2019-12-06 09:58:08 +08:00
&-aside {
2020-09-01 20:03:07 +08:00
position: relative;
background: var(--Layout-aside-bg);
color: var(--Layout-aside-color);
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&:before {
content: '';
position: absolute;
width: inherit;
top: 0;
bottom: 0;
z-index: -1;
background: inherit;
2019-12-06 09:58:08 +08:00
border: inherit;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&-asideFooter {
position: absolute;
bottom: 0;
width: 100%;
z-index: $zindex-fixed;
max-width: var(--Layout-aside-width);
2019-12-06 09:58:08 +08:00
// .app-aside-folded & {
// max-width: @app-aside-folded-width;
// }
~ div {
padding-bottom: px2rem(50px);
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
// &-content--full {
// position: absolute;
// top: var(--Layout-header-height);
// bottom: var(--Layout-header-height);
2019-12-06 09:58:08 +08:00
// height: auto;
// width: auto !important;
// padding: 0 !important;
// overflow-y: auto;
// -webkit-overflow-scrolling: touch;
// &.h-full {
// bottom: 0;
// height: auto;
// }
// }
&-body {
padding-bottom: var(--Layout-footer-height);
2019-12-06 09:58:08 +08:00
width: 100%;
2020-07-29 15:33:25 +08:00
height: 100%;
2019-12-06 09:58:08 +08:00
}
&--noFooter &-body {
padding-bottom: 0;
}
&-footer {
position: absolute;
bottom: 0;
left: 0;
right: 0;
// z-index: 1005; 为啥要这么高
z-index: 0;
}
&--sm {
.#{$ns}Layout-asideFooter {
max-width: var(--Layout-aside--sm-width);
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
.#{$ns}AsideNav-item a {
font-size: var(--fontSizeSm);
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&--md .#{$ns}Layout-asideFooter {
max-width: var(--Layout-aside--md-width);
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&--lg .#{$ns}Layout-asideFooter {
max-width: var(--Layout-aside--lg-width);
2019-12-06 09:58:08 +08:00
}
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
@include media-breakpoint-down(sm) {
2020-09-01 20:03:07 +08:00
// .#{$ns}Layout {
// Layout 层没有出现滚动条件,导致移动端无法响应固定顶部/底部效果
// overflow-x: hidden;
// }
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-content {
transition: transform var(--animation-duration) ease;
2019-12-06 09:58:08 +08:00
}
.#{$ns}Layout-aside {
display: none;
.#{$ns}Layout--offScreen & {
position: fixed;
top: px2rem(50px);
bottom: 0;
width: var(--Layout--offscreen-width);
2019-12-06 09:58:08 +08:00
display: block !important;
visibility: visible;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
z-index: 1010;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
.#{$ns}Layout-headerBar {
display: none;
}
.#{$ns}Layout--offScreen {
2020-12-28 00:50:12 +08:00
.#{$ns}Layout-body,
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-footer {
background: var(--body-bg);
transition: transform var(--animation-duration) ease;
2019-12-06 09:58:08 +08:00
backface-visibility: hidden;
transform: translate3d(var(--Layout--offscreen-width), 0px, 0px);
2019-12-06 09:58:08 +08:00
overflow: hidden;
position: fixed;
width: 100%;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 1015;
padding-top: px2rem(50px);
}
}
.#{$ns}Layout-offScreenBtn {
display: block;
}
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
@include media-breakpoint-up(md) {
.#{$ns}Layout {
2020-09-01 20:03:07 +08:00
display: flex;
2020-10-14 10:13:48 +08:00
flex-direction: column;
2020-09-01 20:03:07 +08:00
&-header {
2020-09-01 20:03:07 +08:00
width: 100%;
}
&-main {
flex-grow: 1;
display: flex;
flex-direction: row;
justify-content: stretch;
align-items: stretch;
}
&-content {
flex-grow: 1;
position: relative;
min-height: 0;
// height: 0;
}
2020-10-21 19:04:19 +08:00
> .#{$ns}Layout-body {
2020-09-01 20:03:07 +08:00
flex-grow: 1;
position: relative;
// height: 0;
2020-09-01 20:03:07 +08:00
}
2019-12-06 09:58:08 +08:00
&--boxed {
width: px2rem(760px);
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&.#{$ns}Layout--headerFixed .#{$ns}Layout-header {
width: px2rem(760px);
}
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
&-brand,
&-brandBar,
&-aside {
width: var(--Layout-aside-width);
transition: width var(--animation-duration) ease;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
&-brandBar {
float: left;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
&--withAside {
// flex-direction: row;
// flex-wrap: wrap;
// justify-content: stretch;
2020-10-21 18:50:56 +08:00
// > .#{$ns}Layout-content {
// flex-grow: 1;
// width: 0;
// position: relative;
// }
2020-10-21 18:50:56 +08:00
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-headerBar,
.#{$ns}Layout-footer {
margin-left: var(--Layout-aside-width);
transition: margin var(--animation-duration) ease;
2019-12-06 09:58:08 +08:00
}
}
2019-12-06 09:58:08 +08:00
.visible-folded {
display: none;
}
2019-12-06 09:58:08 +08:00
&--folded {
.visible-folded {
display: inherit;
}
2019-11-13 15:14:56 +08:00
2019-12-06 09:58:08 +08:00
.hidden-folded {
display: none !important;
}
2019-12-06 09:58:08 +08:00
.text-center-folded {
text-align: center;
}
2019-12-06 09:58:08 +08:00
.pull-none-folded {
float: none !important;
}
2019-12-06 09:58:08 +08:00
.w-auto-folded {
width: auto;
}
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-aside,
.#{$ns}Layout-brandBar {
width: var(--Layout-aside--folded-width);
2019-12-06 09:58:08 +08:00
}
2019-11-13 15:14:56 +08:00
2019-12-06 09:58:08 +08:00
&.#{$ns}Layout--withAside {
.#{$ns}Layout-headerBar,
.#{$ns}Layout-footer {
margin-left: var(--Layout-aside--folded-width);
}
2019-12-06 09:58:08 +08:00
}
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-brand {
display: block;
padding: 0;
font-size: var(--fontSizeLg);
2019-12-06 09:58:08 +08:00
text-align: center;
}
}
2019-12-06 09:58:08 +08:00
&--asideFixed {
.#{$ns}Layout-aside {
height: 100%;
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&:before {
position: fixed;
z-index: 15;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-brandBar {
position: fixed;
}
2019-11-13 15:14:56 +08:00
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-asideWrap {
position: fixed;
overflow: hidden;
top: var(--Layout-header-height);
2019-12-06 09:58:08 +08:00
bottom: 0;
left: 0;
2020-09-01 20:03:07 +08:00
width: inherit;
2019-12-06 09:58:08 +08:00
z-index: $zindex-fixed;
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
.#{$ns}Layout-asideInner {
2020-09-01 20:03:07 +08:00
width: calc(100% + 17px);
2019-12-06 09:58:08 +08:00
position: relative;
height: 100%;
overflow-x: hidden;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&::-webkit-scrollbar {
-webkit-appearance: none;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
&::-webkit-scrollbar:vertical {
2020-09-01 20:03:07 +08:00
width: 17px;
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
}
2019-04-30 11:11:25 +08:00
&--noHeader &-asideWrap {
top: 0;
}
2020-09-03 15:07:31 +08:00
&--asideFixed.#{$ns}Layout--folded {
.#{$ns}Layout-aside {
position: static;
}
.#{$ns}Layout-brandBar {
position: static;
}
.#{$ns}Layout-asideWrap {
overflow: visible;
2020-10-10 12:50:53 +08:00
// position: relative;
// top: 0;
2020-09-03 15:07:31 +08:00
z-index: 15;
}
.#{$ns}Layout-asideInner {
overflow: visible;
padding-right: 17px;
}
}
2019-12-06 09:58:08 +08:00
&--sm:not(.#{$ns}Layout--folded) {
.#{$ns}Layout-brand,
.#{$ns}Layout-brandBar,
.#{$ns}Layout-aside {
width: var(--Layout-aside--sm-width);
2019-12-06 09:58:08 +08:00
}
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&--md:not(.#{$ns}Layout--folded) {
.#{$ns}Layout-brand,
.#{$ns}Layout-brandBar,
.#{$ns}Layout-aside {
width: var(--Layout-aside--md-width);
2019-12-06 09:58:08 +08:00
}
}
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&--lg:not(.#{$ns}Layout--folded) {
.#{$ns}Layout-brand,
.#{$ns}Layout-brandBar,
.#{$ns}Layout-aside {
width: var(--Layout-aside--lg-width);
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
2019-04-30 11:11:25 +08:00
}
@include media-breakpoint-up(lg) {
2019-12-06 09:58:08 +08:00
.#{$ns}Layout {
&--boxed {
width: px2rem(980px);
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&.#{$ns}Layout--headerFixed .#{$ns}Layout-header {
width: px2rem(980px);
}
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
}
2019-04-30 11:11:25 +08:00
@include media-breakpoint-up(xl) {
2019-12-06 09:58:08 +08:00
.#{$ns}Layout {
&--boxed {
width: px2rem(1180px);
2019-04-30 11:11:25 +08:00
2019-12-06 09:58:08 +08:00
&.#{$ns}Layout--headerFixed .#{$ns}Layout-header {
width: px2rem(1180px);
}
2019-04-30 11:11:25 +08:00
}
2019-12-06 09:58:08 +08:00
}
}