如何将div中的内容水平和垂直居中?
答案 0 :(得分:20)
要水平对齐,它非常直接:
<style type="text/css">
body {
margin: 0;
padding: 0;
text-align: center;
}
.bodyclass #container {
width: ???px; /*SET your width here*/
margin: 0 auto;
text-align: left;
}
</style>
<body class="bodyclass ">
<div id="container">type your content here</div>
</body>
对于垂直对齐,这有点棘手: 这是source
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Universal vertical center with CSS</title>
<style>
.greenBorder {border: 1px solid green;} /* just borders to see it */
</style>
</head>
<body>
<div class="greenBorder" style="display: table; height: 400px; #position: relative; overflow: hidden;">
<div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
<div class="greenBorder" style=" #position: relative; #top: -50%">
any text<br>
any height<br>
any content, for example generated from DB<br>
everything is vertically centered
</div>
</div>
</div>
</body>
</html>
答案 1 :(得分:15)
这应该符合您的需求。这是一个CSS-2D过渡技巧。我最近遇到了以下解决方案:
* {
font-family: Arial;
font-size: 14px;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
*:after,
*:before {
content: "";
display: table;
}
*:after {
clear: both;
}
.title {
font-family: Georgia;
font-size: 36px;
line-height: 1.25;
margin-top: 0;
}
.blocks {
position: relative;
}
.block {
position: relative;
display: inline-block;
float: left;
width: 200px;
height: 200px;
font-weight: bold;
color: #FFFFFF;
margin-right: 10px;
margin-bottom: 10px;
}
.block:first-child {
background-color: green;
}
.block:nth-child(2) {
background-color: red;
}
.block:nth-child(3) {
background-color: blue;
}
.h-center {
text-align: center;
}
.v-center span {
position: absolute;
left: 0;
right: 0;
top: 50%;
transform: translate(0, -50%);
}
<h1 class="title">3 Boxes with different text-align settings.</h1>
<div class="blocks">
<div class="block h-center">horizontally centered lorem ipsun dolor sit amet</div>
<div class="block v-center"><span>vertically centered lorem ipsun dolor sit amet lorem ipsun dolor sit amet</span></div>
<div class="block h-center v-center"><span>horizontally and vertically centered lorem ipsun dolor sit amet</span></div>
</div>
注意:这也适用于:after和:之前的伪元素。
您还可以在此处阅读:css-tricks.com
您可以在此处进行测试:jsfiddle
答案 2 :(得分:0)
所有调整css。 如果可能的话,用桌子包起来 高度和宽度为100%和 td将其设置为垂直对齐到中间,文本对齐到中心
答案 3 :(得分:0)
通过使用transform:就像一个吊饰一样!
<div class="parent">
<span>center content using transform</span>
</div>
//CSS
.parent {
position: relative;
height: 200px;
border: 1px solid;
}
.parent span {
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}