要使 HTML 元素居中,我可以使用 CSS left: 50%;
。但是,这会使元素相对于整个窗口居中。
我有一个元素,它是 <div>
元素的子元素,我想将子元素相对于这个父 <div>
,而不是整个窗口。
我不希望容器 <div>
将其 所有 内容居中,只是一个特定的孩子。
原文由 Randomblue 发布,翻译遵循 CC BY-SA 4.0 许可协议
要使 HTML 元素居中,我可以使用 CSS left: 50%;
。但是,这会使元素相对于整个窗口居中。
我有一个元素,它是 <div>
元素的子元素,我想将子元素相对于这个父 <div>
,而不是整个窗口。
我不希望容器 <div>
将其 所有 内容居中,只是一个特定的孩子。
原文由 Randomblue 发布,翻译遵循 CC BY-SA 4.0 许可协议
实际上,这对于 CSS3 flex boxes 来说非常简单。
.flex-container{
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6, BB7 */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Safari 6.1+. iOS 7.1+, BB10 */
display: flex; /* NEW, Spec - Firefox, Chrome, Opera */
justify-content: center;
align-items: center;
width: 400px;
height: 200px;
background-color: #3498db;
}
.inner-element{
width: 100px;
height: 100px;
background-color: #f1c40f;
}
<div class="flex-container">
<div class="inner-element"></div>
</div>
看来我在写这个答案时没有阅读 OP 编辑。 上面的代码将使所有内部元素居中(它们之间没有重叠),但 OP 只希望将特定元素居中,而不是其他内部元素。所以@Warface 回答第二种方法更合适,但它仍然需要垂直居中:
.flex-container{
position: relative;
/* Other styling stuff */
width: 400px;
height: 200px;
background-color: #3498db;
}
.inner-element{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
/* or 3d alternative if you will add animations (smoother transitions) */
transform: translate3d(-50%,-50%,0);
/* Other styling stuff */
width: 100px;
height: 100px;
background-color: #f1c40f;
}
<div class="flex-container">
<p>Other inner elements like this follows the normal flow.</p>
<div class="inner-element"></div>
</div>
原文由 Gerard Reches 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.9k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.2k 阅读
2 回答972 阅读✓ 已解决
将
text-align:center;
设置为父 div,将margin:auto;
设置为子 div。这是一个很好的资源来集中任何东西。
http://howtocenterincss.com/