我正在尝试在CSS中创建一堆扑克牌,其中每张牌都与前一张牌对角略微偏移。这就是它的样子:
.card {
float: left;
width: 100px;
height: 140px;
background-color: #fff;
border: 1px solid #000;
border-radius: 5px;
}
.card:nth-child(2) {
margin-left: -98px;
margin-top: -2px;
}
.card:nth-child(3) {
margin-left: -98px;
margin-top: -4px;
}
.card:nth-child(4) {
margin-left: -98px;
margin-top: -6px;
}
/* and so on... */
示例:http://jsfiddle.net/coev55w6/
我知道我可以通过为每张卡指定不同的边距来实现,但我想知道是否有更好的方法。
创建纯粹的水平偏移很容易:
.card {
float: left;
width: 100px;
height: 140px;
background-color: #fff;
border: 1px solid #000;
border-radius: 5px;
}
.card:not(:first-child) {
margin-left: -98px;
}
纯粹垂直也很容易。但有没有办法只用几个CSS规则来获得对角偏移?
答案 0 :(得分:4)
这有点像黑客,但如果你使用你提供的第二个选项,你最终会得到这种效果:
.card:not(:first-child)
在每张卡片后加<br>
:
<div>
<div class=card></div><br>
<div class=card></div><br>
<div class=card></div><br>
<div class=card></div><br>
</div>
的jsfiddle: http://jsfiddle.net/e4o0k2o5/
如果您使用line-height
或<br>
以外的其他内容,则可能会对其进行微调。
答案 1 :(得分:2)
我不确定您是否愿意或能够更改HTML,但这是一个很好的替代HTML布局和CSS,以实现您想要的卡片传播。
.card {
width: 100px;
height: 140px;
background-color: #fff;
border: 1px solid #000;
border-radius: 5px;
position: relative;
margin-top: 10px;
margin-left: 10px;
}
.card2 {
width: 100px;
height: 140px;
background-color: #fff;
border: 1px solid #000;
border-radius: 5px;
position: relative;
margin-top: -10px;
margin-left: 10px;
}
&#13;
<div>
<div class="card">
<div class="card">
<div class="card">
<div class="card"></div>
</div>
</div>
</div>
<br/>
<br/>
<br/>
<br/>
<div>
<div class="card2">
<div class="card2">
<div class="card2">
<div class="card2"></div>
</div>
</div>
</div>
</div>
&#13;