[英]Align div that are inline-block
任何人都可以在http://jsfiddle.net/Z7z5Q/解釋div的行為嗎? 我想知道,為什么他們沒有在一條線上對齊? 為什么向div添加文本會移動其他div?
這是html和css:
<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="stylesheet.css"/>
<title>My Social Network</title>
</head>
<body>
<!--Add your HTML below!-->
<div class="friend">Some text in more than two line, actually in 3</div>
<div class="family">Some text in two line</div>
<div class="friend" id="best_friend"></div>
<div class="enemy" id="archnemesis"></div>
<div class="friend">Some text</div>
<div class="family"></div>
<div class="friend"></div>
<div class="family"></div>
</body>
</html>
CSS:
div {
display: inline-block;
margin-left: 5px;
height:100px;
width:100px;
border-radius: 100%;
border: 2px solid black;
}
.friend {
border: 2px dashed #008000;
}
.family {
border: 2px dashed #0000FF;
}
.enemy {
border: 2px dashed #FF0000;
}
#best_friend {
border:4px solid #00C957;
}
#archnemesis {
border: 4px solid #CC0000;
}
謝謝。 將欣賞文檔或文章的鏈接。
元素是對齊的......但不是按照你想要的方式,顯然;)
您的問題的關鍵是屬性vertical-align
。
首先刪除border-radius
以便更好地查看框。
然后添加vertical-align: middle;
:問題解決了( 見小提琴 )
內容與否,每個框現在相對於其固定高度對齊(您將其固定為100px)。
在沒有vertical-align: middle;
情況下首先發生了什么vertical-align: middle;
? 更改baseline
的值:您將回到原始問題。 這是默認值,例如在span
s中顯示文本時所需要的值,或標簽和文本字段的文本,無論兩者中的填充和邊距。 但是,由於文本被迫占據2或3行(無論內容是100px寬,所以基線與您期望的非常不同,它是內容的基線,也就是最后一行文本。
與空div
相同:因為它們缺乏與之對齊的內容,它們的基線是它們的底線(不太確定這個,但這似乎發生了)。
在一些空div
添加單個字符或不可破壞的空格:它們的基線現在與空div完全不同。 看其他小提琴
在一段文字中丟失一張高大的圖像會發生同樣的現象; 你可以將它與vertical-align
但區別在於它更容易看到發生了什么。 在這里,您沒有出現“正常”文本,因此發現它有點困難。
為何浮動:左; 在這里工作? 它將采用每個盒子,所有相同的高度,並相對於盒子對齊,而不是與其內容對齊。 但是你要管理清算並在一個盒子上多打1px就可以打破以下所有盒子的對齊...
inline-block
是一個具有許多好奇心的屬性。 在這個例子中,你可以清楚地看到從div
CSS規則中刪除height: 100px
將導致元素的文本對齊,而華麗的圓形虛線多色邊框則不是那么明顯。 所以要解決這個問題,你可以應用vertical-align: top
。 ( 來源 )
“內聯塊”的基線是正常流程中其最后一個線框的基線,除非它沒有流入線框或者其“溢出”屬性具有“可見”以外的計算值,在哪種情況下,基線是底部邊緣邊緣。
相比之下,默認情況下浮動對齊在頂部。
在一條線上對齊
div {vertical-align: middle;}
添加float:left;
會解決這個問題,請看這里: http : //jsfiddle.net/Z7z5Q/5/
還添加了vertical-align:top;
也將解決它: http : //jsfiddle.net/Z7z5Q/7/
這是因為內聯塊在html中用空格表示奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.