在此之前,對于line-height 與垂直居中的問(wèn)題,經(jīng)常碰到。
比如,圖片與span在同一個(gè)box中的時(shí)候,竟然會(huì )各種偏移。要想達到理想的效果真的是各種難。
有時(shí)間,決定認真的啃一啃。
一 line-heigth:
1. line-height: 顧名思義,行高,指代文本中,行與行之間的基線(xiàn)間的距離。
2. 基線(xiàn): 這里的基線(xiàn)不是指代文字的底部,而是英文字母x 的下沿。
3 行距: 行距表示文字的高度與行高的差距。
4. 內容區域: 行中每一個(gè)元素都有一快內容區域,主要由字體的大小決定。
5 行內框: 在默認條件下,行內框是等于內容區域的。在如果設置了行高,那么,行內框就會(huì )等于行高,并且在內容區域的兩側添加空白。
6 行框: 行框在默認條件下是等于行內框,但是如果在同一行中,有行高超過(guò)了當前元素的行內框高度的時(shí)候,當前元素的行框就會(huì )默認為最高的行高的高度。
這里的行框的告訴只與本行中的最高的行高的關(guān),與關(guān)元素的告訴無(wú)關(guān)。這也是導致圖片和文字在同一行時(shí)不能對齊的原因。
7 在有圖片時(shí),圖片會(huì )將行框的高度撐到圖片的高度,但同時(shí)默認的對其方式為基級對齊方式。
具體如下圖所示:
二 vertical-align
垂直居中,這里需要注意的一點(diǎn)就是,vertical-align 只能對行內元素有效,對說(shuō)類(lèi)似div,p之類(lèi)的塊級元素是無(wú)效的。
需要垂直居中,只需要:vertical-align:middel
三 zoom
曾經(jīng)一直很奇怪很多的網(wǎng)站為什么給元素總是要加一個(gè)zoom:1的樣式。
原來(lái)這一切都是為了兼容ie 6/7/8 , 用來(lái)觸發(fā)ie的haslayout內部屬性。導致ie重新計算自身的高度。
大多數因為浮動(dòng)所產(chǎn)生和定位問(wèn)題bug 都可以用zoom來(lái)解決。
四 inline-block
inline屬性的特點(diǎn)是,行內元素,能夠在同一行內顯示,但是其高度,寬度,行高,margin,padding 等元素都不能設置。所以就產(chǎn)生了inline-block;
inline-block行內元素,但不失block 的效果。在是在ie 6/7下沒(méi)有被完全支持。
關(guān)于ie 6/7對于 inline-block的不完全支持,也可以采用上面的方法解決。
如:
這樣就能夠使在ie 6/7中的inline元素具有inline-block的效果。
給個(gè)example:
百度之,原來(lái)是個(gè)bug , 解決辦法蠻多
第一種就是換doctype為<!doctype html>
其它如果不改doctype可以去設置含有img元素的高度,并且需要float一下就ok了。
注意問(wèn)題:這里需要垂直居中,是采用設置img的vertical-align的屬性,而不是文本。
當然這也不是絕對的,具體需要看那一個(gè)元素的高度更高,就去設置哪一個(gè)元素的vertical-align屬性。
當然還有一個(gè)經(jīng)驗之談就是在切圖的時(shí)候,將圖的高度切為單數。這樣的ie6/7下就不會(huì )有多出的1px的問(wèn)題。聯(lián)系客服