我想在一个div里用flex方式做出这种布局,请教应该怎么做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想在一个div里用flex方式做出这种布局,请教应该怎么做相关的知识,希望对你有一定的参考价值。
①到⑦都是父div的子div,①是纵向最长的子div,②到⑦是其他6个子div,现在我希望①~④的width相等,样子就像图片的这样,最好使用flex布局,因为表格布局不好添加子div(考虑到父div的width变大后,一行要变得能放更多个子div),使用float虽说是个不错的选择但我要怎么保证每列的width相等且正好填充满父div呢,我想使用flex的是考虑的有一个flex:1的属性,会自动填充满父div,而且子div设置min-width后父div的width变大后也容易在行里增加子div,但无法保证①和②③④的width相等,求给一个比较好的方案!
<div class="center"><div class="left">
1
</div>
<div class="right">
<div class="div d2">2</div>
<div class="div d3">3</div>
<div class="div d4">4</div>
<div class="div d5">5</div>
<div class="div d6">6</div>
<div class="div d7">7</div>
</div>
</div>
<style>
.centerwidth:800px; height:300px; margin:auto; background:#DC4244;
.center .left,.cente .right,.center .right .divfloat:left;
.center .leftheight:300px; background:#7353F3;
.center .right .divheight:150px;
.center .left,.center .right .divwidth:25%;
.center .right .d2,.center .right .d4,.center .right .d6background:#E616EC;
</style>
效果如图
追问非常感谢但是,有一个很重要的属性就是,当“.center”的width扩大后,后面子元素可以加入空白扩大后的空白(在width很小时靠近more的div是隐藏的),以填满.center,而不是用百分比填满它。就像这几张图片似得,不同的是第一个div是跨行的
在 flex 中以 100% 的高度拟合图像
【中文标题】在 flex 中以 100% 的高度拟合图像【英文标题】:Fit image with height 100% in flex 【发布时间】:2017-03-02 14:05:32 【问题描述】:我在 div 中有一个响应式背景图像。我想在它上面有一个两列的 flex 布局,其中左侧布局的图像高度为父 div 的 100%,宽度自动缩放,如响应图像。右边是一个以 flex 为中心的两行文本。
这是迄今为止我能得到的最接近的。但是 flex 不会拉伸以适应背景 div 图像,并且当浏览器调整大小时,左侧图像不会相应地缩放。
注意:不要在代码中指定以px为单位的宽高
.parent
display: flex;
align-items: center;
.left
height: 100%;
.right
flex: 1;
background: blue;
<div style="position: relative;">
<img src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTkyfCkzwQ7Lx4v3YRNao0lQgM-VkEj6iLWTHE8KqHF5tk4cl15WQ" style="width: 100%">
<div style="position: absolute; top: 0; bottom: 0; left: 0; right: 0;">
<div class="parent">
<div class="left">
<img src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRsxhzGxiYQU_vp2YlN1LTMxQsYMhFDqTZLwfqMylCwqIahCu00Mf_0aDQ">
</div>
<div class="right">
<p>
123
</p>
<p>
456
</p>
</div>
</div>
</div>
</div>
期望:
【问题讨论】:
这样的? jsfiddle.net/tgrs0uo4/1 @Michael_B 很近,但不幸的是没有。我在左栏中创建了一个带有方形图像的 [jsfiddle] (jsfiddle.net/tgrs0uo4/4) 以进行说明。如您所见,方形图像不保持弹性框内图像的纵横比(1:1) 试试这个:jsfiddle.net/tgrs0uo4/5 @Michael_B 更近了,但仍然缺少一些东西。图片不占用背景图片 div 的高度。理想情况下,图像高度应与背景图像 div 高度相同,同时保持图像自身的比例 只需从.left
容器中删除align-items: center
:jsfiddle.net/tgrs0uo4/6
【参考方案1】:
删除
align-items: center;
来自parent
div。
如果要居中对齐文本元素,请使用padding
或position: relative/position: absolute
然后申请
height: 100%;
图片。
【讨论】:
我已经更新了fiddle中的代码。浏览器调整大小时,我看不到左侧图像按比例缩放。并且 flex(或左图)高度不占背景图高度的 100%。以上是关于我想在一个div里用flex方式做出这种布局,请教应该怎么做的主要内容,如果未能解决你的问题,请参考以下文章