zarm
Version:
基于 React 的移动端UI库
270 lines (245 loc) • 6.95 kB
CSS
.za-tabs {
--font-size: var(--za-tabs-font-size, var(--za-font-size-md));
--color: var(--za-tabs-color, var(--za-color-text));
--color-disabled: var(--za-tabs-color-disabled, var(--za-color-text-disabled));
--height: var(--za-tabs-height, 45px);
--active-color: var(--za-tabs-active-color, var(--za-theme-primary));
--active-text-color: var(--za-tabs-active-text-color, var(--za-color-text));
--active-line-height: var(--za-tabs-active-line-height, 2px);
--padding-horizontal: var(--za-tabs-padding-horizontal, var(--za-padding-h-lg));
--padding-vertical: var(--za-tabs-padding-vertical, var(--za-padding-v-md));
}
.za-tabs__header {
position: relative;
overflow: hidden;
}
.za-tabs__tablist {
position: relative;
margin: 0;
padding: 0;
list-style-type: none;
}
.za-tabs__panel {
display: none;
position: relative;
transition: height 0.3s;
height: 100%;
}
.za-tabs__panel--active {
display: block;
}
.za-tabs__tab {
flex: 1;
text-align: center;
color: var(--color);
font-size: var(--font-size);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
cursor: pointer;
}
.za-tabs__tab--disabled {
color: var(--color-disabled);
cursor: not-allowed;
}
.za-tabs__tab--active {
color: var(--active-text-color);
}
.za-tabs__line {
position: absolute;
transition: transform 0.3s ease-out;
background-color: var(--active-color);
}
.za-tabs__line__inner {
display: block;
margin: auto;
height: 100%;
background-color: var(--active-color);
}
.za-tabs--scroll .za-tabs__tablist::-webkit-scrollbar {
display: none;
}
.za-tabs--top, .za-tabs--bottom, .za-tabs--horizontal {
display: flex;
flex-direction: column;
}
.za-tabs--top .za-tabs__header, .za-tabs--bottom .za-tabs__header, .za-tabs--horizontal .za-tabs__header {
width: 100%;
}
.za-tabs--top .za-tabs__tablist, .za-tabs--bottom .za-tabs__tablist, .za-tabs--horizontal .za-tabs__tablist {
display: flex;
height: var(--height);
line-height: var(--height);
}
.za-tabs--top .za-tabs__line, .za-tabs--bottom .za-tabs__line, .za-tabs--horizontal .za-tabs__line {
height: var(--active-line-height);
left: 0;
}
.za-tabs--top.za-tabs--scroll .za-tabs__tablist, .za-tabs--bottom.za-tabs--scroll .za-tabs__tablist, .za-tabs--horizontal.za-tabs--scroll .za-tabs__tablist {
overflow-x: auto;
}
.za-tabs--top.za-tabs--scroll .za-tabs__tab, .za-tabs--bottom.za-tabs--scroll .za-tabs__tab, .za-tabs--horizontal.za-tabs--scroll .za-tabs__tab {
overflow: visible;
padding: 0 var(--padding-horizontal);
}
.za-tabs--left, .za-tabs--right, .za-tabs--vertical {
display: flex;
flex-direction: row;
}
.za-tabs--left .za-tabs__tablist, .za-tabs--right .za-tabs__tablist, .za-tabs--vertical .za-tabs__tablist {
height: 100%;
}
.za-tabs--left .za-tabs__tab, .za-tabs--right .za-tabs__tab, .za-tabs--vertical .za-tabs__tab {
text-align: center;
padding: var(--padding-vertical) var(--padding-horizontal);
}
.za-tabs--left .za-tabs__line, .za-tabs--right .za-tabs__line, .za-tabs--vertical .za-tabs__line {
width: var(--active-line-height);
top: 0;
}
.za-tabs--left .za-tabs__body, .za-tabs--right .za-tabs__body, .za-tabs--vertical .za-tabs__body {
flex: 1;
position: relative;
}
.za-tabs--left.za-tabs--scroll .za-tabs__tablist, .za-tabs--right.za-tabs--scroll .za-tabs__tablist, .za-tabs--vertical.za-tabs--scroll .za-tabs__tablist {
overflow-y: auto;
}
.za-tabs--right .za-tabs__header, .za-tabs--bottom .za-tabs__header {
order: 1;
}
.za-tabs--left .za-tabs__header:after, .za-tabs--vertical .za-tabs__header:after {
content: "";
pointer-events: none;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: 0;
border: 0 solid var(--za-border-color);
/* prettier-ignore */
border-right-width: 1PX;
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {
.za-tabs--left .za-tabs__header:after, .za-tabs--vertical .za-tabs__header:after {
width: 200%;
height: 200%;
transform: scale(0.5);
transform-origin: 0 0;
border-radius: 0;
}
}
@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {
.za-tabs--left .za-tabs__header:after, .za-tabs--vertical .za-tabs__header:after {
width: 300%;
height: 300%;
transform: scale(0.3333);
transform-origin: 0 0;
border-radius: 0;
}
}
.za-tabs--left .za-tabs__line, .za-tabs--vertical .za-tabs__line {
right: 0;
}
.za-tabs--right .za-tabs__header:after {
content: "";
pointer-events: none;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: 0;
border: 0 solid var(--za-border-color);
/* prettier-ignore */
border-left-width: 1PX;
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {
.za-tabs--right .za-tabs__header:after {
width: 200%;
height: 200%;
transform: scale(0.5);
transform-origin: 0 0;
border-radius: 0;
}
}
@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {
.za-tabs--right .za-tabs__header:after {
width: 300%;
height: 300%;
transform: scale(0.3333);
transform-origin: 0 0;
border-radius: 0;
}
}
.za-tabs--right .za-tabs__line {
left: 0;
}
.za-tabs--top .za-tabs__header:after, .za-tabs--horizontal .za-tabs__header:after {
content: "";
pointer-events: none;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: 0;
border: 0 solid var(--za-border-color);
/* prettier-ignore */
border-bottom-width: 1PX;
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {
.za-tabs--top .za-tabs__header:after, .za-tabs--horizontal .za-tabs__header:after {
width: 200%;
height: 200%;
transform: scale(0.5);
transform-origin: 0 0;
border-radius: 0;
}
}
@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {
.za-tabs--top .za-tabs__header:after, .za-tabs--horizontal .za-tabs__header:after {
width: 300%;
height: 300%;
transform: scale(0.3333);
transform-origin: 0 0;
border-radius: 0;
}
}
.za-tabs--top .za-tabs__line, .za-tabs--horizontal .za-tabs__line {
bottom: 0;
}
.za-tabs--bottom .za-tabs__header:after {
content: "";
pointer-events: none;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: 0;
border: 0 solid var(--za-border-color);
/* prettier-ignore */
border-top-width: 1PX;
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {
.za-tabs--bottom .za-tabs__header:after {
width: 200%;
height: 200%;
transform: scale(0.5);
transform-origin: 0 0;
border-radius: 0;
}
}
@media (-webkit-min-device-pixel-ratio: 3), (min-resolution: 3dppx) {
.za-tabs--bottom .za-tabs__header:after {
width: 300%;
height: 300%;
transform: scale(0.3333);
transform-origin: 0 0;
border-radius: 0;
}
}
.za-tabs--bottom .za-tabs__line {
top: 0;
}