@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
327 lines (320 loc) • 11.9 kB
CSS
:root,
page {
--nut-scale-f: 1;
--nut-scale-font: var(--nut-scale-f, 1);
--nut-scale-icon: var(--nut-scale-f, 1);
--nut-icon-height: calc(16px * var(--nut-scale-icon, var(--nut-scale-f, 1))) ;
--nut-icon-width: calc(16px * var(--nut-scale-icon, var(--nut-scale-f, 1))) ;
--nut-icon-line-height: calc(16px * var(--nut-scale-icon, var(--nut-scale-f, 1))) ;
}
/* #ifdef harmony */
/* #endif */
/* #ifndef harmony */
/* #endif */
.nut-tabs {
display: flex;
}
.nut-tabs-horizontal {
flex-direction: column;
}
.nut-tabs-titles {
display: flex;
box-sizing: border-box;
height: var(--nutui-tabs-titles-height, calc(44px * var(--nut-scale-f, 1)));
user-select: none;
overflow-x: auto;
overflow-y: hidden;
background: var(--nutui-tabs-titles-background-color, var(--nutui-color-background, #f2f3f5));
scrollbar-width: none;
}
.nut-tabs-titles::-webkit-scrollbar {
display: none;
width: 0;
background: transparent;
}
.nut-tabs-titles .nut-tabs-list {
width: 100%;
display: flex;
flex-shrink: 0;
}
.nut-tabs-titles-left {
justify-content: flex-start;
}
.nut-tabs-titles-left .nut-tabs-titles-item {
padding: 0 calc(22px * var(--nut-scale-f, 1));
}
.nut-tabs-titles-right {
justify-content: flex-end;
}
.nut-tabs-titles-right .nut-tabs-titles-item {
padding: 0 calc(22px * var(--nut-scale-f, 1));
}
.nut-tabs-titles-item {
position: relative;
display: flex;
align-items: center;
justify-content: center;
flex: 1 0 auto;
padding: 0 var(--nutui-tabs-titles-gap, calc(12px * var(--nut-scale-f, 1)));
height: var(--nutui-tabs-titles-height, calc(44px * var(--nut-scale-f, 1)));
line-height: var(--nutui-tabs-titles-height, calc(44px * var(--nut-scale-f, 1)));
min-width: var(--nutui-tabs-titles-item-min-width, calc(50px * var(--nut-scale-f, 1)));
font-size: var(--nutui-tabs-titles-font-size, var(--nutui-font-size-base, calc(14px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
color: var(--nutui-tabs-titles-item-color, var(--nutui-color-title, #1a1a1a));
text-overflow: ellipsis;
white-space: nowrap;
}
.nut-tabs-titles-item .nut-icon {
color: var(--nutui-tabs-titles-item-color, var(--nutui-color-title, #1a1a1a));
}
.nut-tabs-titles-item-left, .nut-tabs-titles-item-right {
flex: none;
}
.nut-tabs-titles-item-text {
color: var(--nutui-tabs-titles-item-color, var(--nutui-color-title, #1a1a1a));
}
.nut-tabs-titles-item-smile, .nut-tabs-titles-item-line {
position: absolute;
transition: width 0.3s ease;
width: 0;
height: 0;
content: " ";
left: 50%;
transform: translate(-50%, 0);
bottom: var(--nutui-tabs-line-bottom, 15%);
border-radius: var(--nutui-tabs-line-border-radius, calc(2px * var(--nut-scale-f, 1)));
opacity: var(--nutui-tabs-tab-line-opacity, 1);
overflow: hidden;
}
.nut-tabs-titles-item-smile {
bottom: var(--nutui-tabs-titles-item-smile-bottom, -10%);
}
.nut-tabs-titles-item-smile .nut-icon {
position: absolute;
font-size: var(--nutui-font-size-2xl, calc(20px * var(--nut-scale-font, var(--nut-scale-f, 1))));
width: 100%;
height: 100%;
}
.nut-tabs-titles-item-smile-icon {
width: calc(40px * var(--nut-scale-f, 1));
height: calc(20px * var(--nut-scale-f, 1));
}
.nut-tabs-titles-item-active .nut-icon {
color: var(--nutui-tabs-titles-item-active-color, var(--nutui-color-primary, #ff0f23));
}
.nut-tabs-titles-item-active .nut-tabs-titles-item-text {
color: var(--nutui-tabs-titles-item-active-color, var(--nutui-color-primary, #ff0f23));
font-weight: var(--nutui-tabs-titles-item-active-font-weight, var(--nutui-font-weight-bold, 600));
}
.nut-tabs-titles-item-active .nut-tabs-titles-item-line {
/* #ifndef dynamic*/
overflow: unset;
/* #endif */
content: " ";
width: var(--nutui-tabs-tab-line-width, calc(12px * var(--nut-scale-f, 1)));
height: var(--nutui-tabs-tab-line-height, calc(2px * var(--nut-scale-f, 1)));
background: var(--nutui-tabs-tab-line-color, var(--nutui-color-primary, #ff0f23));
}
.nut-tabs-titles-item-active .nut-tabs-titles-item-smile {
/* #ifndef dynamic*/
overflow: unset;
/* #endif */
width: calc(40px * var(--nut-scale-f, 1));
height: calc(20px * var(--nut-scale-f, 1));
}
.nut-tabs-titles-item-active .nut-tabs-titles-item-smile .nut-icon {
color: var(--nutui-tabs-titles-item-active-color, var(--nutui-color-primary, #ff0f23));
}
.nut-tabs-titles-item-disabled {
color: var(--nutui-color-text-disabled, #c2c4cc);
}
.nut-tabs-titles-item-disabled .nut-icon {
color: var(--nutui-color-text-disabled, #c2c4cc);
}
.nut-tabs-titles-item-disabled .nut-tabs-titles-item-text {
color: var(--nutui-color-text-disabled, #c2c4cc);
}
.nut-tabs-titles-simple .nut-tabs-titles-item-active .nut-tabs-titles-item-text,
.nut-tabs-titles-simple .nut-tabs-titles-item-active .nut-icon {
color: var(--nutui-color-title, #1a1a1a);
font-size: var(--nutui-tabs-titles-item-active-font-size, var(--nutui-font-size-l, calc(15px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
}
.nut-tabs-titles-card .nut-tabs-titles-item-active {
font-weight: var(--nutui-font-weight-bold, 600);
background-color: #ffffff;
border-radius: var(--nutui-radius-base, calc(8px * var(--nut-scale-f, 1))) var(--nutui-radius-base, calc(8px * var(--nut-scale-f, 1))) 0 0;
}
.nut-tabs-titles-button .nut-tabs-titles-item {
padding: 0 calc(10px * var(--nut-scale-f, 1));
}
.nut-tabs-titles-button .nut-tabs-titles-item .nut-tabs-titles-item-text {
flex: 1;
height: calc(28px * var(--nut-scale-f, 1));
display: flex;
align-items: center;
justify-content: center;
padding: 0 calc(8px * var(--nut-scale-f, 1));
}
.nut-tabs-titles-button .nut-tabs-titles-item-active .nut-tabs-titles-item-text {
background: var(--nutui-color-default-light);
color: var(--nutui-tabs-titles-item-active-color, var(--nutui-color-primary, #ff0f23));
border-radius: var(--nutui-tabs-button-border-radius, calc(50px * var(--nut-scale-f, 1)));
font-weight: var(--nutui-font-weight-bold, 600);
background-color: var(--nutui-tabs-button-active-background-color, var(--nutui-color-primary-light-pressed, #ffebf1));
border: var(--nutui-tabs-button-active-border, calc(1px * var(--nut-scale-f, 1)) solid var(--nutui-color-primary, #ff0f23));
}
.nut-tabs-titles-divider {
border-bottom: calc(1px * var(--nut-scale-f, 1)) solid var(--nutui-color-border, rgba(0, 0, 0, 0.06));
}
.nut-tabs-titles-divider .nut-tabs-titles-item {
position: relative;
}
.nut-tabs-titles-divider .nut-tabs-titles-item::after {
content: "";
position: absolute;
right: 0;
top: 50%;
height: 50%;
width: calc(1px * var(--nut-scale-f, 1));
background: var(--nutui-color-border, rgba(0, 0, 0, 0.06));
transform: translateY(-50%);
}
.nut-tabs-titles-divider .nut-tabs-titles-item:last-child::after {
display: none;
}
.nut-tabs-vertical .nut-tabs-ellipsis {
white-space: break-spaces;
/* #ifdef harmony dynamic*/
padding-left: calc(12px * var(--nut-scale-f, 1));
/* #endif */
/* #ifndef harmony dynamic*/
padding-left: calc(6px * var(--nut-scale-f, 1));
/* #endif */
width: calc(90px * var(--nut-scale-f, 1));
line-height: var(--nutui-font-size-base, calc(14px * var(--nut-scale-font, var(--nut-scale-f, 1))));
}
.nut-tabs-vertical .nut-tabs-titles {
flex-direction: column;
height: 100%;
width: var(--nutui-tabs-vertical-titles-width, calc(100px * var(--nut-scale-f, 1)));
flex-shrink: 0;
}
.nut-tabs-vertical .nut-tabs-titles .nut-tabs-list {
flex-direction: column;
}
.nut-tabs-vertical .nut-tabs-titles-item {
height: var(--nutui-tabs-vertical-titles-item-height, calc(40px * var(--nut-scale-f, 1)));
flex: none;
}
.nut-tabs-vertical .nut-tabs-titles-item-smile {
overflow: hidden;
transition: width 0.3s ease;
}
.nut-tabs-vertical .nut-tabs-titles-item-line {
transform: translate(0, -50%);
transition: height 0.3s ease;
}
.nut-tabs-vertical .nut-tabs-titles-item-line-vertical {
top: 50%;
}
.nut-tabs-vertical .nut-tabs-titles-item-active {
background-color: var(--nutui-tabs-titles-item-active-background-color, var(--nutui-color-background-overlay, #ffffff));
}
.nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line {
left: calc(10px * var(--nut-scale-f, 1));
width: var(--nutui-tabs-vertical-tab-line-width, calc(3px * var(--nut-scale-f, 1)));
height: var(--nutui-tabs-vertical-tab-line-height, calc(12px * var(--nut-scale-f, 1)));
background: var(--nutui-tabs-vertical-tab-line-color, linear-gradient(180deg, var(--nutui-color-primary-stop-1, #ff475d) 0%, var(--nutui-color-primary-light-pressed, #ffebf1) 100%));
}
.nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile {
right: calc(-12px * var(--nut-scale-f, 1));
bottom: -2%;
left: auto;
transform: rotate(320deg);
}
.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles {
flex-direction: row;
height: var(--nutui-tabs-titles-height, calc(44px * var(--nut-scale-f, 1)));
width: 100%;
padding: 0 ;
}
.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles .nut-tabs-list {
flex-direction: row;
height: auto;
}
.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-content {
flex-direction: row;
}
.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active {
background-color: initial;
}
.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line {
left: 50%;
transform: translate(-50%, 0);
width: var(--nutui-tabs-tab-line-width, calc(12px * var(--nut-scale-f, 1)));
height: var(--nutui-tabs-tab-line-height, calc(2px * var(--nut-scale-f, 1)));
background: var(--nutui-tabs-tab-line-color, var(--nutui-color-primary, #ff0f23));
}
.nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile {
left: 50%;
right: auto;
bottom: calc(-3px * var(--nut-scale-f, 1));
transform: translate(-50%, 0) rotate(0deg);
}
.nut-tabs-vertical .nut-tabs-content {
flex-direction: column;
height: 100%;
}
.nut-tabs-vertical .nut-tabs-content-wrap {
flex: 1;
}
.nut-tabs-vertical .nut-tabs-content .nut-tabpane {
height: 100%;
}
.nut-tabs-content {
display: flex;
box-sizing: border-box;
}
.nut-tabs-content-wrap {
overflow: hidden;
}
[dir=rtl] .nut-tabs-titles-item-smile, [dir=rtl] .nut-tabs-titles-item-line,
.nut-rtl .nut-tabs-titles-item-smile,
.nut-rtl .nut-tabs-titles-item-line {
left: auto;
right: 50%;
transform: translate(50%, 0);
}
[dir=rtl] .nut-tabs-titles-divider .nut-tabs-titles-item::after,
.nut-rtl .nut-tabs-titles-divider .nut-tabs-titles-item::after {
right: auto;
left: 0;
}
[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-line .nut-tabs-titles-item,
.nut-rtl .nut-tabs-vertical .nut-tabs-titles-line .nut-tabs-titles-item {
padding-left: 0;
padding-right: calc(14px * var(--nut-scale-f, 1));
}
[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line,
.nut-rtl .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-line {
left: auto;
right: calc(10px * var(--nut-scale-f, 1));
}
[dir=rtl] .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile,
.nut-rtl .nut-tabs-vertical .nut-tabs-titles-item-active .nut-tabs-titles-item-smile {
left: calc(-12px * var(--nut-scale-f, 1));
right: auto;
transform: rotate(-320deg);
}
[dir=rtl] .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line,
.nut-rtl .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-line {
left: auto;
right: 50%;
transform: translate(50%, 0);
}
[dir=rtl] .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile,
.nut-rtl .nut-tabs-vertical .nut-tabs-horizontal .nut-tabs-titles-item-active .nut-tabs-titles-item-smile {
right: 50%;
left: auto;
transform: translate(50%, 0) rotate(0deg);
}