我需要在窗口中心放置一个div
(带有position:absolute;
)元素。但是我遇到了问题,因为宽度未知。
我试过了 但是,由于宽度是响应性的,因此需要对其进行调整。
.center {
left: 50%;
bottom:5px;
}
有任何想法吗?
我需要在窗口中心放置一个div
(带有position:absolute;
)元素。但是我遇到了问题,因为宽度未知。
我试过了 但是,由于宽度是响应性的,因此需要对其进行调整。
.center {
left: 50%;
bottom:5px;
}
有任何想法吗?
Answers:
<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>
position: fixed
但是如果覆盖层的高度未知,则必须实施覆盖层的滚动条
<html>
。但是<html>
元素没有height
指定,因此它占用文档中所有内容的高度,这没什么,因为唯一的内容是绝对定位的(从内容流中取出)。添加height: 100%
到<html>
元素对此有所不同。
这对我有用:
#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>
width
应将其设置为特定值才能正常工作。auto
并且100%
不会使元素居中。display: block;
是必须的。position: absolute;
不是必须的。所有值都将起作用。父元素的position
应设置为以外的其他值static
。设置left
和right
到0
是不必要的。margin-left: auto; margin-right: auto;
会做的工作。
这里是一个很好的解决方案为响应式设计或未知的尺寸一般,如果你不需要支持IE8和降低。
.centered-axis-x {
position: absolute;
left: 50%;
transform: translate(-50%, 0);
}
线索是,left: 50%
相对于父translate
元素,而变换是相对于元素的宽度/高度。
这样,您将拥有一个完美居中的元素,并且在子元素和父元素上都具有灵活的宽度。奖励:即使孩子比父母大,这也有效。
您也可以以此将它垂直居中(同样,父母和孩子的宽度和高度可以完全灵活(和/或未知)):
.centered-axis-xy {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
请记住,您可能还需要transform
供应商前缀。例如-webkit-transform: translate(-50%,-50%);
webkit-
按照我的建议尝试使用前缀。
transform: translate
似乎使position: fixed
儿童无法使用。在这种情况下,可接受的答案效果更好。
真的很好
以width
作为900px
。
#styleName {
position: absolute;
left: 50%;
width: 900px;
margin-left: -450px;
}
在这种情况下,应该width
事先知道。
"because the width is unknown"
...这没有回答问题
绝对中心
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中测试
希望这可以帮助 :)
这项工作垂直和水平
#myContent{
position: absolute;
left: 0;
right: 0;
top:0;
bottom:0;
margin: auto;
}
如果要使元素以父级为中心,请设置父级相对位置
#parentElement{
position:relative
}
编辑:
对于垂直居中,将设置的高度与元素对齐。感谢@Raul
如果要使元素的父级居中,请将父级的位置设置为相对
搜索解决方案时,我在上面得到了答案,并且可以使内容以Matthias Weiler的答案为中心,但使用text-align。
#content{
position:absolute;
left:0;
right:0;
text-align: center;
}
使用chrome和Firefox。
** 响应式解决方案 **
假设div中的元素是另一个div ...
这个解决方案很好
<div class="container">
<div class="center"></div>
</div>
该容器可以是任何大小(必须是相对位置)
.container {
position: relative;/*important*/
width: 200px;/*any width*/
height: 200px;/*any height*/
background: red;
}
element(div)也可以是任意大小(必须小于container)
.center {
position: absolute;/*important*/
top: 50%;/*position Y halfway in*/
left: 50%;/*position X halfway in*/
transform: translate(-50%,-50%);/*move it halfway back(x,y)*/
width: 100px;/*any width*/
height: 100px;/*any height*/
background: blue;
}
结果将如下所示。运行代码片段
.container {
position: relative;
width: 200px;
height: 200px;
background: red;
}
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
width: 100px;
height: 100px;
background: blue;
}
<div class="container">
<div class="center"></div>
</div>
我发现它很有帮助
这是对我们有用的其他答案的组合:
.el {
position: absolute;
top: 50%;
margin: auto;
transform: translate(-50%, -50%);
}
我知道这个问题已经有了一些答案,但是我还没有找到一个可以在几乎所有类中都可行并且优雅的解决方案,因此,在调整一些内容之后,我来考虑一下:
.container {
position: relative;
}
.container .cat-link {
position: absolute;
left: 50%;
top: 50%;
transform: translate3d(-50%,-50%,0);
z-index: 100;
text-transform: uppercase; /* Forces CSS to treat this as text, not a texture, so no more blurry bugs */
background-color: white;
}
.color-block {
height: 250px;
width: 100%;
background-color: green;
}
<div class="container">
<a class="cat-link" href="">Category</a>
<div class="color-block"></div>
</div>
这就是说给我a top: 50%
和a left: 50%
,然后在X / Y轴上将其转换(创建空间)为该-50%
值,在某种意义上是“创建镜像空间”。
因此,这将在div的所有4个点上创建相等的空间,该点始终是一个方框(具有4个边)。
这将:
translate(-50%,-50%);
吗?
可以在容器元素的中心想要在绝对定位元素的任意未知宽度上工作。
<div class="container">
<div class="box">
<img src="https://picsum.photos/200/300/?random" alt="">
</div>
</div>
.container {
position: relative;
width: 100%;
}
.box {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
}
据我所知,这是不可能实现的未知宽度。
您可以-如果在您的情况下可行-绝对放置宽度和高度为100%的不可见元素,并使用margin:自动并可能垂直对齐在其中居中。否则,您将需要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插件来执行此操作。在这里找到。我认为单纯使用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)
});
};
响应式解决方案的sass / compass版本:
#content {
position: absolute;
left: 50%;
top: 50%;
@include vendor(transform, translate(-50%, -50%));
}
transform: translate(-50%, -50%)
使用Webkit浏览器在OS X上使文本和所有其他内容模糊。keithclark.co.uk/articles/gpu-text-rendering-in-webkit
-webkit-font-smoothing: antialiased;
我从您发布的文章中收集到的那样!
这为我工作:
<div class="container><p>My text</p></div>
.container{
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
}
我知道我已经提供了答案,并且以前的答案以及给出的其他答案也很好用。但是我过去曾经使用过它,它在某些浏览器和某些情况下效果更好。所以我想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;
}
的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;
}
如果元素具有width
和height
.wrapper {
width: 300px;
height: 200px;
background-color: tomato;
position: relative;
}
.content {
width: 100px;
height: 100px;
background-color: deepskyblue;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
}
<div class="wrapper">
<div class="content"></div>
</div>
这个问题的解决方案不适用于我的情况。
top: 0;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
display: flex;
align-items: center;
figure {
position: relative;
width: 325px;
display: block
}
figcaption{
position: absolute;
background: #FFF;
width: 120px;
padding: 20px;
-webkit-box-shadow: 0 0 30px grey;
box-shadow: 0 0 30px grey;
border-radius: 3px;
display: block;
top: 0;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
display: flex;
align-items: center;
}
<figure>
<img src="https://picsum.photos/325/600">
<figcaption>
But as much
</figcaption>
</figure>
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;
}
这和更多的例子在这里
我想出了一个技巧,可以使DIV精确地浮动在页面的中央。当然非常丑陋,但可以使用
点和短划线
<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>
清洁器
哇,五年过去了,不是吗?
<div style="position:fixed;top:0px;bottom:0px;left:0px;right:0px;padding:5px">
<table style="position:fixed" width="100%" height="100%">
<tr>
<td style="width:50%"></td>
<td style="text-align:center">
<div style="padding:10px">
<img src="Happy.PM.png">
<h2>Stays in the Middle</h2>
</div>
</td>
<td style="width:50%"></td>
</tr>
</table>