@nutui/nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
345 lines (337 loc) • 11 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))) ;
}
.nut-overlay {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
background-color: var(--nutui-overlay-bg-color, var(--nutui-color-mask, rgba(0, 0, 0, 0.7)));
}
.nut-overflow-hidden {
overflow: hidden ;
}
@keyframes nut-fade-in {
0% {
opacity: 0;
}
1% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes nut-fade-out {
0% {
opacity: 1;
}
1% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.nut-overlay-slide-enter-active, .nut-overlay-slide-appear-active {
animation-fill-mode: both;
animation-name: nut-fade-in;
animation-duration: var(--nutui-overlay-animation-duration, 0.3s);
}
.nut-overlay-slide-exit-active {
animation-fill-mode: both;
animation-name: nut-fade-out;
animation-duration: var(--nutui-overlay-animation-duration, 0.3s);
}
[dir=rtl] .nut-overlay,
.nut-rtl .nut-overlay {
left: auto;
right: 0;
}
.nut-badge {
position: relative;
/* #ifdef dynamic*/
display: flex;
/* #endif */
/* #ifndef dynamic*/
display: inline-flex;
box-sizing: content-box;
/* #endif */
vertical-align: middle;
width: auto;
}
.nut-badge-icon {
display: flex;
justify-content: center;
align-items: center;
background: var(--nutui-badge-background-color, var(--nutui-color-primary, #ff0f23));
padding: var(--nutui-badge-icon-padding, calc(2px * var(--nut-scale-f, 1)));
text-align: center;
z-index: var(--nutui-badge-z-index, 1);
}
.nut-badge-icon .nut-icon {
width: var(--nutui-badge-icon-size, var(--nutui-font-size-xxs, calc(10px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
height: var(--nutui-badge-icon-size, var(--nutui-font-size-xxs, calc(10px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
font-size: var(--nutui-badge-icon-size, var(--nutui-font-size-xxs, calc(10px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
}
.nut-badge-sup, .nut-badge-icon {
border-radius: var(--nutui-badge-border-radius, var(--nutui-badge-height, calc(14px * var(--nut-scale-f, 1))));
}
.nut-badge-sup::after, .nut-badge-icon::after {
content: "";
position: absolute;
top: -50%;
bottom: -50%;
left: -50%;
right: -50%;
transform: scale(0.5);
border: var(--nutui-badge-border, calc(1px * var(--nut-scale-f, 1)) solid var(--nutui-color-primary-text, #ffffff));
border-radius: var(--nutui-badge-border-radius, var(--nutui-badge-height, calc(14px * var(--nut-scale-f, 1))));
}
.nut-badge-sup {
/* #ifdef dynamic*/
display: flex;
/* #endif */
/* #ifndef dynamic*/
display: inline-flex;
/* #endif */
text-align: center;
min-width: var(--nutui-badge-min-width, calc(6px * var(--nut-scale-f, 1)));
padding: var(--nutui-badge-padding, calc(1px * var(--nut-scale-f, 1)) calc(4px * var(--nut-scale-f, 1)));
box-sizing: border-box;
color: var(--nutui-badge-color, var(--nutui-color-primary-text, #ffffff));
font-size: var(--nutui-badge-font-size, var(--nutui-font-size-xxxs, calc(9px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
line-height: 12px;
white-space: nowrap;
font-weight: normal;
vertical-align: middle;
background: var(--nutui-badge-background-color, var(--nutui-color-primary, #ff0f23));
z-index: 1;
}
.nut-badge-disabled {
background: var(--nutui-badge-background-disabled-color, var(--nutui-color-text-disabled, #b4b8bf));
}
.nut-badge-number {
font-family: "JDZH-Regular";
}
.nut-badge-one {
height: var(--nutui-badge-height, calc(14px * var(--nut-scale-f, 1)));
width: var(--nutui-badge-height, calc(14px * var(--nut-scale-f, 1)));
}
.nut-badge-content {
position: absolute;
transform: var(--nutui-badge-content-transform, translate(50%, -50%));
}
.nut-badge-dot {
padding: 0;
border-radius: 50%;
}
.nut-badge-dot::after {
border: var(--nutui-badge-dot-border, calc(1px * var(--nut-scale-f, 1)) solid var(--nutui-color-primary-text, #ffffff));
border-radius: 50%;
}
.nut-badge-dot-normal {
min-width: var(--nutui-badge-dot-width, calc(6px * var(--nut-scale-f, 1)));
width: var(--nutui-badge-dot-width, calc(6px * var(--nut-scale-f, 1)));
height: var(--nutui-badge-dot-width, calc(6px * var(--nut-scale-f, 1)));
}
.nut-badge-dot-small {
min-width: var(--nutui-badge-dot-small-width, calc(4px * var(--nut-scale-f, 1)));
width: var(--nutui-badge-dot-small-width, calc(4px * var(--nut-scale-f, 1)));
height: var(--nutui-badge-dot-small-width, calc(4px * var(--nut-scale-f, 1)));
}
.nut-badge-dot-large {
min-width: var(--nutui-badge-dot-large-width, calc(8px * var(--nut-scale-f, 1)));
width: var(--nutui-badge-dot-large-width, calc(8px * var(--nut-scale-f, 1)));
height: var(--nutui-badge-dot-large-width, calc(8px * var(--nut-scale-f, 1)));
}
.nut-badge-outline {
background: var(--nutui-color-primary-text, #ffffff);
color: var(--nutui-badge-outline-color, var(--nutui-color-primary, #ff0f23));
}
.nut-badge-outline::after {
border: var(--nutui-badge-outline-border, calc(1px * var(--nut-scale-f, 1)) solid var(--nutui-color-primary, #ff0f23));
}
.nut-fixednav {
position: fixed;
z-index: var(--nutui-fixednav-index, 900);
display: inline-block;
height: calc(50px * var(--nut-scale-f, 1));
}
.nut-fixednav.active .nut-fixednav-btn .nut-icon {
transform: rotate(180deg);
}
.nut-fixednav.active .nut-fixednav-list {
transform: translateX(0%) ;
}
.nut-fixednav.active.nut-fixednav-left .nut-icon {
transform: rotate(0deg);
}
.nut-fixednav-btn {
box-sizing: border-box;
position: absolute;
z-index: var(--nutui-fixednav-index, 900);
width: calc(70px * var(--nut-scale-f, 1));
height: 100%;
background: var(--nutui-fixednav-button-background, var(--nutui-color-primary, #ff0f23));
box-shadow: 0 calc(2px * var(--nut-scale-f, 1)) calc(4px * var(--nut-scale-f, 1)) 0 rgba(0, 0, 0, 0.2);
display: flex;
align-items: center;
justify-content: center;
}
.nut-fixednav-btn .text {
width: calc(24px * var(--nut-scale-f, 1));
line-height: calc(13px * var(--nut-scale-f, 1));
font-size: var(--nutui-font-size-s, calc(12px * var(--nut-scale-font, var(--nut-scale-f, 1))));
color: #fff;
flex-shrink: 0;
}
.nut-fixednav-btn .nut-icon {
transition: all 0.3s;
}
.nut-fixednav-list {
position: absolute;
transition: all 0.5s;
z-index: var(--nutui-fixednav-index, 900);
flex-shrink: 0;
height: 100%;
background: var(--nutui-fixednav-background-color, #ffffff);
display: flex;
justify-content: space-between;
box-shadow: calc(2px * var(--nut-scale-f, 1)) calc(2px * var(--nut-scale-f, 1)) calc(8px * var(--nut-scale-f, 1)) 0 rgba(0, 0, 0, 0.2);
}
.nut-fixednav-list-item {
position: relative;
flex: 1;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
min-width: calc(50px * var(--nut-scale-f, 1));
flex-shrink: 0;
color: var(--nutui-fixednav-color, #1a1a1a);
}
.nut-fixednav-list-item .nut-fixednav-list-text {
font-size: var(--nutui-font-size-xxs, calc(10px * var(--nut-scale-font, var(--nut-scale-f, 1))));
}
.nut-fixednav-list-image {
width: calc(20px * var(--nut-scale-f, 1));
height: calc(20px * var(--nut-scale-f, 1));
margin-bottom: calc(2px * var(--nut-scale-f, 1));
}
.nut-fixednav-right {
right: 0;
}
.nut-fixednav-right .nut-fixednav-btn {
right: 0;
border-radius: calc(45px * var(--nut-scale-f, 1)) 0 0 calc(45px * var(--nut-scale-f, 1));
}
.nut-fixednav-right .nut-fixednav-btn .nut-icon {
margin-right: calc(5px * var(--nut-scale-f, 1));
transform: rotate(0deg);
}
.nut-fixednav-right .nut-fixednav-list {
right: 0;
transform: translateX(100%);
border-radius: calc(25px * var(--nut-scale-f, 1)) 0 0 calc(25px * var(--nut-scale-f, 1));
padding-left: calc(20px * var(--nut-scale-f, 1));
padding-right: calc(80px * var(--nut-scale-f, 1));
}
.nut-fixednav-left {
left: 0;
}
.nut-fixednav-left .nut-fixednav-btn {
flex-direction: row-reverse;
left: 0;
border-radius: 0 calc(45px * var(--nut-scale-f, 1)) calc(45px * var(--nut-scale-f, 1)) 0;
}
.nut-fixednav-left .nut-fixednav-btn .nut-icon {
margin-left: calc(5px * var(--nut-scale-f, 1));
transform: rotate(180deg);
}
.nut-fixednav-left .nut-fixednav-list {
transform: translateX(-100%);
left: 0;
border-radius: 0 calc(25px * var(--nut-scale-f, 1)) calc(25px * var(--nut-scale-f, 1)) 0;
padding-left: calc(80px * var(--nut-scale-f, 1));
padding-right: calc(20px * var(--nut-scale-f, 1));
}
[dir=rtl] .nut-fixednav-right,
.nut-rtl .nut-fixednav-right {
right: auto;
left: 0;
}
[dir=rtl] .nut-fixednav.active .nut-icon,
.nut-rtl .nut-fixednav.active .nut-icon {
transform: rotate(0deg);
}
[dir=rtl] .nut-fixednav.active.nut-fixednav-left .nut-icon,
.nut-rtl .nut-fixednav.active.nut-fixednav-left .nut-icon {
transform: rotate(-180deg);
}
[dir=rtl] .nut-fixednav-btn,
.nut-rtl .nut-fixednav-btn {
right: auto;
left: 0;
border-radius: 0 calc(45px * var(--nut-scale-f, 1)) calc(45px * var(--nut-scale-f, 1)) 0;
}
[dir=rtl] .nut-fixednav-btn .nut-icon,
.nut-rtl .nut-fixednav-btn .nut-icon {
margin-right: 0;
margin-left: calc(5px * var(--nut-scale-f, 1));
transform: rotate(180deg);
}
[dir=rtl] .nut-fixednav-list,
.nut-rtl .nut-fixednav-list {
right: auto;
left: 0;
transform: translateX(-100%);
border-radius: 0 calc(25px * var(--nut-scale-f, 1)) calc(25px * var(--nut-scale-f, 1)) 0;
box-shadow: calc(-2px * var(--nut-scale-f, 1)) calc(2px * var(--nut-scale-f, 1)) calc(8px * var(--nut-scale-f, 1)) 0 rgba(0, 0, 0, 0.2);
padding-right: calc(20px * var(--nut-scale-f, 1));
padding-left: calc(80px * var(--nut-scale-f, 1));
}
[dir=rtl] .nut-fixednav-list-item .b,
.nut-rtl .nut-fixednav-list-item .b {
right: auto;
left: 0;
}
[dir=rtl] .nut-fixednav-left,
.nut-rtl .nut-fixednav-left {
left: auto;
right: 0;
}
[dir=rtl] .nut-fixednav-left .nut-fixednav-btn,
.nut-rtl .nut-fixednav-left .nut-fixednav-btn {
left: auto;
right: 0;
border-radius: calc(45px * var(--nut-scale-f, 1)) 0 0 calc(45px * var(--nut-scale-f, 1));
}
[dir=rtl] .nut-fixednav-left .nut-fixednav-btn .nut-icon,
.nut-rtl .nut-fixednav-left .nut-fixednav-btn .nut-icon {
transform: rotate(0deg);
margin-right: calc(5px * var(--nut-scale-f, 1));
margin-left: 0;
}
[dir=rtl] .nut-fixednav-left .nut-fixednav-list,
.nut-rtl .nut-fixednav-left .nut-fixednav-list {
transform: translateX(100%);
right: auto;
left: auto;
border-radius: calc(25px * var(--nut-scale-f, 1)) 0 0 calc(25px * var(--nut-scale-f, 1));
padding-right: calc(80px * var(--nut-scale-f, 1));
padding-left: calc(20px * var(--nut-scale-f, 1));
}
.nut-drag .nut-fixednav {
position: relative;
}