css如何制作扑克
使用CSS制作扑克牌
通过CSS的transform和box-shadow属性可以创建具有3D翻转效果的扑克牌。以下是一个基础实现方案:
<div class="poker">
<div class="front">♠</div>
<div class="back"></div>
</div>
.poker {
width: 100px;
height: 150px;
position: relative;
perspective: 1000px;
}
.front, .back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
}
.front {
background: white;
transform: rotateY(0deg);
}
.back {
background: repeating-linear-gradient(
45deg,
#ff0000,
#ff0000 10px,
#ffffff 10px,
#ffffff 20px
);
transform: rotateY(180deg);
}
.poker:hover .front {
transform: rotateY(180deg);
}
.poker:hover .back {
transform: rotateY(0deg);
}
扑克牌花色与数值设计
添加扑克牌的数值和花色需要更复杂的HTML结构和CSS样式:

<div class="card ace-spades">
<div class="corner top-left">
<span>A</span>
<span>♠</span>
</div>
<div class="symbol">♠</div>
<div class="corner bottom-right">
<span>A</span>
<span>♠</span>
</div>
</div>
.card {
width: 120px;
height: 180px;
background: white;
border-radius: 10px;
position: relative;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
}
.corner {
position: absolute;
font-size: 16px;
text-align: center;
}
.top-left {
top: 10px;
left: 10px;
}
.bottom-right {
bottom: 10px;
right: 10px;
transform: rotate(180deg);
}
.symbol {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 60px;
}
.ace-spades .symbol {
color: black;
}
.ace-hearts .symbol {
color: red;
}
创建完整扑克牌组
要创建完整的52张牌组,可以使用CSS变量和伪元素:

:root {
--card-width: 100px;
--card-height: 150px;
}
.deck {
display: grid;
grid-template-columns: repeat(13, var(--card-width));
gap: 15px;
}
.card {
width: var(--card-width);
height: var(--card-height);
position: relative;
border-radius: 8px;
background: white;
}
.card::before,
.card::after {
content: attr(data-value);
position: absolute;
font-size: 1rem;
}
.card::before {
top: 5px;
left: 5px;
}
.card::after {
bottom: 5px;
right: 5px;
transform: rotate(180deg);
}
.card[data-suit="hearts"],
.card[data-suit="diamonds"] {
color: red;
}
.card[data-suit="clubs"],
.card[data-suit="spades"] {
color: black;
}
添加动画效果
为扑克牌添加发牌动画:
@keyframes deal {
0% {
transform: translateY(-100px) rotate(0deg);
opacity: 0;
}
100% {
transform: translateY(0) rotate(360deg);
opacity: 1;
}
}
.card {
animation: deal 0.5s ease-out forwards;
animation-delay: calc(var(--order) * 0.1s);
}
在HTML中为每张牌设置--order变量:
<div class="card" style="--order: 1" data-value="A" data-suit="hearts"></div>
<div class="card" style="--order: 2" data-value="2" data-suit="hearts"></div>






