如何水平居中可變寬度的浮動元素?如何水平居中可變寬度的浮動元素?
編輯:我已經有了這個工作,使用包含div
的浮動元素和指定容器的width
(然後使用容器的margin: 0 auto;
)。我只是想知道是否可以在不使用包含元素的情況下完成,或者至少不必爲包含元素指定width
。
如何水平居中可變寬度的浮動元素?如何水平居中可變寬度的浮動元素?
編輯:我已經有了這個工作,使用包含div
的浮動元素和指定容器的width
(然後使用容器的margin: 0 auto;
)。我只是想知道是否可以在不使用包含元素的情況下完成,或者至少不必爲包含元素指定width
。
假設你有一個DIV
你想水平居中:
<div id="foo">Lorem ipsum</div>
在CSS你用這種風格是:
#foo
{
margin:0 auto;
width:30%;
}
其中規定,你有一個頂部和底部邊緣零像素,並在左側或右側,自動計算需要多少才能達到均勻。
只要在那裏並且不是100%,放入寬度並不重要。否則,你不會設置任何東西的中心。
但是,如果您將它浮動,向左或向右,則投注將關閉,因爲這會將其從頁面上正常的元素流中拉出,並且自動邊距設置不起作用。
假設這是自由浮動,將中心的元素是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%;
}
這裏是一個很好reference關於這一點。
難道你不能只使用display: inline block
和align
到center
?
.center {
display: table;
margin: auto;
}
可以使用fit-content
值width
。
#wrap {
width: -moz-fit-content;
width: -webkit-fit-content;
width: fit-content;
margin: auto;
}
注意:它只適用於最新的瀏覽器。
這裏流行的答案有時會起作用,但有時會產生水平滾動條,這些滾動條難以處理 - 特別是在處理寬水平導航和大型下拉菜單時。下面是一個更輕的重量的版本,有助於避免這些邊緣情況:
#wrap {
float: right;
position: relative;
left: -50%;
}
#content {
left: 50%;
position: relative;
}
爲了更具體地回答你的問題,它可能是沒有可能建立一些含有元素的事,但它很有可能沒有指定寬度值。希望能夠讓一些人頭疼!
當id = container(這是外部div)和id = contained(這是內部div)時,這會更好。下面強烈推薦的解決方案的問題是,當瀏覽器嘗試迎合左側的-50%屬性時,會導致某些情況下會出現水平滾動條。 There is a good reference對於此解決方案
#container {
text-align: center;
}
#contained {
text-align: left;
display: inline-block;
}
如果您要將它居中,爲什麼它會浮動? – You 2009-08-05 09:31:35
這是一個很長的故事,我爲其他原因浮動它 – 2009-08-05 09:44:59
可能重複[**如何居中浮動元素?**](http://stackoverflow.com/questions/4767971/how-to-center-float -elements) – arnaud576875 2013-06-21 10:05:30