Files
2026-09-24 16:25:22 +08:00

1221 lines
21 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ============================================================
医院救援管理平台 · 移动端设计系统(uni-app x / uvue 适配版)
Hospital Rescue Management Platform · Mobile Design System
基准画布 375 × 812 · 主色 #2563EB
------------------------------------------------------------
⚠ uvue 约束:
1) 不支持 ::before / ::after 伪元素 —— 全部改为实体元素承担装饰;
2) 不支持 CSS 变量 var() —— 颜色全部写实;
3) 不使用 display:grid —— 栅格一律 flex + 百分比宽度;
4) 不使用 gap —— 间距一律 margin(跨端最稳);
5) 只使用 class 选择器,不使用后代/复合选择器。
============================================================ */
/* ---------- 页面容器 ---------- */
.hr-page {
flex: 1;
background-color: #F3F4F6;
flex-direction: column;
position: relative;
}
.hr-page-white {
flex: 1;
background-color: #FFFFFF;
flex-direction: column;
}
/* 页面滚动体 */
.hr-scroll {
flex: 1;
min-height: 0;
}
/* 内容区容器:作为骨架屏覆盖层的定位基准,范围=导航栏以下、底栏以上 */
.hr-flow {
flex: 1;
min-height: 0;
position: relative;
}
/* 加载中覆盖层:绝对定位铺满内容区并居中 xLoading,不参与 flex 布局,因此不会被压缩 */
.hr-loading-mask {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: #F3F4F6;
z-index: 20;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
/* 关键布局约束:scroll-view 是 flex 容器,直接子项默认 flex-shrink:1
内容高于容器时会被压缩到「刚好装下」,表现为页面/骨架屏只显示顶部一小截。
因此滚动体的直接子元素必须显式禁止收缩。 */
.hr-body {
padding: 24rpx 32rpx 44rpx 32rpx;
flex-shrink: 0;
flex-grow: 0;
}
.hr-body-nopad {
padding: 24rpx 0 44rpx 0;
}
.hr-body-flush {
padding: 0 0 44rpx 0;
}
.hr-body-tab {
padding: 24rpx 32rpx 20rpx 32rpx;
}
/* ---------- 基础布局 ---------- */
.hr-row {
display: flex;
flex-direction: row;
align-items: center;
}
.hr-row-top {
display: flex;
flex-direction: row;
align-items: flex-start;
}
.hr-row-between {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.hr-col {
display: flex;
flex-direction: column;
}
.hr-center {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.hr-flex1 {
flex: 1;
}
.hr-wrap {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
/* ---------- 文本 ---------- */
.hr-t1 {
color: #1F2937;
}
.hr-t2 {
color: #6B7280;
}
.hr-t3 {
color: #9CA3AF;
}
.hr-t-pri {
color: #2563EB;
}
.hr-t-red {
color: #DC2626;
}
.hr-t-amb {
color: #D97706;
}
.hr-t-grn {
color: #059669;
}
.hr-fs10 {
font-size: 22.4rpx;
}
.hr-fs11 {
font-size: 24.6rpx;
}
.hr-fs12 {
font-size: 26.8rpx;
}
.hr-fs13 {
font-size: 29.2rpx;
}
.hr-fs14 {
font-size: 31.4rpx;
}
.hr-fs15 {
font-size: 33.6rpx;
}
.hr-fs17 {
font-size: 38rpx;
}
.hr-bold {
font-weight: bold;
}
.hr-mono {
font-family: monospace;
letter-spacing: 0.6rpx;
}
/* ---------- 卡片 ---------- */
.hr-card {
background-color: #FFFFFF;
border-radius: 26rpx;
padding: 24rpx 26rpx 24rpx 26rpx;
border: 2rpx solid #F3F4F6;
}
.hr-card-gap {
margin-bottom: 20rpx;
}
.hr-card-tight {
padding: 20rpx;
}
.hr-card-list {
padding: 14rpx 18rpx 14rpx 18rpx;
}
.hr-card-line {
border: 2rpx solid #E5E7EB;
}
.hr-card-danger {
border: 2rpx solid #FECACA;
background-color: #FFFBFB;
}
/* ---------- 小节标题 ---------- */
.hr-sec {
display: flex;
flex-direction: row;
align-items: center;
margin-top: 32rpx;
margin-bottom: 16rpx;
}
.hr-sec-first {
margin-top: 8rpx;
}
.hr-sec-bar {
width: 6rpx;
height: 26rpx;
border-radius: 4rpx;
background-color: #2563EB;
margin-right: 14rpx;
}
.hr-sec-t {
font-size: 31.4rpx;
font-weight: bold;
color: #1F2937;
}
.hr-sec-more {
margin-left: auto;
font-size: 25.8rpx;
color: #9CA3AF;
}
/* ---------- 底部分隔区 ---------- */
/* xCell 内部 .xCellWrap 写死了 padding:12px 0(且不随 rpx 缩放),
会让列表行比设计稿明显高一截、文字块也比左侧图标高。
这里按项目设计稿收紧,行高由左侧图标(64rpx)决定。 */
.xCellWrap {
padding: 0 !important;
}
.xCellAvatar {
margin-right: 20rpx !important;
}
/* ---------- 列表行 ---------- */
.hr-lrow {
display: flex;
flex-direction: row;
align-items: center;
padding-top: 22rpx;
padding-bottom: 22rpx;
border-bottom: 2rpx solid #F3F4F6;
min-height: 88rpx;
}
.hr-lrow-last {
border-bottom-width: 0rpx;
}
.hr-lrow-first {
padding-top: 8rpx;
}
.hr-lic {
width: 64rpx;
height: 64rpx;
border-radius: 18rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
font-size: 33.6rpx;
background-color: #F3F4F6;
color: #6B7280;
margin-right: 20rpx;
}
.hr-lic-lg {
width: 72rpx;
height: 72rpx;
border-radius: 20rpx;
font-size: 35.8rpx;
}
.hr-lic-pri {
background-color: #EFF6FF;
color: #2563EB;
}
.hr-lic-red {
background-color: #FEF2F2;
color: #DC2626;
}
.hr-lic-amb {
background-color: #FEF3C7;
color: #D97706;
}
.hr-lic-grn {
background-color: #ECFDF5;
color: #059669;
}
.hr-lmain {
flex: 1;
flex-direction: column;
}
.hr-lmain-b {
font-size: 31.4rpx;
font-weight: bold;
color: #1F2937;
lines: 1;
}
.hr-lmain-s {
font-size: 24rpx;
color: #9CA3AF;
margin-top: 2rpx;
lines: 1;
}
.hr-lval {
font-size: 28rpx;
color: #9CA3AF;
margin-left: 16rpx;
}
/* ---------- 按钮 ---------- */
.hr-btn {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 88rpx;
border-radius: 24rpx;
font-size: 32.4rpx;
font-weight: bold;
background-color: #F3F4F6;
color: #1F2937;
}
.hr-btn-primary {
background-color: #2563EB;
color: #FFFFFF;
}
.hr-btn-danger {
background-color: #DC2626;
color: #FFFFFF;
}
.hr-btn-ghost {
background-color: #FFFFFF;
color: #1F2937;
border: 2rpx solid #E5E7EB;
}
.hr-btn-soft {
background-color: #EFF6FF;
color: #2563EB;
}
.hr-btn-lg {
height: 104rpx;
font-size: 35.8rpx;
border-radius: 28rpx;
}
.hr-btn-sm {
height: 68rpx;
font-size: 28rpx;
border-radius: 18rpx;
}
.hr-btn-disabled {
background-color: #F3F4F6;
color: #9CA3AF;
border: 2rpx solid #E5E7EB;
}
/* ---------- 底部固定操作条 ---------- */
.hr-fixedbar {
background-color: #FFFFFF;
border-top: 2rpx solid #F3F4F6;
padding: 22rpx 32rpx 28rpx 32rpx;
display: flex;
flex-direction: row;
}
.hr-fixedbar-btn {
flex: 1;
margin-right: 18rpx;
}
.hr-fixedbar-btn-last {
flex: 1;
margin-right: 0rpx;
}
/* ---------- chip ---------- */
.hr-chip {
display: flex;
flex-direction: row;
align-items: center;
height: 56rpx;
padding-left: 22rpx;
padding-right: 22rpx;
border-radius: 18rpx;
font-size: 26.8rpx;
font-weight: bold;
color: #6B7280;
background-color: #FFFFFF;
border: 2rpx solid #E5E7EB;
margin-right: 14rpx;
}
.hr-chip-active {
background-color: #2563EB;
border: 2rpx solid #2563EB;
color: #FFFFFF;
}
.hr-chip-red {
color: #B91C1C;
background-color: #FEF2F2;
border: 2rpx solid #FECACA;
}
.hr-chip-amb {
color: #92400E;
background-color: #FEF3C7;
border: 2rpx solid #FDE68A;
}
.hr-chip-grn {
color: #059669;
background-color: #ECFDF5;
border: 2rpx solid #A7F3D0;
}
.hr-chip-lg {
height: 80rpx;
padding-left: 26rpx;
padding-right: 26rpx;
border-radius: 20rpx;
}
/* chip 横向滚动条 */
.hr-chiprow {
flex-direction: row;
display: flex;
}
/* ---------- 腕带分级 ---------- */
.hr-wb {
display: flex;
flex-direction: row;
align-items: center;
height: 48rpx;
padding-left: 18rpx;
padding-right: 18rpx;
border-radius: 14rpx;
font-size: 25.8rpx;
font-weight: bold;
}
.hr-wb-dot {
width: 14rpx;
height: 14rpx;
border-radius: 4rpx;
margin-right: 10rpx;
background-color: #FFFFFF;
}
.hr-wb1 {
background-color: #FEE2E2;
color: #B91C1C;
}
.hr-wb2 {
background-color: #FEF3C7;
color: #92400E;
}
.hr-wb3 {
background-color: #D1FAE5;
color: #065F46;
}
.hr-wb4 {
background-color: #E5E7EB;
color: #111827;
}
.hr-wb-sm {
height: 40rpx;
font-size: 23.6rpx;
border-radius: 12rpx;
padding-left: 14rpx;
padding-right: 14rpx;
}
/* ---------- 优先级 ---------- */
.hr-pc {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 42rpx;
padding-left: 16rpx;
padding-right: 16rpx;
border-radius: 12rpx;
font-size: 23.6rpx;
font-weight: bold;
}
.hr-pc0 {
background-color: #DC2626;
color: #FFFFFF;
}
.hr-pc1 {
background-color: #F59E0B;
color: #FFFFFF;
}
.hr-pc2 {
background-color: #2563EB;
color: #FFFFFF;
}
/* ---------- 角标(全站统一样式) ----------
基准 = 我的页「消息中心」右侧角标:高/圆角 36rpx、字号 22.4rpx、红底白字。
组件库 xBadgex-tabbar / x-tabs 内部使用)尺寸由它自己的 padding + 字号决定,
且以 inline style 下发,因此只能用 !important 覆盖
!important 的样式声明优先级高于 inline style)。 */
.hr-badge {
min-width: 36rpx;
height: 36rpx;
padding-left: 10rpx;
padding-right: 10rpx;
border-radius: 18rpx;
background-color: #DC2626;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
margin-left: 16rpx;
}
.hr-badge-t {
font-size: 22.4rpx;
font-weight: bold;
color: #FFFFFF;
}
/* 组件库 xBadge 统一到同一尺寸(tabbar 角标 / tabs 角标) */
.xBadge-countAndLabel {
min-width: 36rpx !important;
height: 36rpx !important;
padding: 0 10rpx !important;
border-radius: 18rpx !important;
/*
定位(数值实测自 uni_modules 源码 + 375 逻辑宽换算,1rpx = 0.5px):
1) 库默认是「半出血」:x-tabbar 给 x-badge 传 :offset="[0,5]",再叠加
transform: translate(50%,-50%),等于「角标中心 = 容器右上角」,
需要容器上方留出半个角标高度。而 x-tabbar 的 Tab 项高度写死 60px
内容(icon 盒 30px + 文字 ≈23px ≈ 53px)上下各只剩 ~3.5px 余量,
出血超出 Tab 项的部分会被裁掉 → 故先取消出血(transform:none)。
2) 取消出血后若停在库默认的 right:0,角标会大面积压住 icon
角标实际宽 28px —— min-width 36rpx 是「内容盒」最小值,还要加左右各
10rpx 内边距 ⇒ 18 + 10 = 28px,不是 18px(这点最容易算错);
而 .xBadgeWrap 宽度 ≈ 左侧 icon 盒宽 = icon 24px + 左右各 4px = 32px。
right:0 时角标左缘 = wrap.right - 28,几乎完全盖在 icon 上
—— 这正是用户反馈的「角标遮挡 icon」。
3) 故改为「左锚定」,复刻设计稿 .dot 的 left: calc(50% + 6px)
角标定位基准 .xBadgeWrap 的水平中心与 Tab 项水平中心重合
.xBadge / .xBadgeWrap / .xTabbarItem 均为 align-items:center),
所以 left = wrap 半宽 16px + 6px = 22px = 44rpx
角标左缘落在中心右侧 6px 处,与 icon 只重叠 ~6px(设计稿 5px)。
左锚定的好处:角标内容变宽(两位数/三位数)只向右生长,
不会回头盖住 icon,也不用再按「角标自身宽度」重算。
4) 上提只取 2px(=4rpx)Tab 项上下余量 ~3.5px,取 2px 后角标顶边仍在
Tab 项内约 1.5px;即便某些平台文字行高更高,也还有下面的
overflow:visible 兜底,不会被裁。右侧余量充足:
角标右缘 = 中心 + 34px,仍小于 5 Tab 布局的项右缘(中心 + 37.5px)。
*/
top: -4rpx !important;
left: 44rpx !important;
right: auto !important;
transform: none !important;
}
.xBadge-countAndLabelText {
font-size: 22.4rpx !important;
line-height: 1 !important;
}
/*
角标出血:库内 .xBadge 的内边距是 getNodeInfo() 量出来的,
量到的尺寸可能早于上面 !important 覆盖生效 → 预留空间不足,
角标超出容器的部分会被裁掉(tabbar 上最明显)。
view 在 uvue / H5 上的默认裁剪行为不一致,这里统一放开。
*/
.xBadge,
.xBadgeWrap,
.xTabbarBox,
.xTabbarWrap,
.xTabbarItem {
overflow: visible !important;
}
/*
.xBadge 的内边距(getNodeInfo() 量出 ≈ 半个角标)只是库为「半出血」预留的空间。
本项目已取消出血(transform:none),去掉该内边距后:
.xBadge 盒子由「内容 53px + 上下内边距 18px = 71px」缩到 53px
从「超出 60px 的 Tab 项」变成「完整落在 Tab 项内」→ 任何平台都不会被裁。
内容位置不变:.xTabbarItem 是 justify-content:center,两种盒高下内容都垂直居中。
*/
.xBadge {
padding: 0 !important;
}
/* ---------- 提示条 ---------- */
.hr-tip {
display: flex;
flex-direction: row;
align-items: flex-start;
padding: 20rpx 24rpx 20rpx 24rpx;
border-radius: 22rpx;
font-size: 26.8rpx;
}
.hr-tip-ic {
margin-right: 16rpx;
font-size: 26.8rpx;
}
.hr-tip-tx {
flex: 1;
font-size: 26.8rpx;
line-height: 1.5;
}
.hr-tip-info {
background-color: #EFF6FF;
color: #1E40AF;
}
.hr-tip-warn {
background-color: #FFFBEB;
color: #92400E;
}
.hr-tip-err {
background-color: #FEF2F2;
color: #991B1B;
}
.hr-tip-ok {
background-color: #ECFDF5;
color: #065F46;
}
/* ---------- 表单 ---------- */
.hr-field {
background-color: #FFFFFF;
border: 2rpx solid #E5E7EB;
border-radius: 22rpx;
padding: 16rpx 24rpx 16rpx 24rpx;
min-height: 104rpx;
display: flex;
flex-direction: column;
justify-content: center;
}
.hr-field-label {
font-size: 23.6rpx;
color: #9CA3AF;
}
.hr-field-input {
font-size: 31.4rpx;
color: #1F2937;
font-weight: bold;
height: 52rpx;
padding: 0 0 0 0;
}
.hr-field-err {
border: 2rpx solid #DC2626;
background-color: #FFFBFB;
}
.hr-field-ro {
background-color: #F9FAFB;
}
/* ---------- 分段控件 ---------- */
.hr-seg {
display: flex;
flex-direction: row;
background-color: #F3F4F6;
padding: 6rpx 6rpx 6rpx 6rpx;
border-radius: 22rpx;
}
.hr-seg-i {
flex: 1;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
padding-top: 16rpx;
padding-bottom: 16rpx;
border-radius: 18rpx;
font-size: 29.2rpx;
font-weight: bold;
color: #6B7280;
}
.hr-seg-i-on {
background-color: #FFFFFF;
color: #2563EB;
}
/* ---------- 进度条 ---------- */
.hr-pbar {
height: 8rpx;
border-radius: 4rpx;
background-color: #F3F4F6;
overflow: hidden;
display: flex;
flex-direction: row;
}
.hr-pbar-i {
height: 8rpx;
border-radius: 4rpx;
background-color: #2563EB;
}
/* ---------- 统计块 ---------- */
.hr-stat-row {
display: flex;
flex-direction: row;
}
.hr-stat {
flex: 1;
flex-direction: column;
align-items: center;
justify-content: center;
}
.hr-stat-b {
font-size: 47rpx;
font-weight: bold;
color: #1F2937;
}
.hr-stat-s {
font-size: 23.6rpx;
color: #6B7280;
margin-top: 6rpx;
}
.hr-stat-sep {
width: 2rpx;
background-color: #F3F4F6;
height: 60rpx;
margin-top: 8rpx;
}
/* ---------- 时间线 ---------- */
.hr-tl {
position: relative;
padding-left: 44rpx;
}
.hr-tl-line {
position: absolute;
left: 12rpx;
top: 12rpx;
width: 4rpx;
background-color: #E5E7EB;
}
.hr-tl-item {
position: relative;
padding-bottom: 30rpx;
}
.hr-tl-dot {
position: absolute;
left: -42rpx;
top: 8rpx;
width: 20rpx;
height: 20rpx;
border-radius: 10rpx;
background-color: #2563EB;
}
.hr-tl-dot-warn {
background-color: #DC2626;
}
.hr-tl-dot-ok {
background-color: #10B981;
}
.hr-tl-time {
font-size: 23.6rpx;
color: #9CA3AF;
}
.hr-tl-tx {
font-size: 28rpx;
color: #1F2937;
font-weight: bold;
margin-top: 6rpx;
}
.hr-tl-sub {
font-size: 24.6rpx;
color: #6B7280;
margin-top: 4rpx;
}
/* ---------- 空状态 / 加载 ---------- */
.hr-empty {
padding: 88rpx 40rpx 88rpx 40rpx;
display: flex;
flex-direction: column;
align-items: center;
}
.hr-empty-ic {
width: 112rpx;
height: 112rpx;
border-radius: 36rpx;
background-color: #F3F4F6;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
font-size: 56rpx;
color: #9CA3AF;
margin-bottom: 16rpx;
}
.hr-empty-b {
font-size: 31.4rpx;
font-weight: bold;
color: #6B7280;
}
.hr-empty-s {
font-size: 25.8rpx;
color: #9CA3AF;
margin-top: 10rpx;
text-align: center;
lines: 2;
}
/* ---------- 头像 ---------- */
.hr-avt {
width: 76rpx;
height: 76rpx;
border-radius: 22rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
background-color: #2563EB;
color: #FFFFFF;
font-size: 33.6rpx;
font-weight: bold;
}
.hr-avt-sm {
width: 60rpx;
height: 60rpx;
border-radius: 18rpx;
font-size: 28rpx;
}
.hr-avt-lg {
width: 108rpx;
height: 108rpx;
border-radius: 32rpx;
font-size: 49.2rpx;
}
.hr-avt-red {
background-color: #DC2626;
}
.hr-avt-amb {
background-color: #D97706;
}
.hr-avt-grn {
background-color: #059669;
}
.hr-avt-gy {
background-color: #94A3B8;
}
/* ---------- 开关(自绘,兜底用) ---------- */
.hr-sw {
width: 88rpx;
height: 52rpx;
border-radius: 26rpx;
background-color: #E5E7EB;
padding: 6rpx 6rpx 6rpx 6rpx;
display: flex;
flex-direction: row;
align-items: center;
}
.hr-sw-on {
background-color: #10B981;
justify-content: flex-end;
}
.hr-sw-knob {
width: 40rpx;
height: 40rpx;
border-radius: 20rpx;
background-color: #FFFFFF;
}
/* ---------- 分隔线 ---------- */
.hr-hr {
height: 2rpx;
background-color: #F3F4F6;
}
/* ---------- 覆盖层 ---------- */
.hr-mask {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.45);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.hr-toast {
position: absolute;
left: 50%;
top: 156rpx;
margin-left: -160rpx;
width: 320rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
padding: 18rpx 30rpx 18rpx 30rpx;
border-radius: 22rpx;
background-color: rgba(17, 24, 39, 0.93);
color: #FFFFFF;
font-size: 28rpx;
font-weight: bold;
}
.hr-toast-ok {
background-color: rgba(5, 150, 105, 0.95);
}
.hr-toast-warn {
background-color: rgba(217, 119, 6, 0.95);
}
.hr-toast-err {
background-color: rgba(185, 28, 28, 0.95);
}
/* ---------- 离线条 ---------- */
.hr-offbar {
display: flex;
flex-direction: row;
align-items: center;
padding: 18rpx 32rpx 18rpx 32rpx;
background-color: #FFFBEB;
border-bottom: 2rpx solid #FDE68A;
font-size: 26.8rpx;
font-weight: bold;
color: #92400E;
}
.hr-offbar-cnt {
background-color: #F59E0B;
color: #FFFFFF;
font-size: 22.4rpx;
font-weight: bold;
padding: 4rpx 12rpx 4rpx 12rpx;
border-radius: 18rpx;
margin-left: 16rpx;
margin-right: 16rpx;
}
.hr-offbar-go {
margin-left: auto;
font-size: 26.8rpx;
color: #B45309;
font-weight: bold;
}
/* ---------- 底部弹层 ---------- */
.hr-sheet-mask {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: rgba(15, 23, 42, 0.42);
}
.hr-sheet {
position: absolute;
left: 0;
right: 0;
bottom: 0;
background-color: #FFFFFF;
border-radius: 36rpx 36rpx 0rpx 0rpx;
padding: 28rpx 32rpx 40rpx 32rpx;
}
.hr-sheet-h {
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 20rpx;
}
.hr-sheet-h-b {
font-size: 33.6rpx;
font-weight: bold;
color: #1F2937;
}
.hr-sheet-h-x {
margin-left: auto;
font-size: 35.8rpx;
color: #9CA3AF;
}
.hr-sheet-opt {
display: flex;
flex-direction: row;
align-items: center;
padding-top: 26rpx;
padding-bottom: 26rpx;
border-bottom: 2rpx solid #F3F4F6;
}
.hr-sheet-opt-t {
flex: 1;
font-size: 31.4rpx;
color: #1F2937;
}
.hr-sheet-opt-on {
color: #2563EB;
font-weight: bold;
}
.hr-sheet-opt-last {
border-bottom-width: 0rpx;
}
/* ---------- 2D 人体图鉴(uvue 无 SVG,用几何图形拼装人体示意) ---------- */
.bm-row {
display: flex;
flex-direction: row;
}
.bm-col {
flex: 1;
background-color: #FAFBFC;
border: 2rpx dashed #E5E7EB;
border-radius: 24rpx;
padding: 20rpx 12rpx 16rpx 12rpx;
align-items: center;
position: relative;
margin-right: 20rpx;
}
.bm-col-last {
margin-right: 0rpx;
}
.bm-figure {
width: 192rpx;
height: 368rpx;
position: relative;
}
.bm-head {
position: absolute;
left: 66rpx;
top: 0rpx;
width: 60rpx;
height: 60rpx;
border-radius: 30rpx;
border: 5rpx solid #CBD5E1;
}
.bm-torso {
position: absolute;
left: 52rpx;
top: 66rpx;
width: 88rpx;
height: 124rpx;
border-radius: 28rpx;
border: 5rpx solid #CBD5E1;
}
.bm-arm-l {
position: absolute;
left: 16rpx;
top: 72rpx;
width: 24rpx;
height: 116rpx;
border-radius: 12rpx;
border: 5rpx solid #CBD5E1;
}
.bm-arm-r {
position: absolute;
left: 152rpx;
top: 72rpx;
width: 24rpx;
height: 116rpx;
border-radius: 12rpx;
border: 5rpx solid #CBD5E1;
}
.bm-leg-l {
position: absolute;
left: 56rpx;
top: 192rpx;
width: 26rpx;
height: 168rpx;
border-radius: 14rpx;
border: 5rpx solid #CBD5E1;
}
.bm-leg-r {
position: absolute;
left: 110rpx;
top: 192rpx;
width: 26rpx;
height: 168rpx;
border-radius: 14rpx;
border: 5rpx solid #CBD5E1;
}
.bm-mark {
position: absolute;
width: 38rpx;
height: 38rpx;
border-radius: 20rpx;
background-color: #DC2626;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
.bm-mark-t {
font-size: 22.4rpx;
font-weight: bold;
color: #FFFFFF;
}
.bm-tag {
font-size: 23.6rpx;
color: #9CA3AF;
margin-top: 14rpx;
}
/* ---------- 加载动画 ---------- */
.hr-spin {
width: 60rpx;
height: 60rpx;
border-radius: 30rpx;
border: 6rpx solid rgba(255, 255, 255, 0.25);
border-top-color: #FFFFFF;
}
/* ---------- 骨架屏 ---------- */
.hr-sk {
height: 22rpx;
border-radius: 14rpx;
background-color: #F3F4F6;
margin-bottom: 14rpx;
}