我试图在一个 div 中垂直和水平地居中一个字符。
我使用下面的css来实现这一点。
margin : 0 auto; //attempt1
text-align:center; //attempt2
两者都不起作用,尝试 2 只是将字符水平对齐。
但我也需要垂直对齐。
有什么线索可以实现这一目标吗?
这是你修复它的方法:
首先将字符包装在一个元素中:
<div id="DivMenu">
<div id="character">R</div>
</div>
然后设置以下CSS:
#DivMenu{
...
text-align:center;
}
#character{
position:relative;
top:50%;
margin-top:-10px
}
垂直居中的另一个简单想法是删除 height 属性并在顶部和底部添加填充,每个填充都是原始高度的一半。当然,对于水平居中,使用 text-align:
text-align: center;
padding-top: 6%;
padding-bottom: 6%;
跨浏览器水平对齐有点棘手。
在您提供的示例的上下文中,您可以使用:
line-height:100px;
对于其他上下文,您将需要使用 javascript 并绑定:
$.fn.vAlignBlock = function() {
return this.each(function(i){
var ah = $(this).height();
var ph = $(this).parent().height();
var mh = (ph - ah) / 2;
$(this).css('margin-top', mh);
});
};
$.fn.vAlignInlineBlock = function() {
return this.each(function(i) {
var h = $(this).height();
var oh = $(this).outerHeight();
var mt = (h + (oh - h)) / 2;
$(this).css("margin-top", "-" + mt + "px");
$(this).css("top", "50%");
$(this).css("position", "absolute");
});
};
我经常使用的一种技术是将要居中的东西包装在一个block
元素中。它要求您知道要居中的宽度和高度。这是一个演示。
<div>
<span>R</span>
</div>
然后你为元素设置样式span
(或任何你想要的,但保持语义!)像这样:
span {
width:10px;
height:20px;
margin:-10px 0 0-5px; /* margin-top is minus half your height, margin-left is minus half your width */
top:50%; left:50%;
position:absolute;
display:block;
}
如果您不希望将无用元素DOM
用于演示目的,则可以line-height
将文本节点的 与容器的高度相匹配。不利的一面是,如果您的文本跨越两行,它将不可避免地搞砸您的设计,因为line-height
它异常高。这是一个演示。
div {
[...]
width: 200px;
height: 200px;
text-align:center;
line-height:200px;
}
这是 Jsfiddle http://jsfiddle.net/HLet2/1/
<div id="DivMenu">
<p>R</p>
</div>
#DivMenu
{
position:absolute;
-webkit-border-radius: 999px;
-moz-border-radius: 999px;
border-radius: 999px;
behavior: url(PIE.htc);
background: #ccc;
border: 2px solid #2F2E2E;
width: 10%;
height: 12%;
}
#DivMenu p
{
text-align:center;
margin-top:50%;
}
另一种方法是使用 good oldline-height
来创建垂直对齐。这个想法是使行高与高度相同。然后text-align: center
为横。这适用于我测试过的所有主要浏览器,是最简单的解决方案。
在此示例中,对齐属性与其余样式分开:
<html>
<head>
<title>Untitled Document</title>
<style type="text/css">
#DivMenu
{
background: #CCC;
border: 2px solid #2F2E2E;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
</style>
</head>
<body>
<div id="DivMenu">
R
</div>
</body>
</html>