日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

两个inline-block消除间距和对齐(vertical-align)

發(fā)布時間:2025/3/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个inline-block消除间距和对齐(vertical-align) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

一、神奇的兩個inline-block

? ? ? 很初級的問題,無聊決定寫一個故事。

? ? ? ?故事的主人公很簡單,兩個inline-block元素。代碼如下,為了看起來簡單明了,寫得很簡陋。效果圖如右。發(fā)現(xiàn)有兩個問題。

? ? ? ?1:兩個元素水平有空隙,簡單的初始化margin:0好像并沒有起想象中的作用,為什么呢

? ? ? ?2:兩個元素垂直也沒有對齊,等高的的行內塊元素不應該阿:

二、消除兩個inline-block元素水平間距

最終效果

講解demo

<div class="space"><a href="##">惆悵</a>
<a href="##">淡定</a>
<a href="##">熱血</a> </div>

1.去空格

元素間留白間距出現(xiàn)的原因就是標簽段之間的空格,因此,去掉HTML中的空格,自然間距就木有了。考慮到代碼可讀性,顯然連成一行的寫法是不可取的,我們可以:

<div class="space"><a href="##">惆悵</a><a href="##">淡定</a><a href="##">熱血</a> </div>

或者是:

<div class="space"><a href="##">惆悵</a><a href="##">淡定</a><a href="##">熱血</a> </div>

或者是借助HTML注釋:

<div class="space"><a href="##">惆悵</a><!----><a href="##">淡定</a><!----><a href="##">熱血</a> </div>

等。

2、使用margin負值

.space a {display: inline-block;margin-right: -3px; }

例如,對于12像素大小的上下文,Arial字體的margin負值為-3像素,Tahoma和Verdana就是-4像素,而Geneva為-6像素。

由于外部環(huán)境的不確定性,以及最后一個元素多出的父margin值等問題,這個方法不適合大規(guī)模使用。

3、讓閉合標簽吃膠囊

如下處理:

<div class="space"><a href="##">惆悵<a href="##">淡定<a href="##">熱血</a> </div>

注意,為了向下兼容IE6/IE7等喝蒙牛長大的瀏覽器,最后一個列表的標簽的結束(閉合)標簽不能丟。

在HTML5中,我們直接:

<div class="space"><a href="##">惆悵<a href="##">淡定<a href="##">熱血 </div>

好吧,雖然感覺上有點怪怪的,但是,這是OK的。

4、使用font-size:0

類似下面的代碼:

.space {font-size: 0; } .space a {font-size: 12px; }

這個方法,基本上可以解決大部分瀏覽器下inline-block元素之間的間距(IE7等瀏覽器有時候會有1像素的間距)。不過有個瀏覽器,就是Chrome, 其默認有最小字體大小限制,因為,考慮到兼容性,我們還需要添加:
類似下面的代碼:

.space {font-size: 0;-webkit-text-size-adjust:none; }

5、使用letter-spacing

類似下面的代碼:

.space {letter-spacing: -3px; } .space a {letter-spacing: 0; }

6、使用word-spacing

類似下面代碼:

.space {word-spacing: -6px; } .space a {word-spacing: 0; }

三、使兩個inline-block元素垂直對齊、

元素在父元素垂直居中有許多辦法:

1,設置父元素line-hight等于父元素高度

2.設置父元素的after偽類,寬度為0,高度為100%的行內塊和元素垂直居中,再設置vertical-align: middle;

3.父元素table-cell,再給父子元素設置vertical-align: middle等(CSS垂直居中的11種實現(xiàn)方式

?

首先什么是基線?元素的基線怎么確定?

對于inline-block元素來說,他的基線取決于元素本身的特性,

在該元素中沒有行內子元素(注意是DOM樹的子元素,塊子元素中有行元素這個行元素算)的時候或者overflow不為visible,該inline-block的基線為margin-bottom的下邊界。

否則,以該元素中最后一個行內子元素的基線為該元素的基線。

字母x的下邊緣(線)就是我們的基線baseline。(以下是幾種默認的基線對齊形式)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

?元素是怎么垂直對齊的?

vertical-align設置行內元素的基線相對于該元素所在行的基線的垂直對齊方式。

如a設置middle,b默認。則a的middle和b的bsaeline對齊

vertical-align:middle指的是baseline + 1/2?"x-height"高度。我們可以近似腦補成字母x交叉點那個位置。

?

vertical-align:baseline(,默認元素的基線與父元素的基線對齊) vertical-align:sub(降低元素的基線到父元素合適的下標位置) vertical-align:super(升高元素的基線到父元素合適的上標位置) vertical-align:bottom(把對齊的子元素的底端與行框底端對齊) vertical-align:text-bottom(把元素的底端與父元素內容區(qū)域的底端對齊,當line-height設置時與bottom顯示不同) vertical-align:top(把對齊的子元素的頂端與行框頂端對齊) vertical-align:text-top(把元素的頂端與父元素內容區(qū)域的頂端對齊) vertical-align:middle(元素的中垂點與父元素的基線加1/2父元素中字母X的高度對齊)
vertical
-align:(+-n)px(元素相對于基線上下偏移npx) vertical-align:x%(相對于元素的line-height值) vertical-align:inherit(從父元素繼承vertical-align屬性的值)

?

舉個例子,正常div,高度自適應,并且有一張圖片。

會發(fā)現(xiàn)有一端留白,這段空白間隙就是vertical-align和line-height攜手搞的鬼。

實際上塊狀元素內部還有一個(更有可能兩個-前后)看不見摸不著沒有寬度沒有實體的空白節(jié)點

為了明顯一點這個寬度為0的空格元素我們用inline-block來代替

可以看到圖片的下邊緣就和字母x下邊緣對齊(見下圖)

但是字符還是有高度的,由line-height決定(默認normal,1.2倍font-size)

?

怎么消除這種留白呢

1. 讓vertical-align失效

將圖片設置成display或者浮動、絕對定位等(如果布局允許)

2. 使用其他vertical-align值

告別baseline, 取用其他屬性值,比方說bottom/middle/top都是可以的。

3. 直接修改父元素line-height值

空白部分其實是是文字計算后的行高底部和字母x下邊緣的距離,如把line-height設置為0

4. line-height為相對單位,font-size間接控制

?

原理同上,如把font-size設置為0

③ 基本現(xiàn)象衍生:垂直居中

圖片后面(前面)有個類似空格字符的節(jié)點,然后就能響應line-height形成高度,此時,圖片再來個vertical-align:middle,就可以和這個被行高撐高的「幽靈空白節(jié)點」(近似)垂直對齊了。

不過上面的效果并不是完全的垂直居中,因為middle中線位置(字符x的中心)并不是字符內容的絕對居中位置

?

div { line-height: 240px; font-size: 0; } img { vertical-align: middle; }

?font-size:0, 因此此時content area高度是0,各種亂七八糟的線都在高度為0的這條線上,絕對中心線和中線重合。自然全垂直居中:

?

轉載于:https://www.cnblogs.com/coderL/p/7460437.html

總結

以上是生活随笔為你收集整理的两个inline-block消除间距和对齐(vertical-align)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。