说我有三个div - Red Green和Blue,带有以下基本标记和样式:https://jsfiddle.net/ar8sn1o6/
<div id="main-input" contenteditable="true">Hello world!</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
但我希望在桌面上显示两列,在移动设备上显示一列,如this。 虽然合理地直接有红色 - &gt;蓝色 - &gt;绿色移动布局,我需要改为红色 - &gt;绿色 - &gt;蓝色布局
这是否可以不重复任何HTML?
答案 0 :(得分:1)
可以使用media queries
查看此文章以了解更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries
<强>语法强>
媒体查询由可选的媒体类型组成,并且可以作为 CSS3规范,包含零个或多个表达式,表示为 媒体功能,可以解析为真或假。的结果 如果媒体查询中指定的媒体类型,则查询为true 匹配文档显示的设备类型和所有 媒体查询中的表达式为真。
请参阅下面的代码段。调整大小以使其正常工作!
.red, .green, .blue {
display: inline-block;
float: left;
margin: 1%;
width: 48%;
}
.red {
background: red;
height: 50px;
}
.green {
background: green;
height: 100px;
}
.blue {
background: blue;
height: 50px;
}
@media (max-width: 400px) {
.red, .green, .blue {
display: block;
width: 100%;
}
}
&#13;
<div class="red">Red</div>
<div class="green">Green</div>
<div class="blue">Blue</div>
&#13;
仅使用CSS无法实现您想要实现的目标。 我试着解释为什么不。
使用float: left
或display: inline-block
设置元素样式时。它们的父元素具有最高height
的{{1}}。因此,插入新行的每个新块都将在最高的前一个孩子的底部对齐。
因此无法根据需要对齐它们。但是,您可以在其周围包裹child
。然后只需添加div
或float: left;
。请参阅此示例: https://jsfiddle.net/ar8sn1o6/2/
注意:强>
使用float时,父元素将丢失其
display: inline-block
。您可以通过将height
添加到父元素来解决此问题。或使用clearfix。请参阅:https://css-tricks.com/snippets/css/clear-fix/
答案 1 :(得分:0)
当设备的视口小于某个/指定的大小时,您可以使用媒体查询指定某些CSS。
例如:
@media screen and (max-width: 480px) {
container {
width: 100%;
}
.blue {
background-color: blue;
width: 90%;
height: 50px;
}
}
这意味着如果设备的宽度小于480px,这些样式将生效。我想如果你把它们都放在一个容器中并且它们都有90%的宽度,它们会在移动视图中逐个对齐。
希望有所帮助
答案 2 :(得分:0)
放置容器并添加媒体查询
.red, .green, .blue {
display: inline-block;
margin: 1%;
}
.red {
background: red;
height: 50px;
width:100%;
}
.green {
background: green;
height: 100px;
}
.blue {
background: blue;
height: 50px;
width:100%;
}
.container, .green{
float:left;
width: 48%;
}
@media only screen
and (max-width: 480px) {
.container, .green{
width: 100%;
}
}
&#13;
<div class="container">
<div class="red">Red</div>
<div class="blue">Blue</div>
</div>
<div class="green">Green</div>
&#13;