我有一个网站,我在网站上有div,它垂直和水平居中。它的当前内容是 25 ,因此居中工作是水平的。如果我更改内容,则必须将width
编辑为宽度,将margin-left
编辑为宽度的一半。每次进入网站时内容都会发生变化,这不起作用,我需要一个解决方案。
我该如何解决?我可以检测文本的宽度并设置width
&使用js或jQuery margin-left
?
#output {
position: absolute;
top: 50%;
margin-top: -160px;
color: #6FA673;
font: 200pt Aleo;
font-weight: bold;
left: 50%;
width: 296px;
margin-left: -148px;
}
谢谢!
修改 这是给你们的JSFiddle!与数字25完美配合,但其他任何东西都会有点偏离 - 垂直。
答案 0 :(得分:1)
你说......
如果我更改内容,我必须将宽度编辑为宽度和宽度 边距 - 左边宽度的一半。
......不,你不必这样做。你只需要一个更好的CSS解决方案。另一种方法是无论文本内容有多长或多短,都可以简单地将内容集中在一起。那么您就不必担心编写js代码来检测它的css属性......
CSS:
#output {
position: relative;
top: 50%;
margin:0 auto;
text-align:center;
color: #6FA673;
font: 200pt Arial;
font-weight: bold;
}
我的fiddle
<强>更新强> 您可以使用简单的jquery方法在页面加载时垂直对齐元素...
JS:
var mtop = $(window).height()/2;
$('#output').css({top: mtop});
答案 1 :(得分:1)
我刚刚看到你的jsfiddle,同时我用HTML / CSS制作了一些东西,试图找出你想要的东西(对我来说,模仿灯箱:))
http://codepen.io/anon/pen/dgKls
来自你的jsfiddle 这个 ? http://jsfiddle.net/b4TTK/13/
#output, html, body {
height:100%;
width:100%;
margin:0;
display:table;
}
body {
display:table-cell;
vertical-align:middle;
text-align:center;
}
#output {
position: absolute;
color: #6FA673;
font: 200pt Arial;
font-weight: bold;
line-height:0
}
虽然不那么流畅
答案 2 :(得分:0)
如果您唯一担心的是左边距需要是定制器宽度的1/2,您可以使用以下内容:
$('#output').css('marginLeft', '-'+$('#output').width() /2+'px');
当然
width: auto;