166 lines
3.5 KiB
Plaintext
166 lines
3.5 KiB
Plaintext
/* components/spread-container/spread-container.wxss */
|
||
|
||
/* 通用容器 */
|
||
.spread-wrapper {
|
||
width: 100%;
|
||
padding: 0 40rpx;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/* =========================================
|
||
卡牌单元 (Card Item)
|
||
========================================= */
|
||
.card-slot {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
position: relative;
|
||
/* 默认尺寸,grid 布局使用 */
|
||
width: 124rpx;
|
||
margin-bottom: 24rpx;
|
||
}
|
||
|
||
/* 翻牌场景 */
|
||
.flip-scene {
|
||
width: 100%;
|
||
/* 保持 160:260 比例 -> 1:1.625 */
|
||
/* 或 124:200 -> 1:1.61 */
|
||
aspect-ratio: 2/3;
|
||
perspective: 1000rpx;
|
||
position: relative;
|
||
}
|
||
|
||
.flip-card {
|
||
width: 100%;
|
||
height: 100%;
|
||
position: relative;
|
||
transform-style: preserve-3d;
|
||
transition: transform 0.6s;
|
||
}
|
||
|
||
.flip-card.flipped {
|
||
transform: rotateY(180deg);
|
||
}
|
||
|
||
.card-face {
|
||
position: absolute;
|
||
width: 100%;
|
||
height: 100%;
|
||
backface-visibility: hidden;
|
||
border-radius: 12rpx;
|
||
overflow: hidden;
|
||
box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.2);
|
||
}
|
||
|
||
.face-front {
|
||
transform: rotateY(180deg);
|
||
}
|
||
|
||
.card-image {
|
||
width: 100%;
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
|
||
.card-image.reversed {
|
||
transform: rotate(180deg);
|
||
}
|
||
|
||
/* 文字信息 */
|
||
.pos-info {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
margin-bottom: 8rpx;
|
||
}
|
||
|
||
.pos-name {
|
||
font-size: 22rpx;
|
||
color: #ddd;
|
||
line-height: 1.2;
|
||
text-align: center;
|
||
}
|
||
|
||
.pos-seq {
|
||
font-size: 18rpx;
|
||
color: #aaa;
|
||
}
|
||
|
||
.card-name-sm {
|
||
font-size: 20rpx;
|
||
color: #fff;
|
||
margin-top: 8rpx;
|
||
text-align: center;
|
||
max-width: 120%;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
/* =========================================
|
||
布局 1: Grid (网格)
|
||
========================================= */
|
||
.layout-grid {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
gap: 30rpx;
|
||
padding: 40rpx 0;
|
||
}
|
||
|
||
/* =========================================
|
||
布局系统 2: Celtic Cross (从零重构 - 绝对锁定)
|
||
========================================= */
|
||
|
||
/* 1. 全屏垂直水平居中包装器 (仅 celtic 模式) */
|
||
.spread-wrapper.celtic-mode {
|
||
width: 100%;
|
||
/* 高度设为 100vh 可能会导致不可滚动,这里视情况调整 */
|
||
/* 用户虽然要求 100vh,但在小程序组件中可能会溢出,建议 min-height */
|
||
min-height: 80vh;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/* 2. 核心容器 (600x900rpx) */
|
||
.spread-container {
|
||
position: relative;
|
||
width: 600rpx;
|
||
height: 900rpx;
|
||
/* 调试辅助: border: 1px dashed rgba(255,255,255,0.2); */
|
||
}
|
||
|
||
/* 3. 卡牌通用样式 (绝对定位 + 居中) */
|
||
.stage-card {
|
||
position: absolute;
|
||
transform: translate(-50%, -50%); /* 核心锚点居中 */
|
||
z-index: 10;
|
||
width: 140rpx; /* 适配 600rpx 容器的推荐尺寸 */
|
||
display: flex;
|
||
flex-direction: column; /* 确保文字在下方 */
|
||
justify-content: center;
|
||
align-items: center;
|
||
transition: all 0.3s ease;
|
||
}
|
||
|
||
/* 复写卡牌槽样式以匹配新容器 */
|
||
.spread-container .card-slot {
|
||
width: 100%; /* 跟随 stage-card */
|
||
margin: 0;
|
||
}
|
||
|
||
.spread-container .flip-scene {
|
||
width: 100%;
|
||
height: 210rpx; /* 强制高度 (140 * 1.5) */
|
||
background: rgba(255, 255, 255, 0.1); /* 调试背景,确保占位可见 */
|
||
border-radius: 8rpx;
|
||
}
|
||
|
||
.spread-container .card-face {
|
||
background: #1a1a2e; /* 默认深色背景,防图挂 */
|
||
border: 1px solid rgba(255,255,255,0.2); /* 边框 */
|
||
}
|