如何水平居中可变宽度的浮动元素?
编辑:我已经使用包含div
浮动元素并为容器指定a width
(然后margin: 0 auto;
用于容器)来进行此工作。我只是想知道它是否可以在不使用包含元素的情况下完成,或者至少不必width
为包含元素指定 a 。
如何水平居中可变宽度的浮动元素?
编辑:我已经使用包含div
浮动元素并为容器指定a width
(然后margin: 0 auto;
用于容器)来进行此工作。我只是想知道它是否可以在不使用包含元素的情况下完成,或者至少不必width
为包含元素指定 a 。
假设浮动并居中的元素是div
带有id="content"
...
<body>
<div id="wrap">
<div id="content">
This will be centered
</div>
</div>
</body>
并应用以下CSS:
#wrap {
float: left;
position: relative;
left: 50%;
}
#content {
float: left;
position: relative;
left: -50%;
}
这是一个很好的参考。
.center {
display: table;
margin: auto;
}
您可以fit-content
使用width
.
#wrap {
width: -moz-fit-content;
width: -webkit-fit-content;
width: fit-content;
margin: auto;
}
注意:它仅适用于最新的浏览器。
当 id = 容器(即外部 div)和 id = 包含(即内部 div)时,这会更好。强烈推荐的解决方案的问题是,在某些情况下,当浏览器试图迎合 left:-50% 属性时,它会导致水平滚动条。这个解决方案 有一个很好的参考
#container {
text-align: center;
}
#contained {
text-align: left;
display: inline-block;
}
这里流行的答案有时确实有效,但有时它会创建难以处理的水平滚动条 - 特别是在处理宽水平导航和大型下拉菜单时。这是一个更轻量级的版本,有助于避免这些边缘情况:
#wrap {
float: right;
position: relative;
left: -50%;
}
#content {
left: 50%;
position: relative;
}
为了更具体地回答您的问题,可能无法不设置一些包含元素,但是很有可能不指定宽度值。希望可以节省一些人的头疼!
假设你有一个DIV
你想要水平居中的:
<div id="foo">Lorem ipsum</div>
在 CSS 中,您可以使用以下方式对其进行样式设置:
#foo
{
margin:0 auto;
width:30%;
}
这表明您的顶部和底部边距为零像素,并且在左侧或右侧,自动计算出需要多少是均匀的。
只要它存在并且不是 100%,你为宽度输入什么并不重要。否则,您将不会将中心设置在任何东西上。
但是,如果您将其向左或向右浮动,则赌注将被取消,因为这会将其从页面上的正常元素流中拉出来,并且自动边距设置将不起作用。
你不能只使用display: inline block
and align
tocenter
吗?
例子。
对于 50% 元素
width: 50%;
display: block;
float: right;
margin-right: 25%;