UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

327 lines (320 loc) 11.9 kB
: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))) !important; --nut-icon-width: calc(16px * var(--nut-scale-icon, var(--nut-scale-f, 1))) !important; --nut-icon-line-height: calc(16px * var(--nut-scale-icon, var(--nut-scale-f, 1))) !important; } /* #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 !important; } .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); }