给定一个模板,HTML不能修改,因为其他要求,如何可能显示(重新安排)一个div上面的另一个div时,他们不是在HTML的顺序?两个div都包含高度和宽度不同的数据。
<div id="wrapper">
<div id="firstDiv">
Content to be below in this situation
</div>
<div id="secondDiv">
Content to be above in this situation
</div>
</div>
Other elements
希望期望的结果是显而易见的:
Content to be above in this situation
Content to be below in this situation
Other elements
当尺寸是固定的,很容易定位他们在需要的地方,但我需要一些想法,当内容是可变的。为了实现这个场景,请将两者的宽度都考虑为100%。
我特别寻找一个css唯一的解决方案(它可能必须满足其他解决方案,如果它不成功)。
接下来还有其他因素。考虑到我演示的有限场景,我提到了一个很好的建议——考虑到它可能是最好的答案,但我也希望确保后面的元素不受影响。
仅css的解决方案(适用于IE10+) -使用Flexbox的order属性:
演示:http://jsfiddle.net/hqya7q6o/596/
#flex{显示:flex;flex-direction:列;}
#a {order: 2;}
#b {order: 1;}
#c {order: 3;}
flex < div id = " " >
< div id = " " > < / div >
b < div id = " b " > < / div >
c < div id = " c " > < / div >
< / div >
更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/order
仅css的解决方案(适用于IE10+) -使用Flexbox的order属性:
演示:http://jsfiddle.net/hqya7q6o/596/
#flex{显示:flex;flex-direction:列;}
#a {order: 2;}
#b {order: 1;}
#c {order: 3;}
flex < div id = " " >
< div id = " " > < / div >
b < div id = " b " > < / div >
c < div id = " c " > < / div >
< / div >
更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/order
这可以使用Flexbox来完成。
创建一个同时应用display:flex和flex-flow:column-reverse的容器。
/* -- Where the Magic Happens -- */
.container {
/* Setup Flexbox */
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
/* Reverse Column Order */
-webkit-flex-flow: column-reverse;
flex-flow: column-reverse;
}
/* -- Styling Only -- */
.container > div {
background: red;
color: white;
padding: 10px;
}
.container > div:last-of-type {
background: blue;
}
<div class="container">
<div class="first">
first
</div>
<div class="second">
second
</div>
</div>
来源:
https://css-tricks.com/using-flexbox/
https://developer.mozilla.org/en-US/docs/Web/CSS/flex-flow#Browser_compatibility