huaanglimeng/components/spread-container/spread-container.wxml

83 lines
3.1 KiB
Plaintext
Raw Normal View History

<!-- components/spread-container/spread-container.wxml -->
<!-- 1. 卡牌单元模板 -->
<template name="card-item">
<view class="card-slot" style="{{extraStyle}}" bindtap="handleCardTap" data-index="{{card._index}}">
<!-- 位置信息 -->
<view class="pos-info">
<text class="pos-name">{{card._posName}}</text>
<!-- <text class="pos-seq">NO.{{card._seq}}</text> -->
</view>
<!-- 翻牌场景 -->
<view class="flip-scene">
<view class="flip-card {{card._index < revealedCount ? 'flipped' : ''}}">
<!-- 背面 -->
<view class="card-face face-back">
<image class="card-image" src="/images/beimian.png" mode="aspectFit" />
</view>
<!-- 正面 -->
<view class="card-face face-front">
<image
class="card-image {{card.isReversed ? 'reversed' : ''}}"
src="{{card.image}}"
mode="aspectFit"
/>
</view>
</view>
</view>
<!-- 牌名称 (翻开后显示) -->
<text class="card-name-sm" wx:if="{{card._index < revealedCount}}">{{card.name}}</text>
</view>
</template>
<view class="spread-wrapper {{spread.layout.type === 'celtic' ? 'celtic-mode' : ''}}">
<!-- =========================================
布局 1: Grid (网格)
直接遍历 displayList无特殊定位
========================================= -->
<view class="layout-grid" wx:if="{{spread.layout.type === 'grid'}}">
<block wx:for="{{displayList}}" wx:key="_index">
<template is="card-item" data="{{card: item, revealedCount: revealedCount, extraStyle: ''}}" />
</block>
</view>
<!-- =========================================
布局 2: Celtic Cross (舞台模式 - 600x900rpx)
使用 displayList 中的 _style 进行绝对定位
========================================= -->
<view class="spread-container" wx:if="{{spread.layout.type === 'celtic'}}">
<block wx:for="{{displayList}}" wx:key="_index">
<view class="stage-card" style="{{item._style}}" bindtap="handleCardTap" data-index="{{item._index}}">
<!-- 复用 card-item 内部结构,但不使用 template 以避免 style 冲突 -->
<view class="card-slot">
<view class="pos-info">
<text class="pos-name">{{item._posName}}</text>
</view>
<view class="flip-scene">
<view class="flip-card {{item._index < revealedCount ? 'flipped' : ''}}">
<view class="card-face face-back">
<image class="card-image" src="/images/beimian.png" mode="aspectFit" />
</view>
<view class="card-face face-front">
<image
class="card-image {{item.isReversed ? 'reversed' : ''}}"
src="{{item.image}}"
mode="aspectFit"
/>
</view>
</view>
</view>
<text class="card-name-sm" wx:if="{{item._index < revealedCount}}">{{item.name}}</text>
</view>
</view>
</block>
</view>
</view>