溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

css line-height屬性的使用方法

發布時間:2021-07-28 22:07:22 來源:億速云 閱讀:416 作者:chen 欄目:web開發

這篇文章主要介紹“css line-height屬性的使用方法”,在日常操作中,相信很多人在css line-height屬性的使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”css line-height屬性的使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

css中用于設置行高的屬性,line-height屬性。

第一,對CSS3的選擇器和類似header、nav、footer等標簽不兼容,在不使用插件和JS處理的情況下,從純CSS的角度來切入,可以采用類名來做定義,這是常用的替代方案。

項目中,針對元素背景不支持顏色漸變的情況,折中的方案是給其一個最合適的背景色,這樣使得背景色和文字顏色能有個基本的對比和區分,不至于影響用戶的閱讀和正常瀏覽。
例如:

代碼如下:


header.sub-hd{  
   position:relative;  
   height:40px;  
   background-image:-moz-linear-gradient(top, #13b9fd, #0183c3);  
   background-image:-o-linear-gradient(top, #13b9fd, #0183c3);  
   background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#13b9fd),color-stop(1,#0183c3));  
   box-shadow:inset 0 1px 4px #6cd5ff;  
   -moz-box-shadow:inset 0 1px 4px #6cd5ff;  
   -webkit-box-shadow:inset 0 1px 4px #6cd5ff;  
   text-align:center;  
   font-size:15px;  
   background-color:#099ddf;/*opera mobile不支持漸變的折中方案*/  
}

針對IE6不識別html5標簽的方法
 

代碼如下:


<script>  
(function(){  
   var e ="abbr,article,aside,audio,canvas,datalist,details,dialog,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video".split(','),i=e.length;  
   while(i--){  
       document.createElement(e[i]);  
   }  
})();  
</script>

第二,我們經常使用line-height屬性,定義行高,尤其是需要設置垂直居中的時候,常常讓height屬性與line-height屬性相同。而且其是可以繼承的,一篇文章的父標簽定義了行高屬性,其子段落元素就不需要再次進行聲明??墒?,也有例外的情況。比如在Opera Mobile瀏覽器,就必須要再次聲明,才能生效。

例子:
1,html代碼

代碼如下:


<div class="test"><h3>測試標題在Opera Mobile下的寬高</h3></div>

2,CSS代碼
 

代碼如下:


<style>  
.test{width:100%;height:40px;line-height:40px!important;background-color:black;color:#eee; opacity:0.5;}  
.test h3{border:1px solid red;}  
</style>

從手機上看頁面效果:不居中!
通過觀察紅色邊框大小,知道內標簽h3的呈現高度與實際呈現的line-height一致,都不是我們父div定義的數值。

然后,我們給h3加上line-height屬性值,可以設置為line-height:inherit或者line-height:40px;
1,CSS代碼:
 

代碼如下:


<style>  
.test{width:100%;height:40px;line-height:40px!important;background-color:black;color:#eee; opacity:0.5;}  
.test h3{line-height:inherit;border:1px solid red;}  
</style>

查看效果,竟然沒有變化,依然沒有垂直居中。這是為什么呢?
莫非是瀏覽器自身默認的屬性優先級高過了當前的屬性優先級。

更改一下優先級:

代碼如下:


<style>  
.test{width:100%;height:40px;line-height:40px!important;background-color:black;color:#eee; opacity:0.5;}  
.test h3{line-height:inherit!important;border:1px solid red;}  
</style>

再看,果然可以了。垂直居中了。
由此我們頁可以印證另一種說法:對于一個空容器,寫入內容容器被撐開有了高度寬度,但實際上根本不是文字撐開了div的高度,而是line-height屬性。
CSS中起高度作用的主要是height以及line-height了吧!如果一個標簽沒有定義height屬性(包括百分比高度),那么其最終表現的高度一定是由line-height起作用,即使是IE6下11像素左右默認高度bug也是如此。

至于內部的機理,看這里很形象的表述:

到底這個line-height行高怎么就產生了高度呢?在inline box模型中,有個line boxes,這玩意是看不見的,這個玩意的工作就是包裹每行文字。一行文字一個line boxes。例如“艾佛森退役”這5個字,如果它們在一行顯示,你艾佛森再牛逼,對不起,只有一個line boxes罩著你;但“春哥純爺們”這5個字,要是豎著寫,一行一個,那真是夠爺們,一個字罩著一個line boxes,于是總計五個line boxes。line boxes什么特性也沒有,就高度。所以一個沒有設置height屬性的div的高度就是由一個一個line boxes的高度堆積而成的。

其實line boxes不是直接的生產者,屬于中層干部,真正的活兒都是它的手下 &ndash; inline boxes干的,這些手下就是文字啦,圖片啊,span之類的inline屬性的標簽啦。line boxes只是個考察匯報人員,考察它的手下誰的實際line-height值最高,誰最高,它就要誰的值,然后向上匯報,形成高度。
例如:

代碼如下:


<span >取手下line-height<span >最高</span>的值</span>。

則line boxes的高度就是40像素了。
雖然所有瀏覽器都支持 line-height 屬性。但是任何的版本的 Internet Explorer (包括 IE8)都不支持屬性值 "inherit"。因此在實際中,我們最好還是用數值定義line-height。

在本例中即為

代碼如下:


<style>  
.test{width:100%;height:40px;line-height:40px!important;background-color:black;color:#eee; opacity:0.5;}  
.test h3{line-height:40px!important;border:1px solid red;}  
</style>

當然,還有一種折中的辦法,可以將內容高度設為瀏覽器默認行高差不多的數值,其余不足的用padding補齊,這樣在Opera mobile下,繼承瀏覽器的21px默認行高,就不需要通過加important標記覆蓋瀏覽器默認值了。同時,在其他標準瀏覽器我們為其子元素指定一個同樣的行高,這樣就能做到暫時兼容opera mobile 和其他所有標準的瀏覽器

瀏覽器默認行高各不相同,一般范圍在16px~21px之間。

例子:
 

代碼如下:


<header class="sub-hd">  
   <div class="tit">應用信息</div>  
</header>
header.sub-hd{  
   position:relative;  
   /*height:40px;*/  
   height:21px;  
   padding:9px 0;  
   background-image:-moz-linear-gradient(top, #13b9fd, #0183c3);  
   background-image:-o-linear-gradient(top, #13b9fd, #0183c3);  
   background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#13b9fd),color-stop(1,#0183c3));  
   box-shadow:inset 0 1px 4px #6cd5ff;  
   -moz-box-shadow:inset 0 1px 4px #6cd5ff;  
   -webkit-box-shadow:inset 0 1px 4px #6cd5ff;  
   text-align:center;  
   font-size:15px;  
   background-color:#099ddf;/*opera mobile不支持漸變的折中方案*/  
}  
header .tit{  
   -webkit-box-sizing:border-box;  
   position:absolute;  
   left:50%;  
   width:150px;  
   /*height:39px;line-height:39px; */  
   line-height:21px;  
   margin-left:-75px;  
   color:#fff;  
   text-shadow:0 1px 0 #333;  
   font-weight:bold;  
   overflow:hidden;  
   font-size:18px;  
}

當然這種辦法并不是最佳的解決途徑,只是權宜之計。最好還是采用上面的優先級設定,通用。

還是有問題!

先來溫習一下line-height屬性可能的值:
normal,默認。
number 數字,此數字會與當前的字體尺寸相乘來設置行間距。
length     設置固定的行間距。單位em,px,pt等等。
百分比% ,基于當前字體尺寸的百分比行間距。
inherit ,規定應該從父元素繼承 line-height 屬性的值。

line-heignt不能是負數,line-height 屬性設置行間的距離(行高)。會影響行框的布局。在應用到一個塊級元素時,它定義了該元素中基線之間的最小距離而不是最大距離。

line-height 與 font-size 的計算值之差(在 CSS 中成為“行間距”)分為兩半,分別加到一個文本行內容的頂部和底部??梢园@些內容的最小框就是行框。

原始數字值指定了一個縮放因子,后代元素會繼承這個縮放因子而不是計算值。

行高指的是文本行的基線間的距離。而基線(Base line),指的是一行字橫排時下沿的基礎線,基線并不是漢字的下端沿,而是英文字母x的下 端沿,同時還有文字的頂線(Top line)、中線(Middle line)和底線(Bottom line),用以確定文字行的位置

行高與字體尺寸的差稱為行距(leading)

使用行高代替高度避免haslayout:在某些情形下,line-height可以和height互換,因為實現的效果一樣。都能撐開一個高度,然而這兩個css屬性有一個較隱蔽的差異,就是使用height會使標簽haslayout,而使用line-height則不會。以前只有IE6的時候曾流行使用height清除浮動,就是利用了IE下height使haslayout的屬性。但有時候,haslayout并不需要,反而要避免。

都喜歡給line-height帶單位,但是在一些情況下會出現問題,看例子:
 

代碼如下:


<style type="text/css">  
.demo{line-height:150%;}  
pre{font-size:30px;}  
</style>  
<div class="demo">  
   <pre>  
   第一行  
   第二行  
   </pre>  
</div>

兩行文字發生了重疊。
為什么帶單位的line-height繼承,有可能會發生重疊的現象呢?

如果line-height屬性值有單位,那么繼承的值則是換算后的一個具體的px級別的值;而如果屬性值沒有單位,則瀏覽器會直接繼承這個“因子(數值)”,而非計算后的具體值,此時它的line-height會根據本身的font-size值重新計算得到新的line-height 值。

上例中的div的line-height為150%,由于默認情況的字體大小為16px,所以div的具體line-height值可換算為16px*150%=24px,由于pre的line-height會繼承24px這個換算過后的具體值,此時pre又被重新定義了font-size:30px;字體大小超過了line-height的大小,于是發生重疊。其它單位原理一樣。

因此建議,養成給line-height不帶單位的習慣,如line-height:1.5;這種寫法避免重疊。

在顯示文章的box里,px的表示方法首先是要被淘汰的。因為文章里面的文字是有大有小的,使用px定值,由于繼承性,無法實現根據文字大小自動調整間距,會出現大號文字重疊的現象。normal也是不行的,一般文章顯示最好是650像素的寬度,1.5倍的行距較好。

一般瀏覽器的normal值在1~1.2之間,使用normal必然文字間距過小,閱讀吃力。
百分值也有繼承性,但是有個很搓的辦法可以實現文字間距自動適應于文字的大小,那就是使用“*”通配符,例如:.article_box *{line-height:150%;}就不會出現文字重疊的情況了。

到此,關于“css line-height屬性的使用方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女