@import '../../style/theme.less'; page { background-color: @bg-page; } .lt-page { min-height: 100vh; padding: 0 @page-padding-x; padding-bottom: calc(200rpx + env(safe-area-inset-bottom)); box-sizing: border-box; } .lt-main { padding-top: 24rpx; display: flex; flex-direction: column; /* space-y-8 = 32px → 64rpx */ gap: 64rpx; } /* ===== 预览卡 (rounded-xl shadow-sm p-8 border) ===== */ .lt-preview-wrap { position: relative; } .lt-preview-card { background: @bg-white; border-radius: @radius-xl; box-shadow: @shadow; padding: 48rpx; border: @border; box-sizing: border-box; display: flex; flex-direction: column; align-items: stretch; } .lt-preview-kicker { display: block; text-align: center; /* text-xs = 12px → 24rpx */ font-size: @fs-section-head-title; font-weight: bold; color: @text-secondary; // 设置字母间距,使文本字符之间有更宽的间隔,提升可读性和美观性 letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 40rpx; } .lt-canvas-wrap { display: flex; justify-content: center; align-items: center; min-height: 400rpx; background: @bg-gray; border-radius: @radius-sm; border: 2rpx dashed rgba(50, 46, 37, 0.12); overflow: hidden; } .lt-canvas { max-width: 100%; border-radius: @radius-sm; box-shadow: @shadow; } /* ===== 参数面板 (bg-surface-container rounded-xl p-6 space-y-6) ===== */ .lt-params { /* surface-container = #f0e7d6 */ background: @bg-card; border-radius: @radius-xl; padding: 48rpx; box-sizing: border-box; display: flex; flex-direction: column; gap: 48rpx; box-shadow: @shadow; } /* 标题行 (gap-2 = 8px → 16rpx) */ .lt-params-head { display: flex; flex-direction: row; align-items: center; gap: 16rpx; } .lt-params-emoji { /* text-xl = 20px → 40rpx */ font-size: 40rpx; line-height: 1; } .lt-params-title { /* text-lg = 18px → 36rpx */ font-size: @fs-section-head-title; font-weight: 700; color: @text-title; } /* 参数区块内间距 (space-y-3 = 12px → 24rpx) */ .param-block { display: flex; flex-direction: column; /* space-y-3 = 12px → 24rpx */ gap: 24rpx; } /* 字段标签 (text-sm font-bold text-on-surface-variant ml-1) */ .lt-field-label { display: block; /* text-sm = 14px → 28rpx */ font-size: 28rpx; font-weight: 700; /* on-surface-variant = #605b50 */ color: @text-secondary; /* ml-1 = 4px → 8rpx */ margin-left: 8rpx; } /* ===== 练习类型 Tab (grid-cols-2 gap-2 bg-surface-container-high p-1.5 rounded-lg) ===== */ .lt-mode-seg { display: grid; grid-template-columns: 1fr 1fr; /* gap-2 = 8px → 16rpx */ gap: 16rpx; /* p-1.5 = 6px → 12rpx */ padding: 12rpx; /* surface-container-high = #eae2d0 */ background: #eae2d0; border-radius: 32rpx; box-sizing: border-box; } /* 未选中 item (py-2.5 px-3 text-sm font-medium rounded-lg text-on-surface-variant) */ .lt-mode-item { display: flex; align-items: center; justify-content: center; /* py-2.5 = 10px → 20rpx; px-3 = 12px → 24rpx */ padding: 20rpx 24rpx; /* rounded-lg = 8px → 16rpx */ border-radius: 32rpx; background: transparent; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); // transition: all 1s ease; box-sizing: border-box; } /* 选中 item (bg-primary-container text-on-primary-container font-bold shadow-sm) */ .lt-mode-item--active { /* primary-container = #ffd709 */ background: @brand; box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.08); } .lt-mode-item__text { /* text-sm = 14px → 28rpx */ font-size: 28rpx; /* 未选中 font-medium = 500 */ font-weight: 500; /* on-surface-variant = #605b50 */ color: @text-secondary; //#5b4b00 line-height: 40rpx; text-align: center; } /* 选中态字色 (on-primary-container = #5b4b00, font-bold = 700) */ .lt-mode-item--active .lt-mode-item__text { /* on-primary-container = #5b4b00 */ color: @text-selected-btn; font-weight: 700; } /* ===== 字母选择网格 (grid-cols-6 gap-2) ===== */ .lt-letter-grid { display: grid; /* 稿 grid-cols-6 */ grid-template-columns: repeat(6, 1fr); /* gap-2 = 8px → 16rpx */ gap: 16rpx; } /* 字母格子 (aspect-square rounded-lg bg-surface-container-lowest) */ .lt-letter-cell { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border-radius: 32rpx; /* surface-container-lowest = #ffffff */ background: @bg-white; box-sizing: border-box; /* 不用 :active:小程序 view 上背景色常在松手后才刷新;用 hover-class 才能按下即变色,并做过渡 */ transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease; } /* 按下态(hover-class):与选中态同色,松手后由 --active 保持 */ .lt-letter-cell--pressed { transform: scale(0.95); background: @brand; box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.08); } /* 选中字母 (bg-[#FFD700] text-[#6c5a00] shadow-sm) */ .lt-letter-cell--active { background: @brand; box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.08); // box-shadow: @btn-shadow-pressed; } .lt-letter-text { /* text-lg = 18px → 36rpx */ font-size: 36rpx; font-weight: 700; /* on-surface-variant = #605b50 */ color: @text-secondary; line-height: 1; transition: color 0.2s ease; } .lt-letter-cell--active .lt-letter-text { /* #6c5a00 */ color: @text-selected-btn; } .lt-letter-cell--pressed .lt-letter-text { color: @text-selected-btn; } /* ===== 大小写切换 ===== */ .lt-chip-row { display: flex; flex-direction: row; /* gap-2 = 8px → 16rpx */ gap: 16rpx; } /* 未选中 chip (同练习类型 item 风格) */ .lt-chip { flex: 1; text-align: center; /* py-2.5 px-3 */ padding: 20rpx 24rpx; /* text-sm = 14px → 28rpx */ font-size: 28rpx; font-weight: 500; line-height: 40rpx; color: @text-secondary; background: #fff; /* rounded-lg */ border-radius: 32rpx; transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1); } /* 按下态(hover-class),未选与已选 chip 共用 */ .lt-chip--pressed { transform: scale(0.96); background: @brand; color: @text-selected-btn; font-weight: 700; box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.08); } /* 选中 chip (同练习类型选中态) */ .lt-chip--active { background: @brand; color: @text-selected-btn; font-weight: 700; box-shadow: 0 2rpx 8rpx rgba(50, 46, 37, 0.08); } /* 换一批:自定义描边按钮(对齐 stitch 粗边框 + 图标文案横排,避免 toy-button 覆盖成本) */ .lt-shuffle-btn { box-sizing: border-box; width: 100%; height: 108rpx; padding: 0 32rpx; border-radius: 32rpx; border: 8rpx solid @bg-card; background: transparent; display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 12rpx; /* 与字母格/chip 一致:view 上勿依赖 :active 做背景或稳定缩放,用 hover-class */ transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1); } /* 稿 active:scale-[0.98],按下时略铺底便于看出过渡 */ .lt-shuffle-btn--hover { transform: scale(0.98); opacity: 0.92; background-color: rgba(234, 226, 208, 0.55); } /* toy-icon 自定义组件宿主节点默认 display:inline,须强制为 inline-flex 方可参与 flex 对齐 */ .lt-shuffle-btn toy-icon { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; } .lt-shuffle-btn__text { font-size: 36rpx; font-weight: 700; line-height: 1; color: @text-secondary; transition: color 0.2s cubic-bezier(0.4, 0, 0.2, 1); } .lt-spacer-bottom { height: 24rpx; }