如何水平居中一个宽度不固定的浮动元素?
编辑:我已经使用包含浮动元素的
编辑:我已经使用包含浮动元素的
并为容器指定了(然后对于容器使用)来使之正常工作。我只是想知道是否可以在不使用包含元素或至少不必为包含元素指定的情况下完成。
假设需要浮动并居中的元素是一个带有 id="content"
的 div
元素。
<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%;
}
这里有一个很好的参考,可供查阅。
margin-left
代替left
和position: relative
。在我的-50%元素上,margin-left
起作用了。 - Muhd.center {
display: table;
margin: auto;
}
fit-content
值来设置 width
。#wrap {
width: -moz-fit-content;
width: -webkit-fit-content;
width: fit-content;
margin: auto;
}
当外层div的id为container,内层div的id为contained时,此方法效果更佳。高度推荐的解决方案存在问题,即当浏览器尝试适应left:-50%属性时,某些情况下会导致水平滚动条出现。对于此解决方案,这里有一个好的参考文献。
#container {
text-align: center;
}
#contained {
text-align: left;
display: inline-block;
}
display: inline-block
和text-align: center
的组合就可以解决问题了。 - Joshua Pinter假设你有一个要水平居中的
<div id="foo">Lorem ipsum</div>
#foo
{
margin:0 auto;
width:30%;
}
这段代码表示顶部和底部边距为零像素,在左侧或右侧自动计算所需的边距以达到居中效果。
宽度设置不是很重要,只要有一个宽度值,并且不是100%即可。否则,您无法将其居中对齐。
但是,如果您将其向左或向右浮动,则无法使用自动边距设置,因为它会将其从页面上元素的正常流中拉出。
width: auto;
不起作用(据我所知)。 - You这里的普遍答案有时有效,但有时会创建难以处理的水平滚动条 - 特别是在处理宽水平导航和大型下拉菜单时。以下是一个更轻量级的版本,可帮助避免这些边缘情况:
#wrap {
float: right;
position: relative;
left: -50%;
}
#content {
left: 50%;
position: relative;
}
更具体地回答您的问题,可能需要设置一些包含元素才能实现,但是没有指定宽度值是非常可能实现的。希望这能帮助外面的某些人免去一些烦恼!
你不能只是使用display: inline-block
和align
来实现居中吗?
示例。
inline-block
是一个好的解决方案!至少你在 7 年后得到了一个 +1 ;) - dimpiaxinline-block
12年后+1! - Gotfredsen对于50%的元素
width: 50%;
display: block;
float: right;
margin-right: 25%;