这是我的方法。我不确定将两个 div 相互嵌套是出于旋转目的还是有其他含义。无论如何,我是这样做的:
.views-row {
width: 130px;
height: 130px;
-webkit-transform: rotate(45deg);
}
.views-row-first {
-webkit-transform-origin: 195px center;
}
.views-row-even {
-webkit-transform-origin: center center;
}
.views-row-odd {
-webkit-transform: rotate(-45deg);
-webkit-transform-origin: -65px center;
}
每个都.views-row
被旋转并且变换原点都指向中间 div 的中心。请注意,这些transform-origin
值是宽度的一半 (130px / 2) 的倍数。
有关完整的 CSS,请参阅更新的 FIDDLE。我还添加了一个:hover
属性,.diamonds-container
以便您可以看到它们都是可点击的。
更新
使用您添加的图片,问题变得更加复杂。但我想通了。
提示:如果你等不及小提琴 - 你会在答案的底部找到它。
想法:
方盒嵌套两次。每 2 个.diamond
盒子都用.pair-wrapper
div 包裹。该 div 旋转45 度,并沿其容器重复几次。每个甚至 .pair-wrapper
都增加了宽度以正确定位其右侧邻居。
一堆.pair-wrappers
被包裹着.line-wrapper
。您可以根据需要添加尽可能多.line-wrappers
的.pair-wrapper
内容(请记住 -.pair-wrappers
如果它们不合适,将进入新行)。
最后,每个.line-wrapper
都有固定的高度和隐藏的溢出,以从顶部和底部限制其子区域。每个.pair-wrapper
都相对定位并且具有负值top
。
该解决方案主要基于固定值,我都可以想出一个更好的主意。
编码
示例 HTML 标记如下所示:
<div class="line-wrapper line-wrapper-odd">
<div class="pair-wrapper pair-wrapper-odd">
<div class="diamond-box"></div>
<div class="diamond-box"></div>
</div>
<div class="pair-wrapper pair-wrapper-even">
<div class="diamond-box"></div>
<div class="diamond-box"></div>
</div>
<div class="pair-wrapper pair-wrapper-odd">
<div class="diamond-box"></div>
<div class="diamond-box"></div>
</div>
</div>
<div class="line-wrapper line-wrapper-even">
<div class="pair-wrapper pair-wrapper-odd">
<div class="diamond-box"></div>
<div class="diamond-box"></div>
</div>
.....
</div>
.....
以及 CSS 中最重要的部分(小提琴中的完整 CSS):
.line-wrapper {
height: 170px;
overflow: hidden;
}
.line-wrapper-even {
margin-left: -92px;
}
.pair-wrapper {
width: 130px;
position: relative;
top: -26px;
-webkit-transform: rotate(45deg);
}
.pair-wrapper-odd {
-webkit-transform-origin: 65px 65px;
}
.pair-wrapper-even {
-webkit-transform-origin: 92px 131px;
width: 239px;
}
.diamond-box {
width: 130px;
height: 130px;
}
小提琴
http://jsfiddle.net/N3V6J/3/