如何使用CSS将一个<div>
水平居中于另一个<div>
中?
<div id="outer">
<div id="inner">Foo foo</div>
</div>
我发现了一个可行的选项:
大家都说要使用:
margin: auto 0;
但是还有另一种选项。为父级div设置此属性。这样可以随时完美地实现:
text-align: center;
看,孩子走向中心。
最后为你准备的CSS:
#outer{
text-align: center;
display: block; /* Or inline-block - base on your need */
}
#inner
{
position: relative;
margin: 0 auto; /* It is good to be */
}
$(window).bind("load", function() {
var wwidth = $("#outer").width();
var width = $('#inner').width();
$('#inner').attr("style", "padding-left: " + wwidth / 2 + "px; margin-left: -" + width / 2 + "px;");
});
尝试玩弄一下
margin: 0 auto;
text-align: center;
我们可以使用Flexbox来轻松实现这一点:
<div id="outer">
<div id="inner">Foo foo</div>
</div>
#outer {
display: flex;
justify-content: center;
}
将一个 div 在另一个 div 中 垂直居中:
#outer {
display: flex;
align-items: center;
}
为了让div水平垂直居中:
#outer{
display: flex;
justify-content: center;
align-items: center;
}
只需将此CSS内容添加到您的CSS文件中,它将自动居中内容。
在CSS中水平居中对齐:
#outer {
display: flex;
justify-content: center;
}
CSS中垂直和水平居中对齐:
#outer {
display: flex;
justify-content: center;
align-items: center;
}
水平居中的一种非常简单且跨浏览器的方法是将此规则应用于父元素:
.parentBox {
display: flex;
justify-content: center
}
使用网格布局
一种相当简单和现代的方法是使用 display: grid
:
div {
border: 1px dotted grey;
}
#outer {
display: grid;
place-items: center;
height: 50px; /* not necessary */
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="outer">
<div>Foo foo</div>
</div>
</body>
</html>
我已经将内部 div 应用了内联样式。使用这个:
<div id="outer" style="width:100%">
<div id="inner" style="display:table;margin:0 auto;">Foo foo</div>
</div>
我最近发现了一个好东西,结合使用line-height
+vertical-align
和50%
的左侧技巧,您可以使用纯CSS在水平和垂直方向上将一个动态大小的盒子居中放置在另一个动态大小的盒子内。
请注意,您必须使用(和inline-block
),在现代浏览器+Internet Explorer 8中测试通过。
HTML:
<h1>Center dynamic box using only css test</h1>
<div class="container">
<div class="center">
<div class="center-container">
<span class="dyn-box">
<div class="dyn-head">This is a head</div>
<div class="dyn-body">
This is a body<br />
Content<br />
Content<br />
Content<br />
Content<br />
</div>
</span>
</div>
</div>
</div>
CSS:
.container {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
overflow: hidden;
}
.center {
position: absolute;
left: 50%;
top: 50%;
}
.center-container {
position: absolute;
left: -2500px;
top: -2500px;
width: 5000px;
height: 5000px;
line-height: 5000px;
text-align: center;
overflow: hidden;
}
.dyn-box {
display: inline-block;
vertical-align: middle;
line-height: 100%;
/* Purely asthetic below this point */
background: #808080;
padding: 13px;
border-radius: 11px;
font-family: arial;
}
.dyn-head {
background: red;
color: white;
min-width: 300px;
padding: 20px;
font-size: 23px;
}
.dyn-body {
padding: 10px;
background: white;
color: red;
}
您可以使用CSS 3 Flexbox来实现此功能。在使用Flexbox时,有两种方法可供选择。
display:flex;
并向您的父元素添加属性 {justify-content:center; ,align-items:center;}
#outer {
display: flex;
justify-content: center;
align-items: center;
}
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
display:flex
,并向子元素添加margin:auto;
。#outer {
display: flex;
}
#inner {
margin: auto;
}
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
display:flex;
是最容易记住的(Chrome 在 DevTools 中提供指南),并支持在两个轴上居中。 - Akshay K Nair