/** * 这里是uni-app内置的常用样式变量 * * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App * */ /** * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 * * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 */ /* 颜色变量 */ /* 行为相关颜色 */ /* 文字基本颜色 */ /* 背景颜色 */ /* 边框颜色 */ /* 尺寸变量 */ /* 文字尺寸 */ /* 图片尺寸 */ /* Border Radius */ /* 水平间距 */ /* 垂直间距 */ /* 透明度 */ /* 文章场景相关 */ /* ============================================================ * 设计 token —— 浅色清爽 * ============================================================ */ /* ============================================================ * 页面容器 * ============================================================ */ .page.data-v-a75aa31b { position: relative; min-height: 100vh; box-sizing: border-box; padding: 30rpx 28rpx 50rpx; background: #f8fafc; display: flex; flex-direction: column; align-items: center; gap: 20rpx; color: #0f172a; } /* ============================================================ * 统一运动律动视区 (Canvas) * ============================================================ */ .stage-canvas-wrapper.data-v-a75aa31b { width: 100vw; margin-left: -28rpx; margin-right: -28rpx; flex-shrink: 0; /* 防止被压缩 */ height: 600rpx; /* 固定高度,不随内容变化 */ display: flex; justify-content: center; align-items: center; margin-bottom: 24rpx; position: relative; } /* ============================================================ * 音色选择器 * ============================================================ */ .sound-selector.data-v-a75aa31b { width: 100%; display: flex; gap: 14rpx; margin-bottom: 20rpx; } .sound-option.data-v-a75aa31b { flex: 1; background: #ffffff; border: 2rpx solid rgba(15, 23, 42, 0.06); border-radius: 24rpx; padding: 20rpx 16rpx; display: flex; align-items: center; justify-content: center; gap: 10rpx; box-shadow: 0 4rpx 12rpx rgba(15, 23, 42, 0.04); transition: all 0.18s; } .sound-option .sound-icon.data-v-a75aa31b { font-size: 32rpx; } .sound-option .sound-label.data-v-a75aa31b { font-size: 26rpx; font-weight: 600; color: #475569; letter-spacing: 1rpx; } .sound-option.data-v-a75aa31b:active { transform: scale(0.97); } .sound-option.active.data-v-a75aa31b { background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%); border-color: #10b981; box-shadow: 0 8rpx 20rpx rgba(16, 185, 129, 0.18), inset 0 0 0 2rpx rgba(16, 185, 129, 0.4); } .sound-option.active .sound-label.data-v-a75aa31b { color: #047857; } /* ============================================================ * 三档位推荐 * ============================================================ */ .presets.data-v-a75aa31b { width: 100%; display: flex; gap: 14rpx; } .preset.data-v-a75aa31b { flex: 1; background: #ffffff; border: 2rpx solid rgba(15, 23, 42, 0.06); border-radius: 24rpx; padding: 26rpx 8rpx; display: flex; flex-direction: column; align-items: center; gap: 8rpx; box-shadow: 0 4rpx 12rpx rgba(15, 23, 42, 0.04); transition: all 0.18s; } .preset .preset-name.data-v-a75aa31b { font-size: 28rpx; font-weight: 700; color: #0f172a; letter-spacing: 2rpx; } .preset .preset-bpm.data-v-a75aa31b { font-size: 22rpx; color: #475569; font-weight: 600; font-variant-numeric: tabular-nums; } .preset .preset-desc.data-v-a75aa31b { font-size: 18rpx; color: #94a3b8; letter-spacing: 1rpx; margin-top: 2rpx; } .preset.data-v-a75aa31b:active { transform: scale(0.97); } .preset.active.data-v-a75aa31b { background: #d1fae5; border-color: #10b981; box-shadow: 0 8rpx 20rpx rgba(16, 185, 129, 0.18), inset 0 0 0 2rpx rgba(16, 185, 129, 0.4); } .preset.active .preset-name.data-v-a75aa31b { color: #047857; } .preset.active .preset-bpm.data-v-a75aa31b { color: #047857; } .preset.active .preset-desc.data-v-a75aa31b { color: #10b981; } /* ============================================================ * 自定义节奏区域(标题栏 + 折叠内容) * ============================================================ */ .custom-section.data-v-a75aa31b { width: 100%; margin-top: 12rpx; } .custom-header.data-v-a75aa31b { width: 100%; padding: 16rpx 6rpx; display: flex; align-items: center; justify-content: center; } .custom-header .custom-title.data-v-a75aa31b { font-size: 22rpx; color: #94a3b8; letter-spacing: 0.5rpx; } .custom-header .custom-title.data-v-a75aa31b:active { color: #475569; } .custom-content.data-v-a75aa31b { width: 100%; background: #ffffff; border: 2rpx solid rgba(245, 158, 11, 0.25); border-radius: 24rpx; box-shadow: 0 6rpx 18rpx rgba(245, 158, 11, 0.08); padding: 20rpx 24rpx 22rpx; display: flex; flex-direction: column; gap: 16rpx; margin-top: 8rpx; } .custom-warn.data-v-a75aa31b { display: flex; align-items: center; gap: 8rpx; margin-bottom: 4rpx; } .custom-warn .warn-dot.data-v-a75aa31b { font-size: 18rpx; color: #f59e0b; } .custom-warn .warn-text.data-v-a75aa31b { font-size: 22rpx; color: #b45309; letter-spacing: 0.5rpx; font-weight: 600; } .row.data-v-a75aa31b { display: flex; align-items: center; justify-content: space-between; gap: 12rpx; } .row .row-label.data-v-a75aa31b { font-size: 24rpx; color: #475569; font-weight: 600; letter-spacing: 1rpx; flex-shrink: 0; width: 70rpx; } .bpm-stepper.data-v-a75aa31b { display: flex; align-items: center; gap: 6rpx; flex: 1; justify-content: flex-end; } .bpm-stepper .step-btn.data-v-a75aa31b { min-width: 56rpx; height: 52rpx; line-height: 52rpx; text-align: center; font-size: 22rpx; color: #475569; background: #f1f5f9; border-radius: 10rpx; font-weight: 600; padding: 0 10rpx; font-variant-numeric: tabular-nums; } .bpm-stepper .step-btn.data-v-a75aa31b:active { background: #e2e8f0; transform: scale(0.94); } .bpm-stepper .step-val.data-v-a75aa31b { min-width: 84rpx; height: 52rpx; line-height: 52rpx; text-align: center; font-size: 30rpx; font-weight: 800; color: #0f172a; font-variant-numeric: tabular-nums; background: #fef3c7; border-radius: 10rpx; } .meter-tabs.data-v-a75aa31b { display: flex; gap: 8rpx; } .meter-tabs .meter-tab.data-v-a75aa31b { height: 52rpx; line-height: 52rpx; padding: 0 18rpx; font-size: 22rpx; color: #475569; background: #f1f5f9; border-radius: 10rpx; font-weight: 600; letter-spacing: 1rpx; } .meter-tabs .meter-tab.active.data-v-a75aa31b { background: #f59e0b; color: #fff; box-shadow: 0 4rpx 10rpx rgba(245, 158, 11, 0.3); } .meter-tabs .meter-tab.data-v-a75aa31b:active { transform: scale(0.94); } /* ============================================================ * 底部行(已废弃,保留样式以防引用) * ============================================================ */ .bottom-row.data-v-a75aa31b { width: 100%; margin-top: 6rpx; display: flex; align-items: center; justify-content: space-between; padding: 0 6rpx; } .bottom-link.data-v-a75aa31b { font-size: 22rpx; color: #94a3b8; letter-spacing: 0.5rpx; padding: 8rpx 4rpx; } .bottom-link.data-v-a75aa31b:active { color: #475569; } .bottom-hint.data-v-a75aa31b { font-size: 22rpx; color: #94a3b8; letter-spacing: 0.5rpx; }