布局问题:中心有两个固定列
Layout Issue: Two Fixed Columns in Center
鉴于标签 #1 和标签 #4 分别向左和向右浮动,我如何将标签 #2 和标签 #3 定位在 panel
div 的中心。
我还想在浏览器宽度达到一定高度时,将 Label #2 和 Label #3 移动到 Label #1 和 Label #4 下面。所以 Label #1 和 Label #4 应该在一起,Label #2 和 Label #3 也应该在它们的正下方。
在此处查看我的示例:http://jsfiddle.net/p7ws5cxx
html, body {
font-family:'Helvetica Neue', Arial, sans-serif;
font-size: 14px;
font-weight: 500;
}
#panel {
width: 100%;
background: #ddd;
display: block;
height: auto;
float: left;
}
.box-1, .box-2, .box-3, .box-4 {
border: 2px solid #aaa;
background: #fff;
padding: 1em;
width: auto;
float: left;
border-radius: 2px;
display: inline-block;
}
.center-box {
margin: 0 auto;
float :left;
border: 1px solid blue;
text-align: center;
}
.box-4 {
float: right;
}
@media screen and (max-width: 568px) {
.box-1, .box-4 {
width: 50%;
float: left;
}
.center-box {
margin: 0 auto;
}
}
<div id="panel">
<span class="box-1">Label #1</span>
<div class="center-box">
<span class="box-2">Label #2</span>
<span class="box-3">Label #3</span>
</div>
<span class="box-4">Label #4</span>
</div>
假设允许更改 HTML 元素的顺序,则可以通过 float
将 .box-1
/.box-4
更改为 left
来实现布局/right
并将其他框显示为内联元素。
然后为了使它们在面板的中心对齐,我们可以将 text-align: center
添加到 .center-box
元素。
另请注意,在内联流程中,有一个 whitespace between inline-level elements。消除差距的一种选择是将父级的 font-size
设置为 0
,然后将其重新设置为子级的默认值。
*, *:before, *:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html, body {
font: 500 14px 'Helvetica Neue', Arial, sans-serif;
}
#panel {
background: #ddd;
}
#panel:after,
#panel:before {
content: "";
display: table;
}
.box-1, .box-2, .box-3, .box-4 {
border: 2px solid #aaa;
background: #fff;
padding: 1em;
border-radius: 2px;
}
.box-1 {
float: left;
}
.box-4 {
float: right;
}
.box-2, .box-3 {
display: inline-block;
vertical-align: top;
font-size: 14px;
}
.center-box {
border: 1px solid blue;
text-align: center;
font-size: 0;
}
@media screen and (max-width: 568px) {
[class^="box-"] {
width: 50%;
}
}
<div id="panel">
<span class="box-1">Label #1</span>
<span class="box-4">Label #4</span>
<div class="center-box">
<span class="box-2">Label #2</span>
<span class="box-3">Label #3</span>
</div>
</div>
鉴于标签 #1 和标签 #4 分别向左和向右浮动,我如何将标签 #2 和标签 #3 定位在 panel
div 的中心。
我还想在浏览器宽度达到一定高度时,将 Label #2 和 Label #3 移动到 Label #1 和 Label #4 下面。所以 Label #1 和 Label #4 应该在一起,Label #2 和 Label #3 也应该在它们的正下方。
在此处查看我的示例:http://jsfiddle.net/p7ws5cxx
html, body {
font-family:'Helvetica Neue', Arial, sans-serif;
font-size: 14px;
font-weight: 500;
}
#panel {
width: 100%;
background: #ddd;
display: block;
height: auto;
float: left;
}
.box-1, .box-2, .box-3, .box-4 {
border: 2px solid #aaa;
background: #fff;
padding: 1em;
width: auto;
float: left;
border-radius: 2px;
display: inline-block;
}
.center-box {
margin: 0 auto;
float :left;
border: 1px solid blue;
text-align: center;
}
.box-4 {
float: right;
}
@media screen and (max-width: 568px) {
.box-1, .box-4 {
width: 50%;
float: left;
}
.center-box {
margin: 0 auto;
}
}
<div id="panel">
<span class="box-1">Label #1</span>
<div class="center-box">
<span class="box-2">Label #2</span>
<span class="box-3">Label #3</span>
</div>
<span class="box-4">Label #4</span>
</div>
假设允许更改 HTML 元素的顺序,则可以通过 float
将 .box-1
/.box-4
更改为 left
来实现布局/right
并将其他框显示为内联元素。
然后为了使它们在面板的中心对齐,我们可以将 text-align: center
添加到 .center-box
元素。
另请注意,在内联流程中,有一个 whitespace between inline-level elements。消除差距的一种选择是将父级的 font-size
设置为 0
,然后将其重新设置为子级的默认值。
*, *:before, *:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html, body {
font: 500 14px 'Helvetica Neue', Arial, sans-serif;
}
#panel {
background: #ddd;
}
#panel:after,
#panel:before {
content: "";
display: table;
}
.box-1, .box-2, .box-3, .box-4 {
border: 2px solid #aaa;
background: #fff;
padding: 1em;
border-radius: 2px;
}
.box-1 {
float: left;
}
.box-4 {
float: right;
}
.box-2, .box-3 {
display: inline-block;
vertical-align: top;
font-size: 14px;
}
.center-box {
border: 1px solid blue;
text-align: center;
font-size: 0;
}
@media screen and (max-width: 568px) {
[class^="box-"] {
width: 50%;
}
}
<div id="panel">
<span class="box-1">Label #1</span>
<span class="box-4">Label #4</span>
<div class="center-box">
<span class="box-2">Label #2</span>
<span class="box-3">Label #3</span>
</div>
</div>