這篇文章帶給大家的內容是關於CSS中display: inline-block的用法解析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
迷之間隙
我們建立一個導航列表,並將其列表item 設定為inline-block,主要程式碼如下:
<div> <div><a>我</a></div> <div><a>我</a></div> <div><a>我</a></div> </div> .nav { background: #999; } .nav-item{ display:inline-block; /* 设置为inline-block */ width: 100px; background: #ddd; }
效果圖如下:
我們可以從效果圖中看到列表item 之間有一點小空隙,但是我們在程式碼中並沒有設定margin 水平間距。那麼這個空隙是如何產生的呢?
這是因為我們寫程式碼時輸入空格、換行都會產生空白符。而瀏覽器是不會忽略空白符的,並且對於多個連續的空白符瀏覽器會自動將其合併成一個,故產生了所謂的間隙。
對於上面實例,我們在列表 item 元素之間輸入了回車換行以方便閱讀,而這間隙正是這個回車換行產生的空白符。
同樣對於所有的行內元素(inline,inline-block),換行都會產生空白符的間隙。
從上面我們了解到空白符,是瀏覽器正常的表現行為。但對於某些場景來說,並不美觀,間隙大小非可控,所以我們往往需要去除這個空白間隙。一般來說我們有兩種方法來去除這個換行造成間隙:程式碼不換行和設定 font-size。
我們了解到,由於換行空格導致產生換行符,因此我們可以將上述例子中的列表item 寫成一行,這樣空白符便消失,間隙就不復存在了。其程式碼如下:
<div> <div>导航</div> <div>导航</div> <div>导航</div> </div>
但考慮到程式碼可讀及維護性,我們一般不建議連成一行的寫法。
首先要理解空白符歸根結底是個字符,因此,我們可以透過設定 font-size 屬性來控制產生的間隙的大小。我們知道如果將 font-size 設為 0,文字字元是沒辦法顯示的,那麼同樣這個空白字也沒了,間隙就沒了。
於是順著這個思路就有了另一個解決方案:透過設定父元素的font-size 為0 來去除這個間隙,然後重置子元素的font-size,讓其恢復子元素文字字元。
所以方法程式碼如下:
.nav { background: #999; font-size: 0; /* 空白字符大小为0 */ } .nav-item{ display:inline-block; width: 100px; font-size: 16px; /* 重置 font-size 为16px*/ background: #ddd; }
使用方法時需要特別注意其子元素一定要重置font-size,不然很容易掉進坑裡(文字顯示不出來) 。
由於 inline-block 屬於行內級元素,所以 vertical-align 屬性同樣適用。
在正式解說 vertical-align 之前,我們需要先說一些基本概念。
中線(middle)、基線(baseline)、頂線(text-top、底線(text-bottom))是文字的幾個基本線,其對應位置如下圖:
基線(base line):小寫英文字母x的下端緣。
中線(middle line):小寫英文字母x的中間。
頂線(text-top):父元素font-size 大小所組成的一個內容區域的頂部
底線(text- bottom):父元素font-size 大小所組成的一個內容區域的底部
vertical-align 的值
vertical-align 只接受8個關鍵字、一個百分數值或一個長度值。下面我們將看看各關鍵字如何作用於行內元素。
baseline 預設元素的基線與父元素的基線對齊。
sub 將元素的基線與其父元素的下標基準對齊。
super 將元素的基線與其父代的上標 - 基準對齊。
text-top 將元素的頂部與父元素的字體頂部對齊。
text-bottom 將元素的底部與父元素的字體的底部對齊。
middle 將元素的中間與基準對齊加上父元素的x-height的一半。
top 將元素的頂部和其子代與整行的頂部對齊。
bottom 將元素的底部和其子代與整行的底部對齊。
以上是CSS中display: inline-block的用法解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!