418 lines
9.0 KiB
CSS
418 lines
9.0 KiB
CSS
/**
|
||
* 这里是uni-app内置的常用样式变量
|
||
*
|
||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||
*
|
||
*/
|
||
/**
|
||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||
*
|
||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||
*/
|
||
/* 颜色变量 */
|
||
/* 行为相关颜色 */
|
||
/* 藏青系主色(高亮) */
|
||
/* 文字基本颜色 */
|
||
/* 背景颜色 */
|
||
/* 边框颜色 */
|
||
/* 尺寸变量 */
|
||
/* 文字尺寸 */
|
||
/* 图片尺寸 */
|
||
/* Border Radius */
|
||
/* 水平间距 */
|
||
/* 垂直间距 */
|
||
/* 透明度 */
|
||
/* 文章场景相关 */
|
||
/* 表单控件尺寸(统一配置,避免页面内硬编码) */
|
||
body {
|
||
height: 100%;
|
||
overflow: hidden;
|
||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%);
|
||
}
|
||
.home {
|
||
height: 100vh;
|
||
display: flex;
|
||
flex-direction: column;
|
||
padding-bottom: calc(env(safe-area-inset-bottom) + 1rem);
|
||
position: relative;
|
||
/* 渐变背景:顶部淡蓝过渡到白色 */
|
||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 60%);
|
||
overflow: hidden;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/* 首页横幅(移除) */
|
||
/* 公告栏 */
|
||
.notice {
|
||
margin: 0 0.75rem 0.75rem;
|
||
padding: 0.625rem 0.6875rem;
|
||
border-radius: 0.625rem;
|
||
background: #ffffff;
|
||
border: 0.0625rem solid #e5e7eb;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.5rem;
|
||
}
|
||
.notice-left {
|
||
flex: 0 0 auto;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
min-width: 3.125rem;
|
||
height: 1.625rem;
|
||
padding: 0 0.5rem;
|
||
border-radius: 31.21875rem;
|
||
background: #4C8DFF;
|
||
color: #fff;
|
||
font-size: 0.875rem;
|
||
font-weight: 800;
|
||
}
|
||
.notice-swiper {
|
||
height: 2.25rem;
|
||
flex: 1;
|
||
}
|
||
.notice-item {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.375rem;
|
||
min-height: 2.25rem;
|
||
}
|
||
.notice-text {
|
||
color: #111;
|
||
font-size: 0.875rem;
|
||
line-height: 1.125rem;
|
||
font-weight: 600;
|
||
display: -webkit-box;
|
||
-webkit-line-clamp: 2;
|
||
-webkit-box-orient: vertical;
|
||
overflow: hidden;
|
||
}
|
||
.notice-tag {
|
||
color: #4C8DFF;
|
||
font-size: 0.6875rem;
|
||
padding: 0.125rem 0.3125rem;
|
||
border-radius: 31.21875rem;
|
||
background: rgba(76, 141, 255, 0.18);
|
||
}
|
||
|
||
/* 分割标题 */
|
||
.section-title {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.5rem;
|
||
padding: 0.3125rem 0.875rem 0;
|
||
flex: 0 0 auto;
|
||
}
|
||
.section-title::before {
|
||
content: "";
|
||
display: block;
|
||
width: 0.25rem;
|
||
height: 0.875rem;
|
||
border-radius: 0.25rem;
|
||
background: #4C8DFF;
|
||
}
|
||
.section-text {
|
||
color: #111;
|
||
font-size: 0.9375rem;
|
||
font-weight: 700;
|
||
letter-spacing: 0.03125rem;
|
||
}
|
||
|
||
/* 顶部英雄区:浅色玻璃卡片,带金色描边与柔和阴影 */
|
||
.hero {
|
||
margin: 0.5rem 0.625rem;
|
||
padding: 0.5625rem 0.5625rem 0.375rem;
|
||
border-radius: 0.625rem;
|
||
background: #ffffff;
|
||
border: 0.0625rem solid #e5e7eb;
|
||
box-shadow: none;
|
||
color: #111;
|
||
flex: 0 0 auto;
|
||
}
|
||
.hero-top {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: 0.625rem;
|
||
}
|
||
.hero-sub {
|
||
display: flex;
|
||
gap: 0.375rem;
|
||
margin-bottom: 0.6875rem;
|
||
flex-wrap: wrap;
|
||
}
|
||
.chip {
|
||
padding: 0.25rem 0.5rem;
|
||
border-radius: 31.21875rem;
|
||
background: rgba(76, 141, 255, 0.1);
|
||
color: #4C8DFF;
|
||
font-size: 0.75rem;
|
||
font-weight: 700;
|
||
border: 0.0625rem solid rgba(76, 141, 255, 0.25);
|
||
}
|
||
.brand {
|
||
font-size: 1.125rem;
|
||
font-weight: 700;
|
||
letter-spacing: 0.03125rem;
|
||
color: #4C8DFF;
|
||
}
|
||
.cta {
|
||
padding: 0.25rem 0.5625rem;
|
||
border-radius: 31.21875rem;
|
||
background: #4C8DFF;
|
||
border: 0.0625rem solid #4C8DFF;
|
||
box-shadow: none;
|
||
}
|
||
.cta-text {
|
||
color: #fff;
|
||
font-size: 0.9375rem;
|
||
font-weight: 700;
|
||
letter-spacing: 0.03125rem;
|
||
}
|
||
|
||
/* 简易弹层样式 */
|
||
.dialog-mask {
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
top: 0;
|
||
bottom: 0;
|
||
background: rgba(0, 0, 0, 0.45);
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
z-index: 10000;
|
||
}
|
||
.dialog {
|
||
width: 82vw;
|
||
background: #fff;
|
||
border-radius: 0.5rem;
|
||
padding: 0.625rem;
|
||
border: 0.0625rem solid #eef2f6;
|
||
}
|
||
.dialog-title {
|
||
font-size: 1rem;
|
||
font-weight: 800;
|
||
color: #111;
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
.dialog-textarea {
|
||
width: 100%;
|
||
min-height: 5.625rem;
|
||
border: 0.0625rem solid #e8eef8;
|
||
border-radius: 0.375rem;
|
||
padding: 0.375rem;
|
||
box-sizing: border-box;
|
||
}
|
||
.dialog-actions {
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
gap: 0.5625rem;
|
||
margin-top: 0.5rem;
|
||
}
|
||
.btn {
|
||
padding: 0.3125rem 0.6875rem;
|
||
border-radius: 31.21875rem;
|
||
background: #f3f6fb;
|
||
color: #334155;
|
||
border: 0.0625rem solid #e2e8f0;
|
||
font-weight: 700;
|
||
}
|
||
.btn.primary {
|
||
background: #4C8DFF;
|
||
color: #fff;
|
||
border-color: #4C8DFF;
|
||
}
|
||
|
||
/* KPI 卡片化布局:横向铺满 */
|
||
.kpi {
|
||
display: grid;
|
||
grid-template-columns: repeat(4, 1fr);
|
||
gap: 0.375rem;
|
||
}
|
||
.kpi-item {
|
||
text-align: center;
|
||
background: #ffffff;
|
||
border: 0.0625rem solid #e5e7eb;
|
||
border-radius: 0.5rem;
|
||
padding: 0.5rem 0.25rem;
|
||
}
|
||
|
||
/* KPI 卡片(更扁平,降低高度) */
|
||
.kpi-grid {
|
||
gap: 0.375rem;
|
||
}
|
||
.kpi-card {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
justify-content: center;
|
||
gap: 0.25rem;
|
||
text-align: left;
|
||
padding: 0.375rem 0.4375rem;
|
||
border-radius: 0.4375rem;
|
||
background: #fff;
|
||
border: 0.0625rem solid #eef2f6;
|
||
box-shadow: 0 0.0625rem 0.25rem rgba(0, 0, 0, 0.04);
|
||
min-height: 3.75rem;
|
||
}
|
||
.kpi-icon {
|
||
width: 1.375rem;
|
||
height: 1.375rem;
|
||
opacity: 0.9;
|
||
}
|
||
.kpi-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
.kpi-label {
|
||
color: #6b778c;
|
||
font-weight: 700;
|
||
font-size: 0.75rem;
|
||
line-height: 0.9375rem;
|
||
}
|
||
.kpi-value {
|
||
color: #4C8DFF;
|
||
font-size: 1.0625rem;
|
||
line-height: 1.1875rem;
|
||
margin-top: 0;
|
||
font-weight: 800;
|
||
}
|
||
|
||
/* 常用功能:胶囊+阴影卡片样式的图标栅格(旧风格保留以防回退) */
|
||
.grid {
|
||
grid-row-gap: 1.125rem;
|
||
grid-column-gap: 0.8125rem;
|
||
padding: 1rem 0.75rem 0.875rem;
|
||
}
|
||
.grid-item {
|
||
position: relative;
|
||
}
|
||
.icon-squircle {
|
||
width: 4.375rem;
|
||
height: 4.375rem;
|
||
border-radius: 0.875rem;
|
||
background: #fff;
|
||
border: 0.0625rem solid #e5e7eb;
|
||
box-shadow: 0 0.3125rem 0.625rem rgba(0, 0, 0, 0.06);
|
||
}
|
||
.grid-chip {
|
||
margin-top: 0.375rem;
|
||
padding: 0.1875rem 0.4375rem;
|
||
border-radius: 31.21875rem;
|
||
background: rgba(76, 141, 255, 0.12);
|
||
color: #4C8DFF;
|
||
font-size: 0.8125rem;
|
||
font-weight: 700;
|
||
}
|
||
|
||
/* 功能容器:更轻的留白 */
|
||
.grid-wrap {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
align-items: stretch;
|
||
justify-content: center;
|
||
margin: 0.5rem 0.625rem 0.875rem;
|
||
padding: 1rem 0.9375rem;
|
||
border-radius: 0.8125rem;
|
||
background: rgba(255, 255, 255, 0.96);
|
||
border: 0.0625rem solid #edf2f9;
|
||
box-shadow: 0 0.375rem 0.875rem rgba(32, 75, 143, 0.1);
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/* 功能卡片宫格:方形竖排,图标在上文字在下(与截图一致) */
|
||
.feature-grid {
|
||
flex: 1 1 auto;
|
||
width: 100%;
|
||
height: 100%;
|
||
display: grid;
|
||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||
grid-auto-rows: 1fr;
|
||
gap: 1rem 0.875rem;
|
||
align-content: space-evenly;
|
||
justify-items: center;
|
||
}
|
||
.feature-card {
|
||
width: 5.25rem;
|
||
height: 5.5rem;
|
||
background: #fff;
|
||
border: 0.0625rem solid #eef2f6;
|
||
border-radius: 0.625rem;
|
||
box-shadow: 0 0.3125rem 0.75rem rgba(0, 0, 0, 0.05);
|
||
padding: 0.5625rem 0.5rem;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
.fc-icon {
|
||
width: 2.4375rem;
|
||
height: 2.4375rem;
|
||
border-radius: 0.5625rem;
|
||
background: #f7faff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
.fc-img {
|
||
width: 1.6875rem;
|
||
height: 1.6875rem;
|
||
opacity: 0.95;
|
||
}
|
||
.fc-emoji {
|
||
font-size: 1.5rem;
|
||
}
|
||
.fc-placeholder {
|
||
width: 1.75rem;
|
||
height: 1.75rem;
|
||
border-radius: 0.375rem;
|
||
background: #f1f1f1;
|
||
border: 0.0625rem solid #e8eef8;
|
||
}
|
||
.fc-title {
|
||
margin-top: 0.375rem;
|
||
font-size: 0.875rem;
|
||
font-weight: 700;
|
||
color: #111;
|
||
letter-spacing: 0.03125rem;
|
||
}
|
||
|
||
/* 底部操作条:浅色半透明 + 金色主按钮 */
|
||
.bottom-bar {
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-around;
|
||
padding: 0.4375rem 0.5625rem calc(env(safe-area-inset-bottom) + 0.4375rem);
|
||
background: rgba(255, 255, 255, 0.85);
|
||
box-shadow: 0 -0.1875rem 0.5625rem rgba(0, 0, 0, 0.08);
|
||
-webkit-backdrop-filter: blur(0.3125rem);
|
||
backdrop-filter: blur(0.3125rem);
|
||
z-index: 9999;
|
||
}
|
||
.tab {
|
||
flex: 1;
|
||
text-align: center;
|
||
color: #8a7535;
|
||
font-size: 0.8125rem;
|
||
}
|
||
.tab.active {
|
||
color: #B4880F;
|
||
}
|
||
.tab.primary {
|
||
flex: 0 0 auto;
|
||
min-width: 5.625rem;
|
||
margin: 0 0.5625rem;
|
||
padding: 0.5625rem 1rem;
|
||
background: linear-gradient(135deg, #FFE69A 0%, #F4CF62 45%, #D7A72E 100%);
|
||
color: #493c1b;
|
||
border-radius: 31.21875rem;
|
||
font-size: 0.9375rem;
|
||
font-weight: 800;
|
||
box-shadow: 0 0.3125rem 0.6875rem rgba(215, 167, 46, 0.25), 0 0 0 0.0625rem rgba(255, 255, 255, 0.7) inset;
|
||
} |