Cha*_*lie 83
最近正在看这个问题,并尝试过:
HTML:
<body>
<div id="my-div"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
CSS:
#my-div {
position: absolute;
height: 100px;
width: 100px;
left: 50%;
top: 50%;
background: red;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
}
Run Code Online (Sandbox Code Playgroud)
这是小提琴:
在使用"width/height:auto"时,它甚至可以在固定尺寸的位置使用.测试了Firefox,Chrome和IE上的最新版本(*gasp*).
Cra*_*lot 34
注意:此示例使用Flexible Box布局模块的草稿版本.它已被不兼容的现代规范所取代.
通过将box-align和box-pack属性放在一起,使div框的子元素居中.
例:
div
{
width:350px;
height:100px;
border:1px solid black;
/* Internet Explorer 10 */
display:-ms-flexbox;
-ms-flex-pack:center;
-ms-flex-align:center;
/* Firefox */
display:-moz-box;
-moz-box-pack:center;
-moz-box-align:center;
/* Safari, Opera, and Chrome */
display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center;
/* W3C */
display:box;
box-pack:center;
box-align:center;
}
Run Code Online (Sandbox Code Playgroud)
And*_*nko 32
使用Flexbox:
.container {
display: flex;
/* Vertical align: */
align-items: center;
/* Horizontal align: */
justify-content: center;
}
Run Code Online (Sandbox Code Playgroud)
jsFiddle:http://jsfiddle.net/maars/8Uyvf
浏览器支持:http://caniuse.com/flexbox(某些浏览器需要前缀)
几种方式:
1.绝对定位 - 你需要有一个声明的高度来完成这项工作:
<div>
<div class='center'>Hey</div>
</div>
div {height: 100%; width: 100%; position: relative}
div.center {
width: 100px;
height: 100px;
top: 50%;
margin-top: -50px;
}
Run Code Online (Sandbox Code Playgroud)
*2.使用display:table http://jsfiddle.net/B7CpL/2/*
<div>
<img src="/img.png" />
<div class="text">text centered with image</div>
</div>
div {
display: table;
vertical-align: middle
}
div img,
div.text {
display: table-cell;
vertical-align: middle
}
Run Code Online (Sandbox Code Playgroud)
http://css-tricks.com/vertically-center-multi-lined-text/