@nutui/nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
515 lines (508 loc) • 15.5 kB
CSS
@charset "UTF-8";
: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-popup {
position: fixed;
min-height: 26%;
max-height: 100%;
background-color: var(--nutui-overlay-content-bg-color, var(--nutui-color-background-overlay, #ffffff));
-webkit-overflow-scrolling: touch;
font-size: var(--nutui-font-size-base, calc(14px * var(--nut-scale-font, var(--nut-scale-f, 1))));
}
.nut-popup-title {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
border-bottom: var(--nutui-popup-title-border-bottom, 0);
padding: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
position: relative;
}
.nut-popup-title-wrapper {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.nut-popup-title-title {
color: var(--nutui-color-title, #1a1a1a);
font-weight: var(--nutui-font-weight-bold, 600);
font-size: var(--nutui-popup-title-font-size, var(--nutui-font-size-xl, calc(18px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
}
.nut-popup-title-description {
color: var(--nutui-color-text, #505259);
font-size: var(--nutui-popup-description-font-size, var(--nutui-font-size-base, calc(14px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
font-weight: var(--nutui-font-weight, 400);
}
.nut-popup-title-description-gap {
margin-top: var(--nutui-popup-description-spacing, var(--nutui-spacing-base, calc(8px * var(--nut-scale-f, 1))));
}
.nut-popup-title-left {
position: absolute;
top: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
left: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
.nut-popup-title-right {
position: absolute;
top: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
right: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
display: flex;
align-items: center;
justify-content: center;
z-index: 1;
width: var(--nutui-popup-icon-size, calc(20px * var(--nut-scale-f, 1)));
height: var(--nutui-popup-icon-size, calc(20px * var(--nut-scale-f, 1)));
color: var(--nutui-color-title, #1a1a1a);
cursor: pointer;
}
.nut-popup-title-right:active {
opacity: 0.7;
}
.nut-popup-title-right-top-left {
top: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
left: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
.nut-popup-title-right-bottom-left {
bottom: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
left: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
.nut-popup-title-right-bottom-right {
right: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
bottom: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
.nut-popup-center {
top: 50%;
left: 50%;
right: auto;
bottom: auto;
min-height: 10%;
max-width: 295px;
transform: translate(-50%, -50%);
}
.nut-popup-center.nut-popup-round {
border-radius: var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1))));
}
.nut-popup-bottom {
bottom: 0;
left: 0;
right: auto;
top: auto;
width: 100%;
}
.nut-popup-bottom.nut-popup-round {
border-radius: var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1)))) var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1)))) 0 0;
}
.nut-popup-bottom-top {
position: absolute;
}
.nut-popup-right {
top: 0;
right: 0;
left: auto;
bottom: auto;
width: 100px;
height: 100%;
}
.nut-popup-right.nut-popup-round {
border-radius: var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1)))) 0 0 var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1))));
}
.nut-popup-left {
top: 0;
left: 0;
right: auto;
bottom: auto;
width: 100px;
height: 100%;
}
.nut-popup-left.nut-popup-round {
border-radius: 0 var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1)))) var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1)))) 0;
}
.nut-popup-top {
top: 0;
left: 0;
right: auto;
bottom: auto;
width: 100%;
}
.nut-popup-top.nut-popup-round {
border-radius: 0 0 var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1)))) var(--nutui-popup-border-radius, var(--nutui-radius-xl, calc(12px * var(--nut-scale-f, 1))));
}
.nut-popup-slide {
/* 从顶部滑出 */
/* 从右侧滑出 */
/* 从底部滑出 */
/* 从左侧滑出 */
}
@keyframes popup-scale-fade-in {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
@keyframes popup-scale-fade-out {
from {
opacity: 1;
transform: scale(1);
}
to {
opacity: 0;
transform: scale(0.8);
}
}
.nut-popup-slide-none-enter-active {
animation-fill-mode: both;
animation-name: popup-scale-fade-in;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
.nut-popup-slide-none-exit-active {
animation-fill-mode: both;
animation-name: popup-scale-fade-out;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
@keyframes popup-fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes popup-fade-out {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.nut-popup-slide-center-enter-active {
animation-fill-mode: both;
animation-name: popup-fade-in;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
.nut-popup-slide-center-exit-active {
animation-fill-mode: both;
animation-name: popup-fade-out;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
@keyframes popup-slide-top-enter {
from {
transform: translate3d(0, -100%, 0);
}
to {
transform: translate3d(0, 0%, 0);
}
}
@keyframes popup-slide-top-exit {
from {
transform: translate3d(0, 0%, 0);
}
to {
transform: translate3d(0, -100%, 0);
}
}
.nut-popup-slide-top-enter-active, .nut-popup-slide-top-appear-active {
transform: translate3d(0, 0%, 0);
animation-fill-mode: both;
animation-name: popup-slide-top-enter;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
.nut-popup-slide-top-exit-active {
animation-fill-mode: both;
animation-name: popup-slide-top-exit;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
@keyframes popup-slide-right-enter {
from {
transform: translate3d(100%, 0, 0);
}
to {
transform: translate3d(0%, 0, 0);
}
}
@keyframes popup-slide-right-exit {
from {
transform: translate3d(0%, 0, 0);
}
to {
transform: translate3d(100%, 0, 0);
}
}
.nut-popup-slide-right-enter-active, .nut-popup-slide-right-appear-active {
transform: translate3d(0, 0, 0);
animation-fill-mode: both;
animation-name: popup-slide-right-enter;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
.nut-popup-slide-right-exit {
animation-fill-mode: both;
animation-name: popup-slide-right-exit;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
@keyframes popup-slide-bottom-enter {
from {
transform: translate3d(0, 100%, 0);
}
to {
transform: translate3d(0, 0%, 0);
}
}
@keyframes slide-bottom-exit {
from {
transform: translate3d(0, 0%, 0);
}
to {
transform: translate3d(0, 100%, 0);
}
}
.nut-popup-slide-bottom-enter-active, .nut-popup-slide-bottom-appear-active {
transform: translate(0, 0);
animation-fill-mode: both;
animation-name: popup-slide-bottom-enter;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
.nut-popup-slide-bottom-exit {
animation-fill-mode: both;
animation-name: slide-bottom-exit;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
@keyframes popup-slide-left-enter {
from {
transform: translate3d(-100%, 0, 0);
}
to {
transform: translate3d(0%, 0, 0);
}
}
@keyframes popup-slide-left-exit {
from {
transform: translate3d(0%, 0, 0);
}
to {
transform: translate3d(-100%, 0, 0);
}
}
.nut-popup-slide-left-enter-active, .nut-popup-slide-left-appear-active {
transform: translate(0, 0);
animation-fill-mode: both;
animation-name: popup-slide-left-enter;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
.nut-popup-slide-left-exit-active, .nut-popup-slide-left-exit-done {
animation-fill-mode: both;
animation-name: popup-slide-left-exit;
animation-duration: var(--nutui-popup-animation-duration, 0.3s);
}
.nut-popup-slide-none-exit-done.nut-popup, .nut-popup-slide-center-exit-done.nut-popup, .nut-popup-slide-left-exit-done.nut-popup, .nut-popup-slide-right-exit-done.nut-popup, .nut-popup-slide-top-exit-done.nut-popup, .nut-popup-slide-bottom-exit-done.nut-popup {
display: none;
}
.nut-popup .nut-overflow-hidden {
overflow: hidden;
}
[dir=rtl] .nut-popup-title-left,
.nut-rtl .nut-popup-title-left {
left: auto;
right: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
[dir=rtl] .nut-popup-title-right,
.nut-rtl .nut-popup-title-right {
right: auto;
left: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
[dir=rtl] .nut-popup-title-right-top-left,
.nut-rtl .nut-popup-title-right-top-left {
left: auto;
right: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
[dir=rtl] .nut-popup-title-right-bottom-left,
.nut-rtl .nut-popup-title-right-bottom-left {
left: auto;
right: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
[dir=rtl] .nut-popup-title-right-bottom-right,
.nut-rtl .nut-popup-title-right-bottom-right {
right: auto;
left: var(--nutui-popup-title-padding, calc(16px * var(--nut-scale-f, 1)));
}
[dir=rtl] .nut-popup-title .nut-icon-ArrowLeft,
.nut-rtl .nut-popup-title .nut-icon-ArrowLeft {
transform: rotate(180deg);
}
[dir=rtl] .nut-popup-center,
.nut-rtl .nut-popup-center {
left: auto;
right: 50%;
transform: translate(50%, -50%);
}
[dir=rtl] .nut-popup-bottom,
.nut-rtl .nut-popup-bottom {
left: auto;
right: 0;
}
[dir=rtl] .nut-popup-top,
.nut-rtl .nut-popup-top {
left: auto;
right: 0;
}
.nut-quickenter {
width: 100%;
/* 限制弹层最大高度,包含安全区 */
max-height: calc(var(--nutui-quickenter-max-height, calc(256px * var(--nut-scale-f, 1))) + env(safe-area-inset-top, 0));
background: var(--nutui-quickenter-bg-color, #f5f5f5);
border-radius: 0 0 calc(12px * var(--nut-scale-f, 1)) calc(12px * var(--nut-scale-f, 1));
overflow: hidden;
box-sizing: border-box;
display: flex;
flex-direction: column;
box-shadow: var(--nutui-quickenter-box-shadow, 0px calc(8px * var(--nut-scale-f, 1)) calc(16px * var(--nut-scale-f, 1)) rgba(141, 153, 167, 0.2), 0px calc(-0.5px * var(--nut-scale-f, 1)) 0px calc(0.05 * var(--nut-scale-f, 1)) inset);
}
.nut-quickenter.safe-area-top {
/* 使用 env fallback,确保旧浏览器返回 0 */
padding-top: calc(env(safe-area-inset-top, 0) * var(--nutui-safe-area-multiple, 1));
}
.nut-quickenter-control {
display: flex;
align-items: center;
justify-content: space-between;
padding: calc(30px * var(--nut-scale-f, 1)) calc(16px * var(--nut-scale-f, 1)) 0;
box-sizing: border-box;
}
.nut-quickenter-title {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: left;
color: var(--nutui-quickenter-title-color, var(--nutui-color-title, #1a1a1a));
font-size: var(--nutui-quickenter-title-font-size, var(--nutui-font-size-base, calc(14px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
}
.nut-quickenter-close-btn {
color: var(--nutui-quickenter-close-icon-color, #808080);
display: flex;
align-items: center;
justify-content: center;
}
.nut-quickenter-close-btn svg,
.nut-quickenter-close-btn .nut-icon {
width: var(--nutui-quickenter-close-icon-size, var(--nutui-icon-size-12, calc(12px * var(--nut-scale-icon, var(--nut-scale-f, 1)))));
height: var(--nutui-quickenter-close-icon-size, var(--nutui-icon-size-12, calc(12px * var(--nut-scale-icon, var(--nut-scale-f, 1)))));
}
.nut-quickenter-content {
flex: 1;
padding: calc(10px * var(--nut-scale-f, 1)) calc(28px * var(--nut-scale-f, 1));
overflow-y: hidden;
box-sizing: border-box;
}
.nut-quickenter-content-scrollable {
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.nut-quickenter-list {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
width: 100%;
}
.nut-quickenter-item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
width: calc(56px * var(--nut-scale-f, 1));
padding: 0 0 calc(12px * var(--nut-scale-f, 1)) 0;
box-sizing: border-box;
cursor: pointer;
margin-right: calc((100% - 224px * var(--nut-scale-f, 1)) / 3);
}
.nut-quickenter-item:nth-child(4n) {
margin-right: 0;
}
.nut-quickenter-item-icon {
width: calc(56px * var(--nut-scale-f, 1));
height: calc(56px * var(--nut-scale-f, 1));
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: var(--nutui-quickenter-item-icon-bg-color, #ffffff);
color: var(--nutui-quickenter-item-icon-color, var(--nutui-color-title, #1a1a1a));
margin-bottom: calc(8px * var(--nut-scale-f, 1));
flex-shrink: 0;
}
.nut-quickenter-item-icon svg,
.nut-quickenter-item-icon .nut-icon {
width: var(--nutui-icon-size-22, calc(22px * var(--nut-scale-icon, var(--nut-scale-f, 1))));
height: var(--nutui-icon-size-22, calc(22px * var(--nut-scale-icon, var(--nut-scale-f, 1))));
}
.nut-quickenter-item-title {
font-size: var(--nutui-quickenter-item-title-font-size, var(--nutui-font-size-s, calc(12px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
color: var(--nutui-quickenter-item-title-color, var(--nutui-color-title, #1a1a1a));
text-align: center;
line-height: var(--nutui-line-height-md, var(--nutui-font-size-md, calc(16px * var(--nut-scale-font, var(--nut-scale-f, 1)))));
white-space: normal;
word-wrap: break-word;
width: calc(72px * var(--nut-scale-f, 1));
margin-left: calc(-8px * var(--nut-scale-f, 1));
margin-right: calc(-8px * var(--nut-scale-f, 1));
}