![](/img/trans.png)
[英]Creating CSS divs that read top-bottom, left-right and overflow to the right
[英]Rendering a list of divs from left to right in a row, then rendering rows bottom to top (via CSS/jQuery)
我有一种情况,我有一个具有特定顺序的div列表,需要以非常复杂的方式呈现。 简单来说,这是我的HTML:
<div>
<div class="box">1 (first in list)</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
<div class="box">5</div>
<div class="box">6</div>
<div class="box">7</div>
<div class="box">8</div>
<div class="box">9 (last in list)</div>
</div>
我想显示div
的方式是从左到右排成4行,每行从下到上堆叠,如下所示:
9
5 6 7 8
1 2 3 4
我已经创建了一个结果的小提示,显示了我正在追求的内容: http : //jsfiddle.net/mpcjs/ - 但是,我想要一个不需要在HTML中重新排序div
的解决方案。 另请注意, div
的数量是可变的。
这甚至可能吗? 欢迎使用CSS3 / jQuery解决方案!
你应该看看flexbox 。 这里有一个小提示,演示它是如何工作的 ,但我只在Chrome中测试了它。
.flex{
width:400px;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-direction: normal;
-moz-box-direction: normal;
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-flex-wrap: wrap-reverse;
-ms-flex-wrap: wrap-reverse;
flex-wrap: wrap-reverse;
-webkit-box-pack: start;
-moz-box-pack: start;
-webkit-justify-content: flex-start;
-ms-flex-pack: start;
justify-content: flex-start;
-webkit-align-content: stretch;
-ms-flex-line-pack: stretch;
align-content: stretch;}
这可以使用jQuery插件jQuery Masonry 。
替换它(从第287行开始)
var position = {
top: minimumY + this.offset.y
};
同
var position = (this.options.fromBottom) ? {
bottom: minimumY + this.offset.y
} : {
top: minimumY + this.offset.y
};
jsFiddle: http : //jsfiddle.net/fnexE/
我不确定如何从底部堆叠DIV,但这将扭转它们:
HTML:
<div>
<div>
<div class='box'>1</div>
<div class='box'>2</div>
<div class='box'>3</div>
<div class='box'>4</div>
<div class='box'>5</div>
<div class='box'>6</div>
<div class='box'>7</div>
<div class='box'>8</div>
<div class='box'>9</div>
</div>
</div>
CSS:
.box{
float:left;
border:1px solid #000;
width:22%;
margin:1%;
}
jQuery的:
$('div > .box').each(function() {
$(this).prependTo(this.parentNode);
});
如果你想要一个纯CSS解决方案,它会喜欢:
基本的HTML
<div class="container">HOVER ME!
<div class="inner">one</div>
<div class="inner">two</div>
<div class="inner">three</div>
<div class="inner">four</div>
<div class="inner">five</div>
<div class="inner">six</div>
<div class="inner">seven</div>
</div>
我们将内部浮动到右边:
.inner {
float: right;
width: 100px;
height: 100px;
background-color: lightsalmon;
margin: 5px;
font-size: 20px;
}
就这样 ! 好吧,不是全部,你仍然需要盘旋
.container:hover,
.container:hover div {
-webkit-transform: rotate(180deg);
-webkit-transition: all 3s;
}
嗯,这只是为了让它变得有趣,但效果很好,不是吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.