[英]How can I horizontally centre (center) an element of unknown width when another element is floated next to it?
給出以下HTML:
<div id="container">
<div id="left">Left</div>
<div id="centre">Centred</div>
</div>
和CSS:
#left {
float: left;
text-align: left;
}
#centre {
text-align: center;
}
如何在不給予固定寬度的情況下水平居中centre
元素? 下圖顯示了所需的結果:
這是我到目前為止看起來的樣子:
我更喜歡通用解決方案,它不需要指定任何寬度。
如果你知道左div的寬度,你可以這樣做:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style media="all">
#left {
float: left;
width: 30px;
}
#centre {
margin: 0 40px;
text-align: center;
}
#left, #centre, #container {
border: 1px solid #000;
}
#container {
width: 175px;
padding: 5px;
}
</style>
</head>
<body>
<div id="container">
<div id="left">Left</div>
<div id="centre">Centred</div>
</div>
</body>
</html>
如果您希望#centre
元素的內容具有縮小到適合寬度,則可以使用以下內容:
<div id="container">
<div id="left">Left</div>
<div id="centre">Centred</div>
</div>
和以下CSS:
#container {
width: 175px;
text-align: center;
position: relative;
border: 1px solid black;
padding: 5px;
margin: 5px;
}
#left {
position: absolute;
border: 1px solid black;
padding: 5px;
margin: 5px;
}
#centre {
display: inline-block;
border: 1px solid black;
padding: 5px;
margin: 5px;
}
如果要獲得#centre
的縮小到適合寬度, #centre
需要浮動元素,使用絕對定位或聲明內聯塊顯示類型。 由於您不想為#centre
指定寬度, #centre
使用float或absolute positioning將不允許您將內容居中。 但是,如果在父#container
上指定display: inline-block
並使用text-align: center
,您將獲得元素的中心,並對邊框,填充等進行一些樣式控制。
但是,要使其正常工作,必須對#left
元素使用絕對定位。 如果使用float,則#centre
的內容將環繞左側元素並更改居中。
在#container
上設置position: relative
,否則#element
將相對於頁面的根(或其他一些非靜態定位)元素定位。
小提琴: http : //jsfiddle.net/audetwebdesign/hTFBa/
腳注
在演示示例中,您可以為內容添加單個文本標簽。 如果您有多個單詞短語,則需要約束左側元素的寬度或在中心元素上指定一些邊距以防止文本重疊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.