因此,我从stackoverflow获得了这三列布局的示例,但是我试图使用flexbox来获取列和行。
我的最终目标是拥有三列的布局(左侧是图片,右侧的两列是文本)。
但是,我需要将所有内容对齐(文本和图像在同一轴上对齐)。
但是我的问题是,当我尝试使用来分隔列中的元素时margin-bottom
,只有文本列1有效(而不是图像列1),并且我不知道为什么。
我希望左栏也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>
您用于应用底边距的选择器存在问题:
.left,
.right,
.middle * {
margin-bottom: 25%;
}
该选择器说:
.left
.right
.middle
这就是为什么您的文本框获得边距的原因-它们是-的后代,.middle
而图像则不是-是-的后代.left
,但是.left
在CSS中没有针对后代。
进行以下调整:
.left *,
.right,
.middle * {
margin-bottom: 25%;
}
另外,请记住,flexbox规范不建议在处理flex项时使用边距和填充百分比(请参阅更多信息)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句