Dev*_*ker 3 html css css3 media-queries responsive-design
我试图让我的2个div(它们是并排的)在移动设备上观看时更改为堆叠的div,如小提琴中所示,但我希望"两个在顶部,"一个"在第二个.
这是代码 - http://jsfiddle.net/d3d4hb3t/
.one {
border: 1px solid green;
width: 29%;
float: left;
height: 100px;
}
.two {
border: 1px solid blue;
width: 69%;
float: right;
height: 100px;
}
@media (max-width: 767px) {
.one {
width: 100%;
}
.two {
width: 100%;
}
}Run Code Online (Sandbox Code Playgroud)
<div class="one">one</div>
<div class="two">two</div>Run Code Online (Sandbox Code Playgroud)
我知道简单的解决方案是交换第一个和第二个div,但由于我的代码很复杂,我希望只使用CSS有一个更简单的解决方案.
更新
在下面添加了一个flexbox方法:
.wrap {
display: flex;
}
.one {
width: 30%;
border: 1px solid green;
}
.two {
width: 70%;
border: 1px solid blue;
}
@media (max-width: 767px) {
.wrap {
flex-direction: column-reverse;
}
.one,
.two {
width: auto;
}
}Run Code Online (Sandbox Code Playgroud)
<div class="wrap">
<div class="one">1</div>
<div class="two">2</div>
</div>Run Code Online (Sandbox Code Playgroud)
原始答案
如果你坚持使用标记,你仍然可以使用魔术css表格布局来改变2个div的顺序.我更新了所有内容,只是为了保持一致性.
这些display价值观如何运作,来自MDN:
display: table;- 表现得像<table>元素.
display: table-cell;- 表现得像<td>元素.
display: table-header-group;- 表现得像<thead>元素.
display: table-footer-group;- 表现得像<tfoot>元素.
.wrap {
display: table;
border-collapse: collapse;
width: 100%;
}
.one,
.two {
display: table-cell;
}
.one {
width: 30%;
border: 1px solid green;
}
.two {
width: 70%;
border: 1px solid blue;
}
@media (max-width: 767px) {
.one {
display: table-footer-group;
width: 100%;
}
.two {
display: table-header-group;
width: 100%;
}
}Run Code Online (Sandbox Code Playgroud)
<div class="wrap">
<div class="one">1</div>
<div class="two">2</div>
</div>Run Code Online (Sandbox Code Playgroud)