所以我从stackoverflow得到了这个三列布局示例,但是我试图使用flexbox来获取列和行。
我的最终目标是拥有一个三列布局(左侧是图片,右侧两列是文本)。
但是,我需要排列所有内容(文本和图像在同一轴上对齐)。
但我的问题是,当我尝试使用margin-bottom
将列中的元素分开时,只有文本列一个正在工作(而不是图像一个),我无法弄清楚为什么
我希望左列margin-bottom
也可以正常工作。但即使我为所有列添加margin-bottom
,只有具有div的那些列才有效。
我是否应该将我的图像放入div中?
这是我面临的问题的图像:
* {
margin: 0;
}
html,
body {
height: 100%;
}
.container {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: flex-start;
align-items: stretch;
width: 80%;
height: 100%;
margin: 0 auto;
}
.left {
display: flex;
flex-flow: column wrap;
align-items: flex-start;
justify-content: flex-start;
order: 1;
background: red;
flex-basis: 100%;
height: 100%;
}
.middle {
display: flex;
flex-flow: column wrap;
align-content: flex-start;
justify-content: flex-start;
order: 3;
background: green;
flex-basis: 100%;
height: 100%;
}
.right {
order: 2;
background: yellow;
flex-basis: 100%;
height: 100%;
}
.box {
display: flex;
flex-flow: column wrap;
align-items: flex-start;
justify-content: flex-start;
height: 50px;
width: 50px;
}
@media screen and (min-width: 600px) {
.container {
flex-wrap: nowrap;
}
.left {
flex-basis: 1;
order: 1;
}
.middle {
flex-basis: 1;
order: 2;
}
.right {
flex-basis: 1;
order: 3;
}
}
.left,
.right,
.middle * {
margin-bottom: 25%;
}

<div class="container">
<div class="left">
<img src="cat1.jpeg" alt="cat">
<img src="cat1.jpeg" alt="cat">
</div>
<div class="middle">
<div class="box">`
<p>texteiehiefief texteiehiefief texteiehiefief texteiehiefief</p>
</div>
<div class="box">`
<p>texteiehiefief texteiehiefief texteiehiefief texteiehiefief</p>
</div>
</div>
<div class="right"></div>
</div>
&#13;
答案 0 :(得分:1)
您使用的选择器是否存在应用下边距的问题:
.left,
.right,
.middle * {
margin-bottom: 25%;
}
这个选择器说:
.left
.right
.middle
这就是为什么你的文本框获得边距 - 他们是.middle
的后代 - 而你的图片不是 - 他们是.left
的后代,但是你的CSS中的.left
不是针对后代的。
进行此调整:
.left *,
.right,
.middle * {
margin-bottom: 25%;
}
另外,保持心情,Flexbox规范不鼓励在处理弹性项目时使用边距和填充的百分比(read more)。