Files
fitness-coach/miniprogram/pages/detail/detail.wxml
wm a0894837bd ux: 动作收藏按钮从顶部浮窗移到底部,与加入计划并排 + 图标美化
- detail 顶部 favbtn 浮窗(需避让胶囊、丑)移除,改为底部 addbar 内与 CTA 并排的方形按钮
- fc-icon 新增 filled 属性:收藏态实心心形(Lucide 描边图标默认 fill=none,filled=true 时 fill=stroke 变实心)
- 收藏按钮美化:圆角 24rpx 方形 + 发丝边框,未收藏描边(text-2)、已收藏实心(accent)+ accent-soft 底色 + accent-ring 边框 + 点按 scale 反馈
- detail.js 清理 favRight/favTop 胶囊避让逻辑(不再需要)
2026-07-22 23:25:17 +08:00

82 lines
3.3 KiB
Plaintext
Raw 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.

<view class="page" wx:if="{{exercise}}">
<navbar title="{{exercise.displayName || exercise.name}}" show-back />
<view class="hero">
<image
wx:if="{{heroSrc && !heroError}}"
class="hero__img"
src="{{heroSrc}}"
mode="aspectFill"
lazy-load="true"
binderror="onHeroError" />
<view wx:else class="hero__ph"><fc-icon name="dumbbell" size="72" color="var(--text-3)" /></view>
<!-- 上层叠一个动图播放器Canvas 逐帧播放 GIF微信 image 不播 GIF -->
<gif-player wx:if="{{heroGif}}" class="hero__gif" src="{{heroGif}}" />
</view>
<view class="body section">
<view class="name">{{exercise.displayName || exercise.name}}</view>
<view class="metas">
<view class="meta"><view class="meta__k">部位</view><view class="meta__v">{{exercise.bodyPartLabel}}</view></view>
<view class="meta"><view class="meta__k">器械</view><view class="meta__v">{{exercise.equipmentLabel}}</view></view>
<view class="meta"><view class="meta__k">目标</view><view class="meta__v gold-text">{{exercise.targetLabel}}</view></view>
<view class="meta"><view class="meta__k">类型</view><view class="meta__v">{{exercise.typeLabel}}</view></view>
</view>
<view class="block" wx:if="{{exercise.muscleGroupLabel}}">
<view class="block__h eyebrow">主要肌群</view>
<view class="chips">
<text class="tag tag--gold">{{exercise.muscleGroupLabel}}</text>
</view>
</view>
<view class="block" wx:if="{{exercise.secondaryMusclesLabels.length}}">
<view class="block__h eyebrow">协同肌群</view>
<view class="chips">
<text wx:for="{{exercise.secondaryMusclesLabels}}" wx:key="*this" class="tag">{{item}}</text>
</view>
</view>
<view class="block" wx:if="{{exercise.instructionSteps.zh.length}}">
<view class="block__h eyebrow">动作步骤</view>
<view class="steps">
<view class="step" wx:for="{{exercise.instructionSteps.zh}}" wx:key="index">
<view class="step__n">{{index + 1}}</view>
<view class="step__t">{{item}}</view>
</view>
</view>
</view>
<view class="block" wx:if="{{exercise.instructions.zh}}">
<view class="block__h eyebrow">要点提示</view>
<view class="tips">{{exercise.instructions.zh}}</view>
</view>
</view>
<view class="section" wx:if="{{related.length}}">
<view class="block__h eyebrow">相关推荐</view>
<scroll-view scroll-x class="hscroll">
<view class="hscroll__item" wx:for="{{related}}" wx:key="id">
<exercise-card exercise="{{item}}" compact catch:tap="onExercise" />
</view>
</scroll-view>
</view>
<view class="addbar">
<view class="addbar__inner">
<view class="fav {{favorited ? 'fav--on' : ''}}" hover-class="fav--hover" bindtap="onToggleFav">
<fc-icon name="heart" size="40" color="{{favorited ? 'var(--accent)' : 'var(--text-2)'}}" filled="{{favorited}}" />
</view>
<view class="cta" bindtap="onAdd">{{ planId ? '加入该计划' : '加入计划' }}</view>
</view>
</view>
</view>
<view wx:else class="empty-page">
<view class="topbar" style="padding-top: {{statusBarHeight}}px;">
<view class="topbar__back" bindtap="onBack"></view>
</view>
<view class="empty">{{ loading ? '加载中…' : '未找到该动作' }}</view>
</view>