如何创建一个真正的中心CSS div跨浏览器,例如在保留页面中使用?
我已经尝试过这个2007 css技巧 - How To Center an Object Exactly In The Center ,但正如您从我的JSFiddle代码中看到的那样,它不是100%的中心。
HTML:
<div class="center">
<p>Text</p>
</div>
CSS:
.center{
position: fixed;
top: 50%;
left: 50%;
margin-top: -50px;
margin-left: -100px;
border:5px solid black;
}
答案 0 :(得分:9)
该技术要求元素具有固定的宽度和高度。您没有设置宽度和高度。根据您的边框和边距,要使其居中,宽度需要为190像素,高度需要为90像素。将line-height
和text-align
结合使用固定的宽度和高度可使文本和边框居中。的 Try it. 强>
<强> CSS 强>
.center{
position: fixed;
top: 50%;
left: 50%;
width: 190px;
height: 90px;
line-height: 90px;
text-align: center;
margin-top: -50px;
margin-left: -100px;
border:5px solid black;
}
答案 1 :(得分:9)
您可以使用纯CSS:
html {
width: 100%;
height: 100%;
}
body {
min-width: 100%;
min-height: 100%;
}
div.centeredBlueBox {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
width: 300px;
height: 200px;
background-color: blue;
}
为300px
和auto
提供具体(例如:30%
)而不是派生(例如:width
或height
)值非常重要。
答案 2 :(得分:1)
这就是我做的事情
<html>
<head>
<title>Page Title</title>
<style>
.center { margin:auto; width:500px; background-color:green; }
</style>
</head>
<body>
<div class="center">
<p>Help me please</p>
</div>
</body>
</html>
希望这有帮助。
答案 3 :(得分:1)
这是我的解决方案:
<div style="position: absolute; left: 50%; height: 100%;">
<div style="position: relative; left: -50%; display: table; height: 100%;">
<div style="display: table-cell; vertical-align: middle;">
//your content here
</div>
</div>
</div>
它适用于很多浏览器。布局后添加的内容没有问题。
答案 4 :(得分:1)
这是我为IE垂直对齐创建的高度设置器的额外示例。额外的跨度有一个vertical-align:middle。
<style type="text/css">
html, body {
margin: 0;
padding: 0;
overflow:hidden;
text-align:center;
}
html, body{
height: 100%;
}
#loginContainer {
margin: 0 auto;
display: table;
min-width:300px;
text-align:left;
height: 85%; /* vertical align not exact in the middle */
}
#loginContainer .label{
width: 25%;
float:left;
white-space:nowrap;
line-height:20px;
}
#loginContainer h2{
border-bottom:2px solid #B4C3E1;
border-width:0 0 3px;
padding:2px 4px;
}
.mainHeader {
position:absolute;
top:0;
left:0;
text-align:center;
width:100%;
font-size:2em;
white-space:nowrap;
}
.detailsText {
border-top:1px solid #F60;
margin-top:5px;
clear:both;
}
/* layout horizontal and vertical */
.horizontalBox {
display: table-cell;
vertical-align: middle; /* not seen by IE6-7 */
height: 100%;
white-space: nowrap;
}
.verticalBox {
padding: 55px 0 0 0; /* 55px height of logo */
}
.rightText {
text-align:right;
}
</style>
<!--[if lte IE 8]>
<style type="text/css">
#loginContainer {
width:300px; /* minimum width */
}
.horizontalBox {
text-align: center;
}
.verticalBox, .heightSetter {
display: inline-block;
vertical-align: middle;
text-align: left;
zoom:1;
}
.heightSetter {
height: 100%;
}
.verticalBox {
display: inline;
height: 0;
}
.heightSetter {
width: 1px;
}
</style>
<![endif]-->
<div class="mainHeader">This is the Header content</div>
<div id="loginContainer">
<div class="horizontalBox">
<div class="verticalBox">
<h2>My header of the vertical box</h2>
<p>My Content</p>
</div>
<span class="heightSetter"></span>
</div>
</div>
答案 5 :(得分:1)
查看 this ;非常聪明的文章。
答案 6 :(得分:1)
将display
的{{1}}类型设置为DIV
。然后,您可以使用普通table-cell
,就像vertical-align
元素一样。
TD