$direction: top, right, bottom, left; body { // 全局灰白效果 /* filter: grayscale(100%); -webkit-filter: grayscale(100%); */ background-color: $tn-bg-color; /* background-color: #ffffff; */ font-size: 28rpx; color: $tn-font-color; font-family: Helvetica Neue, Helvetica, sans-serif; // 修复点击view标签的时候会有蓝色遮罩 -webkit-tap-highlight-color: rgba(0,0,0,0); } view, scroll-view, swiper, button, input, textarea, label, navigator, image { box-sizing: border-box; } button::after { border: none; } .tn-round { border-radius: 5000rpx !important; } .tn-radius { border-radius: 6rpx; } /* 基本样式 start */ .tn-width-full { width: 100%; } .tn-height-full { height: 100%; } /* 基本样式 end */ /* 边框 start */ .tn-border-solid, .tn-border-solid-top, .tn-border-solid-right, .tn-border-solid-bottom, .tn-border-solid-left, .tn-border-solids, .tn-border-solids-top, .tn-border-solids-right, .tn-border-solids-bottom, .tn-border-solids-left, .tn-border-dashed, .tn-border-dashed-top, .tn-border-dashed-right, .tn-border-dashed-bottom, .tn-border-dashed-left { border-radius: inherit; box-sizing: border-box; } @for $i from 0 to length($direction) + 1 { @if $i == 0 { .tn-border-solid { border-width: 1rpx !important; border-style: solid; border-color: $tn-border-solid-color; &.tn-bold-border { border-width: 6rpx !important; } } .tn-border-solids { border-width: 1rpx !important; border-style: solid; border-color: $tn-border-solids-color; &.tn-bold-border { border-width: 6rpx !important; } } .tn-border-dashed { border-width: 1rpx !important; border-style: dashed; border-color: $tn-border-dashed-color; &.tn-bold-border { border-width: 6rpx !important; } } } @else { .tn-border-solid-#{nth($direction, $i)} { border: 0rpx; border-#{nth($direction, $i)}-width: 1rpx !important; border-style: solid; border-color: $tn-border-solid-color; &.tn-bold-border { border-#{nth($direction, $i)}-width: 6rpx !important; } } .tn-border-solids-#{nth($direction, $i)} { border: 0rpx; border-#{nth($direction, $i)}-width: 1rpx !important; border-style: solid; border-color: $tn-border-solids-color; &.tn-bold-border { border-#{nth($direction, $i)}-width: 6rpx !important; } } .tn-border-dashed-#{nth($direction, $i)} { border: 0rpx; border-#{nth($direction, $i)}-width: 1rpx !important; border-style: dashed; border-color: $tn-border-dashed-color; &.tn-bold-border { border-#{nth($direction, $i)}-width: 6rpx !important; } } } } .tn-none-border.tn-border-solid, .tn-none-border.tn-border-solid-top, .tn-none-border.tn-border-solid-right, .tn-none-border.tn-border-solid-bottom, .tn-none-border.tn-border-solid-left, .tn-none-border.tn-border-solids, .tn-none-border.tn-border-solids-top, .tn-none-border.tn-border-solids-right, .tn-none-border.tn-border-solids-bottom, .tn-none-border.tn-border-solids-left, .tn-none-border.tn-border-dashed, .tn-none-border.tn-border-dashed-top, .tn-none-border.tn-border-dashed-right, .tn-none-border.tn-border-dashed-bottom, .tn-none-border.tn-border-dashed-left { border: 0 !important; } .tn-none-border-top.tn-border-solid, .tn-none-border-top.tn-border-solid-top, .tn-none-border-top.tn-border-solid-right, .tn-none-border-top.tn-border-solid-bottom, .tn-none-border-top.tn-border-solid-left, .tn-none-border-top.tn-border-solids, .tn-none-border-top.tn-border-solids-top, .tn-none-border-top.tn-border-solids-right, .tn-none-border-top.tn-border-solids-bottom, .tn-none-border-top.tn-border-solids-left, .tn-none-border-top.tn-border-dashed, .tn-none-border-top.tn-border-dashed-top, .tn-none-border-top.tn-border-dashed-right, .tn-none-border-top.tn-border-dashed-bottom, .tn-none-border-top.tn-border-dashed-left { /* height: 0 !important; */ border-top: 0 !important; } .tn-none-border-right.tn-border-solid, .tn-none-border-right.tn-border-solid-top, .tn-none-border-right.tn-border-solid-right, .tn-none-border-right.tn-border-solid-bottom, .tn-none-border-right.tn-border-solid-left, .tn-none-border-right.tn-border-solids, .tn-none-border-right.tn-border-solids-top, .tn-none-border-right.tn-border-solids-right, .tn-none-border-right.tn-border-solids-bottom, .tn-none-border-right.tn-border-solids-left, .tn-none-border-right.tn-border-dashed, .tn-none-border-right.tn-border-dashed-top, .tn-none-border-right.tn-border-dashed-right, .tn-none-border-right.tn-border-dashed-bottom, .tn-none-border-right.tn-border-dashed-left { /* width: 0 !important; */ border-right: 0 !important; } .tn-none-border-bottom.tn-border-solid, .tn-none-border-bottom.tn-border-solid-top, .tn-none-border-bottom.tn-border-solid-right, .tn-none-border-bottom.tn-border-solid-bottom, .tn-none-border-bottom.tn-border-solid-left, .tn-none-border-bottom.tn-border-solids, .tn-none-border-bottom.tn-border-solids-top, .tn-none-border-bottom.tn-border-solids-right, .tn-none-border-bottom.tn-border-solids-bottom, .tn-none-border-bottom.tn-border-solids-left, .tn-none-border-bottom.tn-border-dashed, .tn-none-border-bottom.tn-border-dashed-top, .tn-none-border-bottom.tn-border-dashed-right, .tn-none-border-bottom.tn-border-dashed-bottom, .tn-none-border-bottom.tn-border-dashed-left { /* height: 0 !important; */ border-bottom: 0 !important; } .tn-none-border-left.tn-border-solid, .tn-none-border-left.tn-border-solid-top, .tn-none-border-left.tn-border-solid-right, .tn-none-border-left.tn-border-solid-bottom, .tn-none-border-left.tn-border-solid-left, .tn-none-border-left.tn-border-solids, .tn-none-border-left.tn-border-solids-top, .tn-none-border-left.tn-border-solids-right, .tn-none-border-left.tn-border-solids-bottom, .tn-none-border-left.tn-border-solids-left, .tn-none-border-left.tn-border-dashed, .tn-none-border-left.tn-border-dashed-top, .tn-none-border-left.tn-border-dashed-right, .tn-none-border-left.tn-border-dashed-bottom, .tn-none-border-left.tn-border-dashed-left { /* width: 0 !important; */ border-left: 0 !important; } /* 边框 end */ /* 阴影 start */ .tn-shadow { box-shadow: 6rpx 6rpx 8rpx $tn-shadow-color; } .tn-shadow-warp { position: relative; box-shadow: 0 0 10rpx $tn-shadow-color; } .tn-shadow-warp::before, .tn-shadow-warp::after { content: " "; position: absolute; top: 20rpx; bottom: 30rpx; left: 20rpx; width: 50%; box-shadow: 0 30rpx 20rpx $tn-box-shadow-color; transform: rotate(-3deg); z-index: -1; } .tn-shadow-warp::after { right: 20rpx; left: auto; transform: rotate(3deg); } .tn-shadow-blur { position: relative; } .tn-shadow-blur::before { content: " "; display: block; background: inherit; filter: blur(10rpx); position: absolute; width: 100%; height: 100%; top: 10rpx; left: 10rpx; z-index: -1; opacity: 0.4; transform-origin: 0 0; border-radius: inherit; transform: scale(1, 1); } /* 阴影 end */ /* flex start */ .tn-flex { display: -webkit-flex; display: flex; } /* flex伸缩基准值 */ .tn-flex-basic-xs { flex-basis: 20%; } .tn-flex-basic-sm { flex-basis: 40%; } .tn-flex-basic-md { flex-basis: 50%; } .tn-flex-basic-lg { flex-basis: 60%; } .tn-flex-basic-xl { flex-basis: 80%; } .tn-flex-basic-full { flex-basis: 100%; } /* flex布局的方向 */ .tn-flex-direction-column { flex-direction: column; } .tn-flex-direction-row { flex-direction: row; } .tn-flex-direction-column-reverse { flex-direction: column-reverse; } .tn-flex-direction-row-reverse { flex-direction: row-reverse; } /* flex容器设置换行 */ .tn-flex-wrap { flex-wrap: wrap; } .tn-flex-nowrap { flex-wrap: nowrap; } /* flex容器自身垂直方向对齐方式 */ .tn-flex-center { align-self: center; } .tn-flex-top { align-self: flex-start; } .tn-flex-end { align-self: flex-end; } .tn-flex-stretch { align-self: stretch; } /* flex子元素垂直方向对齐方式 */ .tn-flex-col-center { align-items: center; } .tn-flex-col-top { align-items: flex-start; } .tn-flex-col-bottom { align-items: flex-end; } /* flex子元素水平方向对齐方式 */ .tn-flex-row-center { justify-content: center; } .tn-flex-row-left { justify-content: flex-start; } .tn-flex-row-right { justify-content: flex-end; } .tn-flex-row-between { justify-content: space-between; } .tn-flex-row-around { justify-content: space-around; } /* flex子元素空间分配 */ @for $i from 0 to 12 { .tn-flex-#{$i} { flex: $i; } } .tn-col-12 { width: 100%; } .tn-col-11 { width: 91.66666667%; } .tn-col-10 { width: 83.33333333%; } .tn-col-9 { width: 75%; } .tn-col-8 { width: 66.66666667%; } .tn-col-7 { width: 58.33333333%; } .tn-col-6 { width: 50%; } .tn-col-5 { width: 41.66666667%; } .tn-col-4 { width: 33.33333333%; } .tn-col-3 { width: 25%; } .tn-col-2 { width: 16.66666667%; } .tn-col-1 { width: 8.33333333%; } /* flex end */ /* 内边距 start */ @for $i from 0 to length($direction) + 1 { @if $i == 0 { .tn-no-margin { margin: 0; } .tn-margin-xs { margin: 10rpx; } .tn-margin-sm { margin: 20rpx; } .tn-margin { margin: 30rpx; } .tn-margin-lg { margin: 40rpx; } .tn-margin-xl { margin: 50rpx; } } @else { .tn-no-margin-#{nth($direction, $i)} { margin-#{nth($direction, $i)}: 0; } .tn-margin-#{nth($direction, $i)}-xs { margin-#{nth($direction, $i)}: 10rpx; } .tn-margin-#{nth($direction, $i)}-sm { margin-#{nth($direction, $i)}: 20rpx; } .tn-margin-#{nth($direction, $i)} { margin-#{nth($direction, $i)}: 30rpx; } .tn-margin-#{nth($direction, $i)}-lg { margin-#{nth($direction, $i)}: 40rpx; } .tn-margin-#{nth($direction, $i)}-xl { margin-#{nth($direction, $i)}: 50rpx; } } } /* 内边距 end */ /* 外边距 start */ @for $i from 0 to length($direction) + 1 { @if $i == 0 { .tn-no-padding { padding: 0; } .tn-padding-xs { padding: 10rpx; } .tn-padding-sm { padding: 20rpx; } .tn-padding { padding: 30rpx; } .tn-padding-lg { padding: 40rpx; } .tn-padding-xl { padding: 50rpx; } } @else { .tn-no-padding-#{nth($direction, $i)} { padding-#{nth($direction, $i)}: 0; } .tn-padding-#{nth($direction, $i)}-xs { padding-#{nth($direction, $i)}: 10rpx; } .tn-padding-#{nth($direction, $i)}-sm { padding-#{nth($direction, $i)}: 20rpx; } .tn-padding-#{nth($direction, $i)} { padding-#{nth($direction, $i)}: 30rpx; } .tn-padding-#{nth($direction, $i)}-lg { padding-#{nth($direction, $i)}: 40rpx; } .tn-padding-#{nth($direction, $i)}-xl { padding-#{nth($direction, $i)}: 50rpx; } } } /* 外边距 end */ /* float start */ .tn-float-left { float: left; } .tn-float-right { float: right; } .tn-clear-float { clear: both; } .tn-clear-float::after, .tn-clear-float::before { content: " "; display: table; clear: both; } /* float end */ /* 文本 start */ .tn-text-xs { font-size: 20rpx; } .tn-text-sm { font-size: 24rpx; } .tn-text-md { font-size: 28rpx; } .tn-text-lg { font-size: 32rpx; } .tn-text-xl { font-size: 36rpx; } .tn-text-xxl { font-size: 40rpx; } .tn-text-xl-xxl { font-size: 80rpx; } .tn-text-xxl-xxl { font-size: 120rpx; } .tn-text-upper { text-transform: uppercase; } .tn-text-cap { text-transform: capitalize; } .tn-text-lower { text-transform: lowercase; } .tn-text-bold { font-weight: bold; } .tn-text-center { text-align: center; } .tn-text-left { text-align: left; } .tn-text-right { text-align: right; } .tn-text-justify { text-align: justify; } .tn-text-content { line-height: 1.6; } .tn-text-ellipsis { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .tn-text-ellipsis-2 { display: -webkit-box; overflow: hidden; white-space: normal !important; text-overflow: ellipsis; word-wrap: break-word; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .tn-text-ellipsis-3 { display: -webkit-box; overflow: hidden; white-space: normal !important; text-overflow: ellipsis; word-wrap: break-word; -webkit-line-clamp: 3; -webkit-box-orient: vertical; } .tn-text-clip { -webkit-background-clip: text; color: transparent !important; } .tn-text-break-word { word-wrap: break-word; } /* 文本 end */ /* hover 点击效果 start */ .tn-hover { opacity: 0.6; } /* hover 点击效果 end */ /* 去除原生button样式 start */ .tn-button--clear-style { background-color: transparent; padding: 0; margin: 0; font-size: inherit; line-height: inherit; border-radius: inherit; color: inherit; } /* 去除原生button样式 end */ /* 头像组 start */ // .tn-avatar-group { // direction: rtl; // unicode-bidi: bidi-override; // padding: 0 10rpx 0 40rpx; // display: inline-block; // .tn-avatar { // margin-left: -30rpx !important; // border: 4rpx solid $tn-border-solid-color; // vertical-align: middle; // &--sm { // margin-left: -20rpx !important; // border: 1rpx solid $tn-border-solid-color; // } // } // } /* 头像组 end */ /* 提升H5端uni.toast()的层级,避免被tn-modal等遮盖 start */ /* #ifdef H5 */ uni-toast { z-index: 10090; } uni-toast .uni-toast { z-index: 10090; } /* #endif */ /* 提升H5端uni.toast()的层级,避免被tn-modal等遮盖 end */ /* iPhoneX底部安全区定义 start */ .tn-safe-area-inset-bottom { padding-bottom: 0; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } /* iPhoneX底部安全区定义 end */