/** * 这里是uni-app内置的常用样式变量 * * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App * */ /** * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 * * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 */ /* 颜色变量 */ /* 行为相关颜色 */ /* 文字基本颜色 */ /* 背景颜色 */ /* 边框颜色 */ /* 尺寸变量 */ /* 文字尺寸 */ /* 图片尺寸 */ /* Border Radius */ /* 水平间距 */ /* 垂直间距 */ /* 透明度 */ /* 文章场景相关 */ .dev-entry-wrap.data-v-17534d15 { position: fixed; right: 24rpx; z-index: 999; display: flex; flex-direction: column; align-items: flex-end; gap: 18rpx; } /* ============================================================ * 主浮动按钮 * ============================================================ */ .fab-container.data-v-17534d15 { position: relative; width: 108rpx; height: 108rpx; } .entry-fab.data-v-17534d15 { position: absolute; inset: 0; border-radius: 50%; background: linear-gradient(140deg, #34d399 0%, #047857 100%); box-shadow: 0 8rpx 20rpx rgba(16, 185, 129, 0.42), 0 2rpx 6rpx rgba(15, 23, 42, 0.12), inset 0 -8rpx 16rpx rgba(0, 0, 0, 0.12), inset 0 8rpx 16rpx rgba(255, 255, 255, 0.18); display: flex; align-items: center; justify-content: center; transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), background 0.2s; } .entry-fab.data-v-17534d15:active { transform: scale(0.92); } .entry-fab.expanded.data-v-17534d15 { background: linear-gradient(140deg, #94a3b8 0%, #475569 100%); transform: rotate(135deg); box-shadow: 0 6rpx 16rpx rgba(15, 23, 42, 0.2), inset 0 -6rpx 14rpx rgba(0, 0, 0, 0.12), inset 0 6rpx 14rpx rgba(255, 255, 255, 0.12); } .entry-fab .fab-icon.data-v-17534d15 { width: 60rpx; height: 60rpx; background-image: url("data:image/svg+xml;utf8,"); background-size: contain; background-repeat: no-repeat; background-position: center; filter: drop-shadow(0 2rpx 6rpx rgba(0, 0, 0, 0.22)); animation: fab-icon-beat-17534d15 1.6s ease-in-out infinite; } @keyframes fab-icon-beat-17534d15 { 0%, 60%, 100% { transform: scale(1); } 20% { transform: scale(1.12); } 40% { transform: scale(1); } } /* 关闭态 X 图标 (CSS 几何) */ .icon-close.data-v-17534d15 { position: relative; width: 36rpx; height: 36rpx; } .icon-close .cross-bar.data-v-17534d15 { position: absolute; top: 50%; left: 0; width: 100%; height: 5rpx; background: #fff; border-radius: 3rpx; transform-origin: center; } .icon-close .bar-1.data-v-17534d15 { transform: translateY(-50%) rotate(45deg); } .icon-close .bar-2.data-v-17534d15 { transform: translateY(-50%) rotate(-45deg); } /* 呼吸光环(2 圈错相位扩散) */ .fab-pulse.data-v-17534d15 { position: absolute; inset: 0; border-radius: 50%; background: rgba(16, 185, 129, 0.25); animation: fab-ring-17534d15 2.4s ease-out infinite; pointer-events: none; } .fab-pulse-2.data-v-17534d15 { animation-delay: 1.2s; } @keyframes fab-ring-17534d15 { 0% { transform: scale(0.95); opacity: 0.7; } 100% { transform: scale(1.55); opacity: 0; } } /* ============================================================ * 展开菜单 * ============================================================ */ .menu-list.data-v-17534d15 { display: flex; flex-direction: column; gap: 14rpx; animation: slide-up-17534d15 0.22s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes slide-up-17534d15 { from { opacity: 0; transform: translateY(20rpx) scale(0.92); } to { opacity: 1; transform: translateY(0) scale(1); } } .menu-item.data-v-17534d15 { display: flex; align-items: center; gap: 16rpx; background: rgba(255, 255, 255, 0.96); padding: 14rpx 20rpx 14rpx 14rpx; border-radius: 999rpx; box-shadow: 0 8rpx 24rpx rgba(15, 23, 42, 0.1), 0 1rpx 2rpx rgba(15, 23, 42, 0.06); min-width: 280rpx; transition: transform 0.15s; -webkit-backdrop-filter: blur(12rpx); backdrop-filter: blur(12rpx); } .menu-item.data-v-17534d15:active { transform: scale(0.97); background: #f0fdf4; } .menu-icon.data-v-17534d15 { width: 64rpx; height: 64rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 2rpx 8rpx rgba(16, 185, 129, 0.32); } .menu-icon--train.data-v-17534d15 { background: linear-gradient(140deg, #34d399, #047857); } .menu-icon--dumbbell.data-v-17534d15 { background: linear-gradient(140deg, #93c5fd, #3b82f6); box-shadow: 0 2rpx 8rpx rgba(59, 130, 246, 0.36); } .menu-icon--pedal.data-v-17534d15 { background: linear-gradient(140deg, #fdba74, #f97316); box-shadow: 0 2rpx 8rpx rgba(249, 115, 22, 0.36); } .menu-icon--pilates.data-v-17534d15 { background: linear-gradient(140deg, #c4b5fd, #8b5cf6); box-shadow: 0 2rpx 8rpx rgba(139, 92, 246, 0.36); } .menu-icon--grip.data-v-17534d15 { background: linear-gradient(140deg, #5eead4, #14b8a6); box-shadow: 0 2rpx 8rpx rgba(20, 184, 166, 0.36); } .menu-icon--metro.data-v-17534d15 { background: linear-gradient(140deg, #fbbf24, #d97706); box-shadow: 0 2rpx 8rpx rgba(245, 158, 11, 0.36); gap: 4rpx; } .menu-icon-text.data-v-17534d15 { font-size: 32rpx; line-height: 1; } /* 哑铃小 icon */ .dumbbell-shape.data-v-17534d15 { width: 40rpx; height: 20rpx; display: flex; align-items: center; justify-content: center; } .dumbbell-plate.data-v-17534d15 { width: 10rpx; height: 18rpx; background: #fff; border-radius: 3rpx; box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.18); } .dumbbell-bar.data-v-17534d15 { width: 16rpx; height: 5rpx; background: #fff; border-radius: 2rpx; margin: 0 2rpx; box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.18); } /* 脚蹬器小 icon: 左右踏板 */ .foot-pedal-shape.data-v-17534d15 { width: 40rpx; height: 28rpx; display: flex; align-items: flex-end; justify-content: center; gap: 6rpx; } .pedal-bar.data-v-17534d15 { width: 14rpx; background: #fff; border-radius: 4rpx 4rpx 2rpx 2rpx; box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.18); } .pedal-bar-left.data-v-17534d15 { height: 18rpx; transform: rotate(-12deg); } .pedal-bar-right.data-v-17534d15 { height: 22rpx; transform: rotate(12deg); } /* 瑜伽环小 icon: 双弧阻力环 */ .pilates-ring-shape.data-v-17534d15 { width: 36rpx; height: 36rpx; border-radius: 50%; border: 5rpx solid #fff; position: relative; box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.18), inset 0 1rpx 2rpx rgba(255, 255, 255, 0.6); } .pilates-ring-shape.data-v-17534d15::after { content: ""; position: absolute; top: 50%; left: 50%; width: 18rpx; height: 18rpx; transform: translate(-50%, -50%); border-radius: 50%; border: 3rpx solid rgba(255, 255, 255, 0.85); } /* 握力环小 icon: 白色描边的环(甜甜圈) */ .grip-ring-shape.data-v-17534d15 { width: 32rpx; height: 32rpx; border-radius: 50%; border: 7rpx solid #fff; box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.18), inset 0 1rpx 2rpx rgba(255, 255, 255, 0.6); } /* 节拍器小 icon: 3 根高低柱模拟均衡器/节拍 */ .metro-bar.data-v-17534d15 { width: 4rpx; background: #fff; border-radius: 2rpx; box-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.18); } .metro-bar-1.data-v-17534d15 { height: 16rpx; } .metro-bar-2.data-v-17534d15 { height: 28rpx; } .metro-bar-3.data-v-17534d15 { height: 22rpx; } .menu-info.data-v-17534d15 { display: flex; flex-direction: column; gap: 2rpx; flex: 1; } .menu-title.data-v-17534d15 { font-size: 28rpx; color: #0f172a; font-weight: 700; letter-spacing: 1rpx; } .menu-sub.data-v-17534d15 { font-size: 20rpx; color: #94a3b8; letter-spacing: 0.5rpx; } .menu-arrow.data-v-17534d15 { font-size: 32rpx; color: #cbd5e1; font-weight: 300; line-height: 1; margin-left: 4rpx; } .menu-icon--metro-inner.data-v-17534d15 { display: flex; align-items: flex-end; justify-content: center; gap: 4rpx; width: 100%; height: 100%; } /* ============================================================ * 内嵌模块(weekly 等) * ============================================================ */ .dev-entry-inline.data-v-17534d15 { width: 100%; box-sizing: border-box; } .dev-entry-inline--weekly.data-v-17534d15 { padding: 32rpx 28rpx 24rpx; border-radius: 48rpx; background: var(--surface-container-lowest, #fff); border: 1rpx solid rgba(0, 108, 73, 0.12); box-shadow: 0 24rpx 60rpx -20rpx rgba(0, 108, 73, 0.08), 0 8rpx 20rpx -8rpx rgba(0, 0, 0, 0.03); } .inline-hero.data-v-17534d15 { display: flex; align-items: center; gap: 20rpx; margin-bottom: 24rpx; } .inline-hero-icon.data-v-17534d15 { width: 88rpx; height: 88rpx; border-radius: 24rpx; background: rgba(0, 108, 73, 0.1); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .inline-hero-wave.data-v-17534d15 { width: 52rpx; height: 52rpx; background-image: url("data:image/svg+xml;utf8,"); background-size: contain; background-repeat: no-repeat; background-position: center; } .inline-hero-text.data-v-17534d15 { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6rpx; } .inline-hero-title-row.data-v-17534d15 { display: flex; align-items: center; flex-wrap: wrap; gap: 10rpx; } .inline-title.data-v-17534d15 { font-size: 32rpx; font-weight: 700; color: #0f172a; line-height: 1.25; } .inline-pill.data-v-17534d15 { font-size: 20rpx; font-weight: 700; color: #006c49; padding: 4rpx 12rpx; border-radius: 999rpx; background: rgba(0, 108, 73, 0.1); line-height: 1.2; } .inline-sub.data-v-17534d15 { font-size: 26rpx; font-weight: 500; color: #475569; line-height: 1.4; } .inline-scroll.data-v-17534d15 { width: 100%; white-space: nowrap; } .inline-scroll-track.data-v-17534d15 { display: inline-flex; flex-direction: row; align-items: stretch; gap: 16rpx; padding: 4rpx 2rpx 8rpx; } .inline-card.data-v-17534d15 { position: relative; display: inline-flex; flex-direction: column; align-items: flex-start; width: 212rpx; min-height: 220rpx; padding: 20rpx 18rpx 18rpx; border-radius: 28rpx; background: #f4f7f5; border: 1rpx solid rgba(0, 108, 73, 0.1); box-sizing: border-box; flex-shrink: 0; transition: transform 0.2s ease, background 0.2s ease; } .inline-card.data-v-17534d15:active { transform: scale(0.98); background: #e8f3ee; } .inline-card .menu-icon.data-v-17534d15 { width: 72rpx; height: 72rpx; margin-bottom: 14rpx; flex-shrink: 0; } .inline-card-badge.data-v-17534d15 { position: absolute; top: 12rpx; right: 12rpx; padding: 4rpx 10rpx; border-radius: 8rpx; background: #006c49; } .inline-card-badge text.data-v-17534d15 { font-size: 18rpx; font-weight: 700; color: #fff; line-height: 1.2; } .inline-card-title.data-v-17534d15 { font-size: 28rpx; font-weight: 700; color: #0f172a; line-height: 1.25; width: 100%; } .inline-card-sub.data-v-17534d15 { margin-top: 6rpx; font-size: 22rpx; font-weight: 500; color: #64748b; line-height: 1.35; width: 100%; } .inline-card-go.data-v-17534d15 { margin-top: auto; padding-top: 12rpx; font-size: 22rpx; font-weight: 700; color: #006c49; line-height: 1.2; } .inline-scroll-hint.data-v-17534d15 { display: block; margin-top: 14rpx; font-size: 22rpx; font-weight: 600; color: #94a3b8; text-align: center; line-height: 1.35; } @media (prefers-reduced-motion: reduce) { .inline-card.data-v-17534d15:active { transform: none; } }