我是HTML / CSS的新手,我自己制作了第一个网页。目前正在为代码学院进行最后一个CSS项目。
最长的时间我一直在摆弄,只是想不通。我正在尝试将所有元素集中在.mainContainer
中。我猜“标题”应该和盒子放在同一个容器中,但是我不知道如何使它显示在盒子的上方,并且所有内容都居中(x和y)。
下面是我能得到的最接近的。框的底部似乎居中,但我需要所有内容居中。我不明白的是为什么我在.mainContainer中有inline-block
,而在.boxContainer中却有flex
。如果删除其中一个,则会丢失居中位置。我不认为我可以使用多个显示器...那里发生了什么事?
https://jsfiddle.net/ichristian/ce9mou4w/2/
HTML
<div class='mainContainer'>
<h2>Title</h2>
<div class='boxContainer'>
<div class='box'>
<p>Box 1</p>
</div>
<div class='box'>
<p>Box 2</p>
</div>
<div class='box'>
<p>Box 3</p>
</div>
</div>
</div>
CSS
.mainContainer{
background-color: orange;
height: 200px;
width: 400px;
align-items: center;
text-align: center;
display: inline-block;
}
.boxContainer {
display: flex;
align-content: center;
justify-content: center;
align-items: center;
}
.box {
background-color: black;
color: white;
height: 40px;
width: 40px;
}
.box + .box {
margin-left: 40px;
}
编辑:不喜欢推荐问题的解决方案。我在下面选择的答案要容易得多。
答案 0 :(得分:1)
四个外部容器,您可以将flex-direction
设置为column
,将内部容器设置为row
。
.mainContainer {
display: flex;
align-items:center;
justify-content: center;
flex-direction: column;
background-color: orange;
height: 200px;
width: 400px;
}
h2 {
margin: 0 0 20px 0;
}
.boxContainer {
display: inherit;
flex-direction: row;
}
.box {
background-color: black;
color: white;
height: 40px;
width: 40px;
margin: 0 20px;
}
<div class='mainContainer'>
<h2>Title</h2>
<div class='boxContainer'>
<div class='box'>
<p>Box 1</p>
</div>
<div class='box'>
<p>Box 2</p>
</div>
<div class='box'>
<p>Box 3</p>
</div>
</div>
</div>
最终可以使用margin
(例如,margin-bottom
元素上的<h2>
)分隔标题及其兄弟容器。
答案 1 :(得分:0)
执行此操作:
.mainContainer {
background-color: orange;
height: 200px;
width: 400px;
align-items: center;
text-align: center;
margin-left:auto;
margin-right:auto;
}
https://jsfiddle.net/aviboy2006/j7za04xu/2/也进行了一些小的更改。
增加了更大的宽度和高度:
https://jsfiddle.net/aviboy2006/j7za04xu/5/
在垂直和水平方向上居中:
.mainContainer {
background-color: orange;
position: absolute;
top: 50%;
left: 50%;
-moz-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
padding:10px;
text-align:center;
}