如何在3栏布局中使用固定宽度居中的栏?
我想要将红色框放到条带的中间,并且只需要10厘米宽。左边和右边的内容应该是作为附加的图像。表示左侧容器应与左侧内容对齐,右侧内容应与右侧对齐。
我的HTML:
<div class="row">
<div class="meta-left">
<p>Left Contents with align left...</p>
</div>
<div class="logo-bg-top"></div>
<div class="meta-right">
<p>Right Contents with align right...</p>
</div>
</div>
这是我在css中尝试的方式:
.row {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
.row .logo-bg-top {
flex: 0 0 9em;
background: red;
}
有人能指导我解决此问题吗?
解决方案
as NiettheDarkAbsolsaid in the comments,最好使用grid layout:
如果要使用网格,可以将display: grid;
添加到主容器中,然后使用grid-template-columns: 1fr 10em 1fr;
指定其中的项。
fr
表示文档宽度的一部分,因此由于布局是1⁄3(我们有3个不同的子元素),中间的fr
表示文档的(100%-10em)⁄2宽度。
.row {
display: grid;
grid-template-columns: 1fr 10em 1fr;
}
.row [class*="meta"] {
background: blue;
color: white;
}
.row .meta-right {
text-align: right;
}
.row .logo-bg-top {
background: red;
}
<div class="row">
<div class="meta-left">
<p>Left Contents with align left...</p>
</div>
<div class="logo-bg-top"></div>
<div class="meta-right">
<p>Right Contents with align right...</p>
</div>
</div>
但如果您坚持使用flexbox layout,这可能是一种执行此类操作的方法:
数据-lang="js"数据-隐藏="真"数据-控制台="假"数据-巴贝尔="假">.row {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
justify-content: center;
}
.row [class*="meta"] {
background: blue;
color: white;
flex: 1;
}
.row .meta-right {
text-align: right;
}
.row .logo-bg-top {
flex: 0 0 10em;
background: red;
}
<div class="row">
<div class="meta-left">
<p>Left Contents with align left...</p>
</div>
<div class="logo-bg-top"></div>
<div class="meta-right">
<p>Right Contents with align right...</p>
</div>
</div>
相关文章