我有两个div,
<div class="right"></div>
<div class="left"></div>
按此顺序。对于那些想知道为什么我这样订购HTML元素的人,请检查this问题。右侧div具有固定宽度以及CSS属性; float:right;
因此,当页面调整大小时,左侧div将展开以占据页面的其余部分。
然而,在某个宽度,我希望两个div都是100%宽,但堆叠使得右边的div 我意识到这与html元素的排序有关,但有没有办法使这个工作?我尝试了this线程的解决方案,但它似乎不起作用。 我有一个小提琴here。 修改 好的,所以我发现了答案。我错过了一个父容器 div,需要 CSS (虽然我无法让它在小提琴中工作......) 所以这里只有CSS解决方案,如果有人将来需要它。 答案 0 :(得分:1) 一种解决方案可能是使用 如果符合您的需要,请尝试使用此代码: <强> HTML 强> <强> CSS 强> 聚苯乙烯。我将rgb值更改为红色和蓝色以提高可读性。 检查此演示: 答案 1 :(得分:1) 您可以使用 DEMO http://jsfiddle.net/EXn6Z/12/ 答案 2 :(得分:1) 您可以(ab)使用 Codepen:http://codepen.io/anon/pen/vdbcB 相关CSS(MQ): 如果您可以使用 Codepen:http://codepen.io/anon/pen/eIfmn HTML: 相关CSS(MQ): 即使这两个选项有效,也会导致问题,我建议您不要使用它们,除非您真的没有其他选择(例如桌面和平板电脑上的复杂布局,现在可以移动分辨率 - 首先在桌面 - 并且您的HTML订单已经设置,或者您的客户不会让更改HTML) 与可访问性相关的问题:WCAG 2.0技术H4:Creating a logical tab order through links, form controls, and objects 答案 3 :(得分:0) 你可能不喜欢这个,因为它涉及jQuery,但总的来说它非常简单: 小提琴:http://jsfiddle.net/LimitedWard/6ZE3B/ 这种技术避免了不必要/重复的元素。 此技术也不是黑客攻击(与使用 注意:有一些方法可以提高效率,但这应该可以很好地完成工作。 答案 4 :(得分:0) 如果两个div在一个容器中是独立的(可能是 警告:如果两个 HTML: CSS: 答案 5 :(得分:0) Flexbox 布局可以是水平或垂直,可让您随意重新排列容器子级的顺序。 Codepen:http://codepen.io/anon/pen/FnLhu HTML: 相关CSS(带有前缀为 这是我对这个问题的第二个答案,没有 答案 6 :(得分:0) 这是 这样的标记: 示例:http://jsfiddle.net/RVk9Q/1/ 不要忘记使用所需的前缀 答案 7 :(得分:-1) 在您需要的地方添加另一个 HTML: CSS: <强> JSFIDDLE 强> display:table;
现在效果很好。<div class="container">
<div class="right"></div>
<div class="left"></div>
</div>
.container {
display:table;
}
8 个答案:
transform: scaleY(-1);
和包装器。<div class="wrapper">
<div class="right"></div>
<div class="left"></div>
</div>
.left {
overflow: hidden;
min-height: 50px;
border: 2px dashed blue;
}
.right {
float: right;
width: 250px;
min-height: 50px;
margin-left: 10px;
border: 2px dashed red;
}
@media only screen and (max-width: 600px) {
.right {
float: left;
width: 100%;
}
.left {
float: left;
width: 100%;
}
.wrapper{
width:100%;
position: absolute;
float: left;
-webkit-transform: scaleY(-1);
transform: scaleY(-1);
}
div.wrapper > div {
position: relative;
float: right;
display: block;
min-height: 50px;
-webkit-transform: scaleY(-1);
transform: scaleY(-1);
}
}
display: table
属性。这不支持边框@media only screen and (max-width: 600px) {
.main {
display: table;
}
.right {
display: table-footer-group;
float: none;
width: 100%;
}
.left {
display: table-header-group;
float: none;
width: 100%;
}
}
display: table-caption
的强大功能使元素显示在其他元素之上,即使它出现在您的HTML代码中,尽管其他元素必须在display: table-row
这里没有边框或背景如果您需要.left
上的背景或边框,则必须添加额外的div。@media only screen and (max-width: 600px) {
.right {
display: table-row;
float: none;
width: 100%;
margin-left: 0;
}
.left {
display: table-caption;
overflow: visible;
width: 100%;
}
}
display: table
添加父div,那么您不必强制display: table-row
div.right
(更好的选项imho)。这是由于浏览器创建的匿名框,当3个元素的完美系列table > row > cell
完全没有...复杂的东西。<div class="table-like">
<div class="right">On right or below Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto error maiores quos incidunt quaerat atque amet perspiciatis ad quae maxime, possimus tempore rerum laudantium, fugit laborum sint consequatur eveniet veniam?</div>
<div class="left">On left or above</div>
</div>
@media only screen and (max-width: 600px) {
.table-like {
display: table;
width: 100%;
}
.right {
float: none;
width: auto;
margin-left: 0;
}
.left {
display: table-caption;
overflow: visible;
width: auto;
}
}
$(window).resize(function(){
if($(window).width() <= 600) {
$('.right').before($('.left'));
} else {
$('.right').after($('.left'));
}
});
display:table
)的其他答案不同。body
),那么只需将第一个div
粘贴到底部(使用position: absolute
和{{ 1}})并向第二个bottom: 0
添加margin-bottom
。所有这些当然都在相关的媒体查询部分。div
都有可变高度,那可能会有点困难。div
<div id="container">
<div id="right">nav</div>
<div id="left">content</div>
</div>
<div class="small-flex small-flex-v">
<div class="right small-ml0 small-wauto">On right or below</div>
<div class="left small-flex-start">On left or above</div>
</div>
.small-
的类的MQ):@media only screen and (max-width: 600px) {
.small-flex {
display : -webkit-box;
display : -moz-box;
display: -ms-flexbox;
display : -webkit-flex;
display : flex;
}
.small-flex-v {
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.small-flex-start {
-webkit-box-ordinal-group: -1;
-moz-box-ordinal-group: 0;
-ms-flex-order : -1;
-webkit-order : -1;
-moz-order : -1;
order : -1;
}
}
table-caption
技巧
使用display: table-caption
优于table-*-group
或@ Victor的解决方案:这些元素的边框和/或背景没有问题
缺点:当display: table-*
是IE8 + display: flex
用法的解决方案:.wrap {
display: flex;
flex-flow: row wrap;
}
.left {
min-height: 50px;
border: 2px dashed #f0f;
order: 1;
flex-grow: 1;
}
.right {
min-height: 50px;
border: 2px dashed #00f;
order: 2;
width: 200px;
margin-left: 10px;
}
@media only screen and (max-width: 600px) {
.right,
.left {
flex: 1 100%;
margin: 0;
}
}
<div class="wrap">
<div class="right">right</div>
<div class="left">left</div>
</div>
div
,然后使用display
隐藏/显示正确的地址。<div class="right-large"></div>
<div class="left"></div>
<div class="right-mobile"></div>
.left {
overflow: hidden;
min-height: 50px;
border: 2px dashed #f0f
}
.right-large, .right-mobile {
float: right;
width: 250px;
min-height: 50px;
margin-left: 10px;
border: 2px dashed #00f
}
.right-mobile{
display: none;
}
@media only screen and (max-width: 600px) {
.right-large{
display: none;
}
.right-mobile {
display: block;
float: right;
width: 100%;
}
}