我在Codepen上尝试使用CSS中的一些东西(jst以便更熟悉CSS),并遇到了一个我无法垂直居中的问题。这使我感到困惑,因为我能够将所有的孩子移动到中心。谢谢你的帮助!
https://codepen.io/Shayodonn10/pen/xWKgda
.bg{
display: block;
margin-left: auto;
margin-right: auto;
background-color: black;
width: 800px;
height: 800px;
left: 50%;
}
.red {
display: block;
margin-left: auto;
margin-right: auto;
border-radius: 20px;
width: 100px;
height: 75px;
background-image: linear-gradient(to right, #f78ca0 0%, #f9748f 19%, #fd868c 60%, #fe9a8b 100%);
}
.blue{
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
width: 100px;
height: 50px;
background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%);;
top: 50px;
}
.green{
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
width: 100px;
height: 50px;
background-image: linear-gradient(to top, #0ba360 0%, #3cba92 100%);
top: 50px;
}
.stick{
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
width: 30px;
height: 80px;
background-image: linear-gradient(60deg, #29323c 0%, #485563 100%);
top: 50px;
}

<div class="bg">
<div class="red" />
<div class="blue" />
<div class="green" />
<div class="stick" />
</div>
&#13;
答案 0 :(得分:-1)
对你的css进行一些更改并添加一个包装div(和修复语义)你可以用flex实现效果
有关FLEX
有很多关于flex的好指南,this是我的GOTO
Comment
.bg{
display: flex;
background-color: black;
width: 800px;
height: 800px;
justify-content:center;
flex-direction:column;
}
.red {
display: block;
margin-left: auto;
margin-right: auto;
border-radius: 20px;
width: 100px;
height: 75px;
background-image: linear-gradient(to right, #f78ca0 0%, #f9748f 19%, #fd868c 60%, #fe9a8b 100%);
}
.blue{
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
width: 100px;
height: 50px;
background-image: linear-gradient(to top, #fbc2eb 0%, #a6c1ee 100%);;
top: 50px;
}
.green{
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
width: 100px;
height: 50px;
background-image: linear-gradient(to top, #0ba360 0%, #3cba92 100%);
top: 50px;
}
.stick{
position: relative;
display: block;
margin-left: auto;
margin-right: auto;
width: 30px;
height: 80px;
background-image: linear-gradient(60deg, #29323c 0%, #485563 100%);
top: 50px;
}
答案 1 :(得分:-1)
垂直居中一直是CSS中的一个问题。但是您可以使用一些选项来集中它。
选项1
使用flexbox
:
.parent {
display: flex;
flex-direction: column;
justify-content: center;
}
选项2
使用已知元素高度的position:absolute
:
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
height: 100px;
margin-top: -50px; /* account for padding and border if not using box-sizing: border-box; */
}
选项3
使用元素未知高度的position:absolute
:
.parent {
position: relative;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
选项4
这个不是推荐!使用表格:
.parent_wrap {
display: table;
}
.parent {
display: table-cell;
vertical-align:middle;
}
答案 2 :(得分:-1)
你的笔有些问题。
div
不是自我关闭的。您必须有结束标记div
已经是块级别,因此您无需指定您可以使用flexbox进行垂直居中。我在这里拍了一张照片 - https://codepen.io/chetansastry/pen/JLPWLY
答案 3 :(得分:-2)
像这样的影响:
<强> CSS 强>
.cn {
position: relative;
width: 500px;
height: 500px;
}
.inner {
position: absolute;
top: 50%; left: 50%;
transform: translate(-50%,-50%);
width: 200px;
height: 200px;
}
<强> HTML 强>
<div class="cn"><div class="inner">your content</div></div>