如何中心绝对定位元素在div?

我需要在窗口的中心放置一个div (与position:absolute; )元素。 但是我遇到问题,因为宽度是未知的

我试过这个。 但是它需要调整,因为宽度是响应。

 .center { left: 50%; bottom:5px; } 

有任何想法吗?

 <body> <div style="position: absolute; left: 50%;"> <div style="position: relative; left: -50%; border: dotted red 1px;"> I am some centered shrink-to-fit content! <br /> tum te tum </div> </div> </body> 

这适用于我:

 #content { position: absolute; left: 0; right: 0; margin-left: auto; margin-right: auto; width: 100px; /* Need a specific value to work */ } 
 <body> <div> <div id="content"> I'm the content </div> </div> </body> 

响应式解决scheme

一般来说, 如果您不需要支持IE8或更低版本,那么这是一个很好的响应式devise或者未知尺寸的解决scheme

 .centered-axis-x { position: absolute; left: 50%; transform: translate(-50%, 0); } 
 .outer { position: relative; /* or absolute */ /* unnecessary styling properties */ margin: 5%; width: 80%; height: 500px; border: 1px solid red; } .inner { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); /* unnecessary styling properties */ max-width: 50%; text-align: center; border: 1px solid blue; } 
 <div class="outer"> <div class="inner">I'm always centered<br/>doesn't matter how much text, height or width i have.<br/>The dimensions or my parent are irrelevant as well</div> </div> 

真的很好的post..只是想添加,如果有人想用单独的div标签,然后在这里出路:

900px900px

 #styleName { position: absolute; left: 50%; width: 900px; margin-left: -450px; } 

在这种情况下,应该事先知道width

绝对中心

HTML:

 <div class="parent"> <div class="child"> <!-- content --> </div> </div> 

CSS:

 .parent { position: relative; } .child { position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; } 

演示: http : //jsbin.com/rexuk/2/

在Google Chrome,Firefox和IE8中testing

希望这可以帮助 :)

这工作为垂直和水平

  #myContent{ position: absolute; left: 0; right: 0; top:0; bottom:0; margin: auto; } 

如果你想让父母的元素中心,设置父亲的相对位置

  #parentElement{ position:relative } 

编辑:

  • 为垂直中心alignment设置高度您的元素。 感谢@Raul

  • 如果要做父项的元素中心,则将父项的位置设置为相对

search解决scheme我得到了上面的答案,可以使内容与Matthias Weiler答案集中,但使用文本alignment。

 #content{ position:absolute; left:0; right:0; text-align: center; } 

使用Chrome和Firefox。

据我所知,这是不可能达到一个未知的宽度。

你可以 – 如果这在你的场景中工作 – 绝对定位一个100%宽度和高度的不可见元素,并使用margin:auto和vertical-align来使元素居中。 否则,你将需要使用Javascript来做到这一点。

我想补充@ bobince的回答:

 <body> <div style="position: absolute; left: 50%;"> <div style="position: relative; left: -50%; border: dotted red 1px;"> I am some centered shrink-to-fit content! <br /> tum te tum </div> </div> </body> 

改进:///这使得水平滚动条不会出现在居中的div中的大元素。

 <body> <div style="width:100%; position: absolute; overflow:hidden;"> <div style="position:fixed; left: 50%;"> <div style="position: relative; left: -50%; border: dotted red 1px;"> I am some centered shrink-to-fit content! <br /> tum te tum </div> </div> </div> </body> 

下面是一个有用的jQuery插件来做到这一点。 在这里find。 我不认为纯粹用CSS是可能的

 /** * @author: Suissa * @name: Absolute Center * @date: 2007-10-09 */ jQuery.fn.center = function() { return this.each(function(){ var el = $(this); var h = el.height(); var w = el.width(); var w_box = $(window).width(); var h_box = $(window).height(); var w_total = (w_box - w)/2; //400 var h_total = (h_box - h)/2; var css = {"position": 'absolute', "left": w_total+"px", "top": h_total+"px"}; el.css(css) }); }; 

我的首选定位方法:

 position: absolute; margin: auto; width: x% 
  • 绝对块元素定位
  • 保证金自动
  • 相同的左/右,顶部/底部

JSFiddle 在这里

上面的响应式解决scheme的sass / compass版本:

 #content { position: absolute; left: 50%; top: 50%; @include vendor(transform, translate(-50%, -50%)); } 

这对我工作:

 <div class="container><p>My text</p></div> .container{ position: absolute; left: 0; right: 0; margin-left: auto; margin-right: auto; } 

我知道我已经提供了一个答案,而我以前的答案和其他答案一样,工作得很好。 但我过去曾经使用过这个function,在某些浏览器和某些情况下,它效果更好。 所以我认为id也给出了这个答案。 我没有“编辑”我以前的答案,并添加它,因为我觉得这是一个完全独立的答案,我提供的两个是不相关的。

HTML:

 <div id='parent'> <div id='child'></div> </div> 

CSS:

 #parent { display: table; } #child { display: table-cell; vertical-align: middle; } 
 #container { position: relative; width: 100%; float:left } #container .item { width: 50%; position: absolute; margin: auto; left: 0; right: 0; } 

这是一个技巧,我想出了一个DIV漂浮在一个页面的中心。 适用于IE和Chrome。 诀窍在于表格单元的垂直alignment,以及固定的定位。

 <div style="border: 5 dashed red;position:fixed;top:0;bottom:0;left:0;right:0;padding:5"> <table style="position:fixed;" width="100%" height="100%"> <tr> <td style="width:50%"></td> <td style="text-align:center"> <div style="width:200;border: 5 dashed green;padding:10"> Perfectly Centered Content </div> </td> <td style="width:50%"></td> </tr> </table> </div> 

HTML:

 <div class="wrapper"> <div class="inner"> content </div> </div> 

CSS:

 .wrapper { position: relative; width: 200px; height: 200px; background: #ddd; } .inner { position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; width: 100px; height: 100px; background: #ccc; } 

这个和更多的例子在这里

HTML

 <div id='parent'> <div id='centered-child'></div> </div> 

CSS

 #parent { position: relative; } #centered-child { position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto auto; } 

http://jsfiddle.net/f51rptfy/

你可以把图像放在一个div中,并添加一个div id,并让该div的CSS有一个text-align:center

HTML:

 <div id="intro_img"> <img src="???" alt="???"> </div> 

CSS:

 #intro_img { text-align:center; } 
 #content { margin:0 auto; display:table; float:none;} 
 <body> <div> <div id="content"> I'm the content </div> </div> </body> 

我使用了类似的解决scheme:

 #styleName { position: absolute; margin-left: -"X"px; } 

其中“X”是一个div的宽度的一半,我想要显示。 在所有浏览器中都能正常工作。

尽量不要使用CSS的黑暗面。 避免使用负值作为边距。 我知道有时候你会被迫做一些可怕的事情,比如margin-left: -450px ,但是可能你可以做一些像right: 450px 。 这只是我的工作方式。