620 lines
14 KiB
SCSS
620 lines
14 KiB
SCSS
// thinco样式库
|
||
|
||
/* ============ 初始化 ============*/
|
||
page {
|
||
background-color: #fff;
|
||
font-size: 24rpx;
|
||
}
|
||
|
||
/* ============ 样式 ============*/
|
||
// 状态栏高度
|
||
.status-bar {height: var(--status-bar-height);width: 100%;}
|
||
// 内容区域距离顶部的距离
|
||
.window-top {height: var(--window-top);width: 100%;}
|
||
// 内容区域距离底部的距离
|
||
.window-bottom {height: var(--window-bottom);width: 100%;}
|
||
|
||
// 页面
|
||
.wrap-page {
|
||
display: flex;
|
||
flex: 1;
|
||
flex-direction: column;
|
||
background-color: #F4F6F6;
|
||
}
|
||
|
||
// 卡片
|
||
.wrap-card {
|
||
background-color: #FFFFFF;
|
||
padding: 20rpx;
|
||
border-radius: 10rpx;
|
||
}
|
||
|
||
// 列表
|
||
.wrap-list {
|
||
padding: 20rpx;
|
||
.list-title {
|
||
font-size: 36rpx;
|
||
color: #000000;
|
||
display: flex;
|
||
font-weight: 500;
|
||
flex-direction: row;
|
||
margin-bottom: 16rpx;
|
||
}
|
||
.list-content {
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
}
|
||
}
|
||
|
||
// 标签
|
||
.wrap-tag {
|
||
display: inline-block;
|
||
border-radius: 5rpx;
|
||
padding: 5rpx;
|
||
&.tag-dark {
|
||
border: 1px solid #303133;
|
||
color: #606266;
|
||
&.plain {
|
||
background-color: #F0F0F0;
|
||
}
|
||
}
|
||
&.tag-blue {
|
||
border: 1px solid #4AA3FF;
|
||
color: #3C9CFF;
|
||
&.plain {
|
||
background-color: #ECF5FF;
|
||
}
|
||
}
|
||
&.tag-green {
|
||
border: 1px solid #5AC725;
|
||
color: #73CF45;
|
||
&.plain {
|
||
background-color: #ECFDF5;
|
||
}
|
||
}
|
||
&.tag-red {
|
||
border: 1px solid #F56C6C;
|
||
color: #F67979;
|
||
&.plain {
|
||
background-color: #FEF0F0;
|
||
}
|
||
}
|
||
&.tag-yellow {
|
||
border: 1px solid #F9AE3D;
|
||
color: #F9AE3D;
|
||
&.plain {
|
||
background-color: #FDF6EC;
|
||
}
|
||
}
|
||
}
|
||
|
||
// 底部操作栏
|
||
.wrap-bottom-bar {
|
||
|
||
// 操作栏占位符
|
||
.bar-placeholder {
|
||
height: 100rpx;
|
||
width: 100%;
|
||
}
|
||
// 操作栏内容
|
||
.bar-content {
|
||
background-color: #fff;
|
||
border-top: 2rpx solid $uni-border-color2;
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
height: 85rpx;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
}
|
||
|
||
/* ============ 颜色 ============*/
|
||
// 常用颜色
|
||
$border-color: #E5E7EB; // 主边框颜色(灰色)
|
||
|
||
// 其他颜色
|
||
$color:(
|
||
// 灰色
|
||
gray-50:#F9FAFB,
|
||
gray-100:#F3F4F6,
|
||
gray-200:#E5E7EB,
|
||
gray-300:#D1D5DB,
|
||
gray-400:#9CA3AF,
|
||
gray-500:#6B7280,
|
||
gray-600:#4B5563,
|
||
gray-700:#374151,
|
||
gray-800:#1F2937,
|
||
gray-900:#111827,
|
||
// 红色
|
||
red-50:#FEF2F2,
|
||
red-100:#FEE2E2,
|
||
red-200:#FECACA,
|
||
red-300:#FCA5A5,
|
||
red-400:#F87171,
|
||
red-500:#EF4444,
|
||
red-600:#DC2626,
|
||
red-700:#B91C1C,
|
||
red-800:#991B1B,
|
||
red-900:#7F1D1D,
|
||
// 黄色
|
||
yellow-50:#FFFBEB,
|
||
yellow-100:#FEF3C7,
|
||
yellow-200:#FDE68A,
|
||
yellow-300:#FCD34D,
|
||
yellow-400:#FBBF24,
|
||
yellow-500:#F59E0B,
|
||
yellow-600:#D97706,
|
||
yellow-700:#B45309,
|
||
yellow-800:#92400E,
|
||
yellow-900:#78350F,
|
||
// 橘色
|
||
orange-50:#fff7ed,
|
||
orange-100:#ffedd5,
|
||
orange-200:#fed7aa,
|
||
orange-300:#fdba74,
|
||
orange-400:#fb923c,
|
||
orange-500:#f97316,
|
||
orange-600:#ea580c,
|
||
orange-700:#c2410c,
|
||
orange-800:#9a3412,
|
||
orange-900:#7c2d12,
|
||
// 绿色
|
||
green-50:#ECFDF5,
|
||
green-100:#D1FAE5,
|
||
green-200:#A7F3D0,
|
||
green-300:#6EE7B7,
|
||
green-400:#34D399,
|
||
green-500:#10B981,
|
||
green-600:#059669,
|
||
green-700:#047857,
|
||
green-800:#065F46,
|
||
green-900:#064E3B,
|
||
// 蓝色
|
||
blue-50:#EFF6FF,
|
||
blue-100:#DBEAFE,
|
||
blue-200:#BFDBFE,
|
||
blue-300:#93C5FD,
|
||
blue-400:#60A5FA,
|
||
blue-500:#3B82F6,
|
||
blue-600:#2563EB,
|
||
blue-700:#1D4ED8,
|
||
blue-800:#1E40AF,
|
||
blue-900:#1E3A8A,
|
||
// 紫色
|
||
purple-50:#F5F3FF,
|
||
purple-100:#EDE9FE,
|
||
purple-200:#DDD6FE,
|
||
purple-300:#C4B5FD,
|
||
purple-400:#A78BFA,
|
||
purple-500:#8B5CF6,
|
||
purple-600:#7C3AED,
|
||
purple-700:#6D28D9,
|
||
purple-800:#5B21B6,
|
||
purple-900:#4C1D95,
|
||
// 粉色
|
||
pink-50:#fdf2f8,
|
||
pink-100:#fce7f3,
|
||
pink-200:#fbcfe8,
|
||
pink-300:#f9a8d4,
|
||
pink-400:#f472b6,
|
||
pink-500:#ec4899,
|
||
pink-600:#db2777,
|
||
pink-700:#be185d,
|
||
pink-800:#9d174d,
|
||
pink-900:#831843
|
||
);
|
||
// 文本、边框、背景
|
||
@each $key,$val in $color {
|
||
//文本颜色
|
||
.text-#{$key} {
|
||
color: #{$val}!important;
|
||
}
|
||
//边框颜色
|
||
.border-#{$key} {
|
||
border-color: #{$val}!important;
|
||
}
|
||
//背景颜色
|
||
.bg-#{$key} {
|
||
background-color: #{$val}!important;
|
||
}
|
||
}
|
||
// 文本/图标/背景
|
||
.text-green {color: #01906c;}
|
||
.text-white {color: #fff;}
|
||
.text-black {color: #000;}
|
||
.text-blue {color: #279cff;}
|
||
.text-gray {color: #9CA3AF;}
|
||
.text-yellow {color: #FAAD14;}
|
||
.text-red {color: #e45656;}
|
||
.bg-white {background-color: #fff;}
|
||
.bg-blue {background-color: #279cff;}
|
||
.bg-gray {background-color: #F2F2F2;}
|
||
|
||
/* ============ 布局 ============*/
|
||
|
||
// box
|
||
.box-border { box-sizing: border-box;}
|
||
.box-content { box-sizing: content-box;}
|
||
// 显示
|
||
.block { display: block !important;}
|
||
.inline-block { display: inline-block !important;}
|
||
.inline { display: inline;}
|
||
.flex { display: flex !important;}
|
||
.hidden { display: none !important;}
|
||
// 溢出
|
||
.overflow-hidden { overflow: hidden;}
|
||
.overflow-scroll { overflow: scroll;}
|
||
.overflow-x-hidden { overflow-x: hidden;}
|
||
.overflow-y-hidden { overflow-y: hidden;}
|
||
.overflow-x-scroll { overflow-x: scroll;}
|
||
.overflow-y-scroll { overflow-y: scroll;}
|
||
// 定位
|
||
.static { position: static;}
|
||
.relative{ position: relative;}
|
||
.absolute{ position: absolute;}
|
||
.fixed{ position: fixed;}
|
||
.sticky{ position: static;}
|
||
.top-0{ top: 0; }
|
||
.right-0{ right: 0; }
|
||
.bottom-0{ bottom: 0; }
|
||
.left-0{ left: 0; }
|
||
.top-10{ top: 10rpx; }
|
||
.right-10{ right: 10rpx; }
|
||
.bottom-10{ bottom: 10rpx; }
|
||
.left-10{ left: 10rpx; }
|
||
.top-20{ top: 20rpx; }
|
||
.right-20{ right: 20rpx; }
|
||
.bottom-20{ bottom: 20rpx; }
|
||
.left-20{ left: 20rpx; }
|
||
.top-1-2{ top: 50%; }
|
||
.top-1-3{ top: 33.333333%; }
|
||
.top-2-3{ top: 66.666667%; }
|
||
.top-1-4{ top: 25%; }
|
||
.top-2-4{ top: 50%; }
|
||
.top-3-4{ top: 75%; }
|
||
.top-full{ top: 100%; }
|
||
.right-1-2{ right: 50%; }
|
||
.right-1-3{ right: 33.333333%; }
|
||
.right-2-3{ right: 66.666667%; }
|
||
.right-1-4{ right: 25%; }
|
||
.right-2-4{ right: 50%; }
|
||
.right-3-4{ right: 75%; }
|
||
.right-full{ right: 100%; }
|
||
.bottom-1-2{ bottom: 50%; }
|
||
.bottom-1-3{ bottom: 33.333333%; }
|
||
.bottom-2-3{ bottom: 66.666667%; }
|
||
.bottom-1-4{ bottom: 25%; }
|
||
.bottom-2-4{ bottom: 50%; }
|
||
.bottom-3-4{ bottom: 75%; }
|
||
.bottom-full{ bottom: 100%; }
|
||
.left-1-2{ left: 50%; }
|
||
.left-1-3{ left: 33.333333%; }
|
||
.left-2-3{ left: 66.666667%; }
|
||
.left-1-4{ left: 25%; }
|
||
.left-2-4{ left: 50%; }
|
||
.left-3-4{ left: 75%; }
|
||
.left-full{ left: 100%; }
|
||
// 可见性
|
||
.visible { visibility: visible;}
|
||
.invisible { visibility: hidden;}
|
||
// 优先级
|
||
.z-0 { z-index: 0;}
|
||
.z-10 { z-index: 10;}
|
||
.z-20 { z-index: 20;}
|
||
.z-30 { z-index: 30;}
|
||
.z-40 { z-index: 40;}
|
||
.z-50 { z-index: 50;}
|
||
.z-auto { z-index: auto;}
|
||
|
||
// FLEXBOX 布局
|
||
|
||
// 方向
|
||
.flex-row { flex-direction: row !important;}
|
||
.flex-row-reverse { flex-direction: row-reverse !important;}
|
||
.flex-col { flex-direction: column !important;}
|
||
.flex-col-reverse { flex-direction: column-reverse !important;}
|
||
// 换行
|
||
.flex-wrap { flex-wrap: wrap !important;}
|
||
.flex-wrap-reverse { flex-wrap: wrap-reverse !important;}
|
||
.flex-nowrap { flex-wrap: nowrap !important;}
|
||
// 控制 flex 项目放大和缩小
|
||
.flex-1 { flex: 1 1 0% !important;}
|
||
.flex-none { flex: none !important;}
|
||
// 控制 flex 项目放大的功能类
|
||
.flex-grow-0 { flex-grow: 0 !important;}
|
||
.flex-grow { flex-grow: 1 !important;}
|
||
// 控制 flex 项目缩小的功能类
|
||
.flex-shrink-0 { flex-shrink: 0 !important;}
|
||
.flex-shrink { flex-shrink: 1 !important;}
|
||
// justify-content用于控制 flex 和 grid 项目如何沿着容器的主轴定位的功能类
|
||
.justify-start { justify-content: flex-start !important;}
|
||
.justify-end { justify-content: flex-end !important;}
|
||
.justify-center { justify-content: center !important;}
|
||
.justify-between { justify-content: space-between !important;}
|
||
.justify-around { justify-content: space-around !important;}
|
||
.justify-evenly { justify-content: space-evenly !important;}
|
||
// align-items用于控制 Flex 和网格项如何沿着容器的横轴定位的功能类
|
||
.items-start { align-items: flex-start !important;}
|
||
.items-end {align-items: flex-end !important;}
|
||
.items-center {align-items: center !important;}
|
||
.items-baseline { align-items: baseline !important;}
|
||
.items-stretch { align-items: stretch !important;}
|
||
|
||
/* ============ 间距 ============*/
|
||
|
||
// 上下左右的内外边距:0 - 80(递增数:2,含尾数为5的数)
|
||
@for $i from 0 through 80 {
|
||
// 只要双数和能被5除尽的数
|
||
@if $i % 2 == 0 or $i % 5 == 0 {
|
||
// 定义外边距,结果如:m-30
|
||
.m-#{$i} {
|
||
margin: $i + rpx!important;
|
||
}
|
||
// 定义内边距,结果如:p-30
|
||
.p-#{$i} {
|
||
padding: $i + rpx!important;
|
||
}
|
||
@each $short, $long in l left, t top, r right, b bottom {
|
||
// 定义外边距,结果如: ml-30
|
||
.m#{$short}-#{$i} {
|
||
margin-#{$long}: $i + rpx!important;
|
||
}
|
||
// 定义内边距
|
||
.p#{$short}-#{$i} {
|
||
padding-#{$long}: $i + rpx!important;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
// 水平和垂直的内外边距:0 - 80(递增数:5)
|
||
@for $i from 0 through 16 {
|
||
$var: $i * 5;
|
||
.mx-#{$var} {
|
||
margin-left: $var + rpx!important;
|
||
margin-right: $var + rpx!important;
|
||
}
|
||
.my-#{$var} {
|
||
margin-top: $var + rpx!important;
|
||
margin-bottom: $var + rpx!important;
|
||
}
|
||
.px-#{$var} {
|
||
padding-left: $var + rpx!important;
|
||
padding-right: $var + rpx!important;
|
||
}
|
||
.py-#{$var} {
|
||
padding-top: $var + rpx!important;
|
||
padding-bottom: $var + rpx!important;
|
||
}
|
||
}
|
||
// 自动填充的内外边距
|
||
@each $short, $long in l left, t top, r right, b bottom {
|
||
// 定义外边距
|
||
.m#{$short}-auto {
|
||
margin-#{$long}: auto!important;
|
||
}
|
||
// 定义内边距
|
||
.p#{$short}-auto {
|
||
padding-#{$long}: auto!important;
|
||
}
|
||
}
|
||
.mx-auto {
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
.my-auto {
|
||
margin-top: auto;
|
||
margin-bottom: auto;
|
||
}
|
||
|
||
/* ============ 尺寸 ============*/
|
||
|
||
// 高度
|
||
.h-1-2 { height: 50%;}
|
||
.h-1-3 { height: 33.333333%;}
|
||
.h-2-3 { height: 66.666667%;}
|
||
.h-1-4 { height: 25%;}
|
||
.h-2-4 { height: 50%;}
|
||
.h-3-4 { height: 75%;}
|
||
.h-1-5 { height: 20%;}
|
||
.h-2-5 { height: 40%;}
|
||
.h-3-5 { height: 60%;}
|
||
.h-4-5 { height: 80%;}
|
||
.h-1-6 { height: 16.666667%;}
|
||
.h-2-6 { height: 33.333333%;}
|
||
.h-3-6 { height: 50%;}
|
||
.h-4-6 { height: 66.666667%;}
|
||
.h-5-6 { height: 83.333333%;}
|
||
.h-full{ height: 100%;}
|
||
.h-screen{ height: 100vh;}
|
||
// 宽度
|
||
.w-1-2 { width: 50%;}
|
||
.w-1-3 { width: 33.333333%;}
|
||
.w-2-3 { width: 66.666667%;}
|
||
.w-1-4 { width: 25%;}
|
||
.w-2-4 { width: 50%;}
|
||
.w-3-4 { width: 75%;}
|
||
.w-1-5 { width: 20%;}
|
||
.w-2-5 { width: 40%;}
|
||
.w-3-5 { width: 60%;}
|
||
.w-4-5 { width: 80%;}
|
||
.w-1-6 { width: 16.666667%;}
|
||
.w-2-6 { width: 33.333333%;}
|
||
.w-3-6 { width: 50%;}
|
||
.w-4-6 { width: 66.666667%;}
|
||
.w-5-6 { width: 83.333333%;}
|
||
.w-1-12 { width: 8.333333%;}
|
||
.w-2-12 { width: 16.666667%;}
|
||
.w-3-12 { width: 25%;}
|
||
.w-4-12 { width: 33.333333%;}
|
||
.w-5-12 { width: 41.666667%;}
|
||
.w-6-12 { width: 50%;}
|
||
.w-7-12 { width: 58.333333%;}
|
||
.w-8-12 { width: 66.666667%;}
|
||
.w-9-12 { width: 75%}
|
||
.w-10-12 { width: 83.333333%;}
|
||
.w-11-12 { width: 91.666667%;}
|
||
.w-full{ width: 100%;}
|
||
.w-screen{ width: 100vh;}
|
||
|
||
@for $i from 1 through 10 {
|
||
$var: $i * 10;
|
||
.w-#{$var} {
|
||
width: #{$var+'%'};
|
||
}
|
||
}
|
||
@for $i from 1 through 19 {
|
||
$var: $i * 5;
|
||
.w-#{$var} {
|
||
width: #{$var+'%'};
|
||
}
|
||
}
|
||
|
||
|
||
/* ============ 字体文本 ============*/
|
||
|
||
// 大小
|
||
// 数值形式(取偶数)
|
||
@for $i from 20 through 60 {
|
||
@if $i % 2 == 0 {
|
||
.text-#{$i} {
|
||
font-size: $i + rpx;
|
||
}
|
||
}
|
||
}
|
||
// 粗细
|
||
.font-thin {
|
||
font-weight: 100;
|
||
}
|
||
.font-extralight {
|
||
font-weight: 200;
|
||
}
|
||
.font-light {
|
||
font-weight: 300;
|
||
}
|
||
.font-normal {
|
||
font-weight: 400;
|
||
}
|
||
.font-medium {
|
||
font-weight: 500;
|
||
}
|
||
.font-semibold {
|
||
font-weight: 600;
|
||
}
|
||
.font-bold {
|
||
font-weight: 700;
|
||
}
|
||
.font-extrabold {
|
||
font-weight: 800;
|
||
}
|
||
.font-black {
|
||
font-weight: 900;
|
||
}
|
||
// 行高
|
||
.leading-0{ line-height: 0!important; }
|
||
.leading-05{ line-height: 0.5!important;}
|
||
.leading-10{ line-height: 1!important; }
|
||
.leading-12{ line-height: 1.2!important; }
|
||
.leading-15{ line-height: 1.5!important; }
|
||
.leading-20{ line-height: 2!important; }
|
||
.leading-30{ line-height: 3!important; }
|
||
// 文本对齐
|
||
.text-left { text-align: left!important;}
|
||
.text-center { text-align: center!important;}
|
||
.text-right { text-align: right!important;}
|
||
.text-justify { text-align: justify!important;}
|
||
// 文本溢出
|
||
.line-1 {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
.line-2 {
|
||
-webkit-line-clamp: 2;
|
||
}
|
||
.line-3 {
|
||
-webkit-line-clamp: 3;
|
||
}
|
||
.line-4 {
|
||
-webkit-line-clamp: 4;
|
||
}
|
||
.line-5 {
|
||
-webkit-line-clamp: 5;
|
||
}
|
||
.line-2, .line-3, .line-4, .line-5 {
|
||
overflow: hidden;
|
||
word-break: break-all;
|
||
text-overflow: ellipsis;
|
||
display: -webkit-box; // 弹性伸缩盒
|
||
-webkit-box-orient: vertical; // 设置伸缩盒子元素排列方式
|
||
}
|
||
// 换行
|
||
.break-normal { overflow-wrap: normal;word-break: normal;}
|
||
.break-words { overflow-wrap: break-word;} // 在长单词或 URL 地址内部进行换行
|
||
.break-all { word-break: break-all;} // 在单词内换行
|
||
// 文本修饰
|
||
.underline { text-decoration-line: underline; }
|
||
.overline { text-decoration-line: overline; }
|
||
.line-through { text-decoration-line: line-through; }
|
||
.no-underline { text-decoration-line: no-underline; }
|
||
// 下划线位置
|
||
.underline-offset-auto { text-underline-offset: auto; }
|
||
.underline-offset-0 { text-underline-offset: 0px; }
|
||
.underline-offset-1 { text-underline-offset: 1px; }
|
||
.underline-offset-2 { text-underline-offset: 2px; }
|
||
.underline-offset-4 { text-underline-offset: 4px; }
|
||
.underline-offset-8 { text-underline-offset: 8px; }
|
||
|
||
/* ============ 边框 ============*/
|
||
|
||
// 圆角
|
||
.rounded-none { border-radius: 0px !important;}
|
||
.rounded { border-radius: 5rpx !important; }
|
||
.rounded-10{ border-radius: 10rpx !important; }
|
||
.rounded-20{ border-radius: 20rpx !important; }
|
||
.rounded-30{ border-radius: 30rpx !important; }
|
||
.rounded-50{ border-radius: 50rpx !important; }
|
||
.rounded-full{ border-radius:100% !important; }
|
||
// 边框
|
||
@each $var in left, right, top, bottom {
|
||
// 边框,结果如:border-l
|
||
.border-#{str-slice($var,0,1)}{
|
||
border-#{$var}-width: 1rpx;
|
||
border-#{$var}-style: solid;
|
||
border-#{$var}-color: $border-color;
|
||
}
|
||
// 边框为0,结果如:border-l-0
|
||
.border-#{str-slice($var,0,1)}-0{
|
||
border-#{$var}-width: 0;
|
||
}
|
||
}
|
||
.border{ border-width: 1rpx; border-style: solid; border-color: $border-color;}
|
||
.border-0{ border-width: 0 !important; }
|
||
|
||
/* ============ 效果 ============*/
|
||
// 阴影
|
||
.shadow-sm {
|
||
box-shadow: 0 2rpx 4rpx rgba(114, 130, 138, 0.2)!important;
|
||
}
|
||
.shadow {
|
||
box-shadow: 0 8rpx 16rpx rgba(114, 130, 138, 0.2)!important;
|
||
}
|
||
.shadow-lg {
|
||
box-shadow: 0 16rpx 48rpx rgba(114, 130, 138, 0.2)!important;
|
||
}
|
||
// 透明度
|
||
.opacity-0 { opacity: 0;}
|
||
.opacity-10 { opacity: 0.1;}
|
||
.opacity-20 { opacity: 0.2;}
|
||
.opacity-30 { opacity: 0.3;}
|
||
.opacity-40 { opacity: 0.4;}
|
||
.opacity-50 { opacity: 0.5;}
|
||
.opacity-60 { opacity: 0.6;}
|
||
.opacity-70 { opacity: 0.7;}
|
||
.opacity-80 { opacity: 0.8;}
|
||
.opacity-90 { opacity: 0.9;}
|
||
.opacity-100 { opacity: 1;} |