6.HTML3

參考
1.line-height1
2.line-height2
3.line-height3
4.line-height4

一、line-height有什么作用?

  • 根據(jù)視頻上講的,line-height:2;的意思
    1.它表示這這段文字占用的空間是它本身高度的2倍,也就是這段文字上下都有0.5倍的自身高度;
    2.文字間的縫隙等于文字的高度,這個(gè)就是行高;
    3.行高的作用對(duì)于一行文字讓它在div里水平垂直居中。
  • 當(dāng)line-height:1;時(shí),那么這段文字所占用的空間就是它自己的高度,css中的屬性中,此情況一定會(huì)寫(xiě)成1px;
  <style type="text/css">
     .test1{
              border:1px solid red; 
              font-size:20px; 
              line-height:2; 
           } 
    .test2{
              border:1px solid red; 
              font-size:20px; 
              line-height:1; 
         }
 </style>

  <body>
     <div class="test1">測(cè)試1,雞鳴外欲曙,.....</div>
     <div class="test2">測(cè)試2</div>   
  </body>    
Paste_Image.png

line-height是用于設(shè)置行間的距離的屬性,也就是行高,而行高就是指文字的大小與行距的和。也可以說(shuō)行高是指文本行基線間的垂直距離,但是文本之間的空白距離不僅僅是行高決定的,同時(shí)也受字號(hào)的影響。

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

Paste_Image.png

②行高與字體尺寸的差稱為行距(leading),如圖7-18所示。

Paste_Image.png

內(nèi)容區(qū)域、行內(nèi)框和行框
①理論上講,一行中的每個(gè)元素都有一個(gè)內(nèi)容區(qū)域,它是由字體尺寸決定的,如圖7-19所示。

Paste_Image.png

②行內(nèi)元素會(huì)生成一個(gè)行內(nèi)框(inline box),行內(nèi)框只是一個(gè)概念,它無(wú)法顯示出來(lái),但是它又確實(shí)存在。
在沒(méi)有其他因素影響的時(shí)候,行內(nèi)框等于內(nèi)容區(qū)域,而設(shè)定行高則可以增加或者減少行內(nèi)框的高度,即:將行距的值(行高-字體尺寸)除以2,分別增加到內(nèi)容區(qū)域的上下兩邊,如圖7-20所示。

Paste_Image.png

③由于行高可以應(yīng)用在任何元素上,因此同一行內(nèi)的若干元素可能有不同的行高和行內(nèi)框高,例如有如下代碼,其顯示如圖7-21所示。

<strong style=”line-height:50px;”> 行高50px。</strong>
<span style=”line-height:30px;”>行高30px。</span>
</p>

Paste_Image.png

這里又有一個(gè)新的概念——行框(line box)。同行內(nèi)框類似,行框是指本行的一個(gè)虛擬的矩形框,其高度等于本行內(nèi)所有元素中行高最大的值。因此,當(dāng)有多行內(nèi)容時(shí),每行都會(huì)有自己的行框,如圖7-22所示。

Paste_Image.png

提示:理解行框和行內(nèi)框的概念對(duì)于[垂直對(duì)齊:vertical-align屬性]一節(jié)的內(nèi)容非常重要。
注意:行框的高度只同本行內(nèi)元素的行高有關(guān),而和父元素的高度(height)無(wú)關(guān)。

行高的計(jì)算與繼承

①以em、ex和百分比為單位的行高,其基數(shù)是元素本身的字體尺寸。例如有代碼如下:

 字高20px,行高2em。

</p>
<p style="font-size:30px;line-height:2em;">
字高30px,行高2em。
</p>

2個(gè)段落的行高都為2em,但是字體大小不同,因此顯示如圖7-23所示。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-39e31e36225bf78a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> ②行高可以設(shè)定得比字體高度小,此時(shí)多行的文字將疊加到一起,例如有如下代碼,其顯示如圖7-24所示:
p { font-size : 20px; line-height :10px; }

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-dc4d88acc5e6c808.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> ③行高是可繼承的,但是繼承的是計(jì)算值,例如有如下代碼:
```p { font-size :20px; line-height : 2em; }
 p span { font-size : 30px; }```

>  ```<p>字高20px。<span>字高30px。</span></p>```

> <p>元素的行高2em,字體尺寸為20px,因此計(jì)算值為40px,雖然<span>元素本身的字體尺寸為30px,不過(guò)其繼承的行高仍為40px。但是在不同的瀏覽器內(nèi)顯示的效果卻不盡相同,如圖7-25所示。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-f2c291cb2a52a34b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> ④由于繼承的是計(jì)算值,因此當(dāng)元素內(nèi)的文字字體尺寸不一樣的時(shí)候,如果設(shè)定固定的行高很可能造成字體的重疊,例如有如下代碼,其顯示如圖7-26所示。
>```p { font-size : 20px; line-height : 1em; }
>  p span { font-size : 30px; }```

> ```<p>字高20px,行高1em,當(dāng)文本為多行時(shí)可能會(huì)發(fā)生文字重疊的現(xiàn)象。<span>字高30px</span></p>```

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-343c250a0a163cc6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> 為了避免這種情況,可以為每個(gè)元素單獨(dú)定義行高,但是這樣很煩瑣,因此可以定義一個(gè)沒(méi)有單位的實(shí)數(shù)值作為縮放因子來(lái)統(tǒng)一控制行高,縮放因子是直接繼承的,而不是繼承計(jì)算值。例如修改上例中的行高為:

> ```p { line-height : 1; }```

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-cdf61d0d35364836.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> ⑤當(dāng)內(nèi)容中含有圖片的時(shí)候,如果圖片的高度大于行高,則含有圖片行的行框?qū)⒈粨伍_(kāi)到圖片的高度,如圖7-28所示。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-ddd1f9ce7bbdcb7d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**注意**:圖片雖然撐開(kāi)了行框,但是不會(huì)影響行高,因此也不會(huì)影響到基于行高來(lái)計(jì)算的其他屬性。
**提示**:當(dāng)行內(nèi)含有圖片的時(shí)候,圖片和文字的垂直對(duì)齊方式默認(rèn)是基線對(duì)齊


## line-height 語(yǔ)法
> - 語(yǔ)法: line-height : normal | <實(shí)數(shù)> | <長(zhǎng)度> | <百分比> | inherit
> - 說(shuō)明: 設(shè)置元素中行的高度。
值:
> -  normal:默認(rèn)行高,一般為1到1.2;
> -  實(shí)數(shù):實(shí)數(shù)值,縮放因子; 
> - 長(zhǎng)度:長(zhǎng)度值,可為負(fù)數(shù); 
> - 百分比:百分比取值基于元素的字體尺寸。
> - 初始值: normal;
> - 繼承性: 繼承;
> - 適用于: 所有元素
> - 計(jì)算值: 長(zhǎng)度和百分比值為絕對(duì)值;其他同指定值
1.line-height可以被定義為:body{line-height:normal;} 
2.line-height可以被定義為:body{line-height:inherit;} 
3.line-height可以使用一個(gè)百分比的值body{line-height:120%;} 
4.line-height可以被定義為一個(gè)長(zhǎng)度值(px,em等) body{line-height:25px;} 
5.line-height也可以被定義為實(shí)數(shù)值body{line-height:1.2} 

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-ce59099a55b6c160.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## line-height的5種表示方法進(jìn)行測(cè)試:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>任務(wù)六</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<style type="text/css">
.div1{
font-size:20px;
line-height:?;
}
.p1{
background-color:red;
font-size:40px;
}
.p2{
background-color:orange;
font-size:20px;
}
</style>
</head>
<body>
<div class="div1">
<p class="p1">
測(cè)試段落1

測(cè)試段落1

測(cè)試段落1

</p>
<p class="p2">
測(cè)試段落2

測(cè)試段落2

測(cè)試段落2

</p>
</div>
</body>
</html>

> 第一種:設(shè)置成normal:

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-d0702e1dcaf8e8de.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

>第二種:設(shè)置為固定值20px

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-53af869c1755964c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

>第三種:設(shè)置成百分比200%

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-e3aad5242d8d98b8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

>第四種:設(shè)置數(shù)字2

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-92402a9c891cd6ec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

>第五種:設(shè)置inherit

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-3e7895e7375a3ec7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## 由此可見(jiàn)
> 1. 設(shè)置成normal和inherit,段落的行高是一樣的。因?yàn)樗麄兪悄J(rèn)行高,一般值為1到1.2,當(dāng)然這也取決于元素的 font-family。它們算出來(lái)的大小就是用font-size的大小(40px/20px)乘以1.2。所有繼承下來(lái)的元素不會(huì)忽略font-size的值,而使用相應(yīng)font-size的大小來(lái)乘以1.2。line-height會(huì)隨著font-size作相應(yīng)的縮放。
> 2. 設(shè)置成固定值,p1和p2繼承了父元素的固定行高,而忽略本身font-size的值,line-height不會(huì)隨著font-size的值作相應(yīng)的改變,因?yàn)閜1的font-size比父元素的行高大,所以出現(xiàn)了重疊。
> 3. 設(shè)置成百分比。計(jì)算方法就是用font-size的大小(20px)乘以line-height的百分比(200%)。這個(gè)計(jì)算出來(lái)的值會(huì)子元素繼承,所有繼承元素會(huì)使用這個(gè)計(jì)算出來(lái)的值,而忽略本身font-size的值,line-height不會(huì)隨著相應(yīng)的font-size作相應(yīng)比例的縮放。
> 4. 設(shè)置成數(shù)字2,數(shù)值會(huì)被繼承到子元素,然后子元素會(huì)按照自己的font-size調(diào)整行高,計(jì)算式font-size大小(40px/20px)乘以2。所以line-height會(huì)隨著相應(yīng)的font-size作相應(yīng)比例的縮放。

**所以這上面的四種方式使用無(wú)單位的數(shù)值比較好**

## line-height的一個(gè)重要用途-文本居中
> - 單行文本
> ①不設(shè)置height,如果不設(shè)置height,line-height可以設(shè)置為任意數(shù)字

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-5f91ce7bf02c1b8f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
> ②設(shè)置height,將line-height值與height的高度值設(shè)置成一致就能達(dá)到效果

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-bc129b0bc6206303.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> - 多行文本
多行文本垂直居中重點(diǎn)是設(shè)置display:table-cell;根據(jù)視頻上講的這是借用table的屬性,因?yàn)関ertical-align只有在表格中才起作用。然后在加個(gè)文本居中text-align就可以達(dá)到效果

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-287440dedefbcb4a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## 二 .如何去查CSS屬性的兼容性?比如inline-block哪些瀏覽器支持?
審查CSS屬性的兼容性可以使用 [Can I use](http://caniuse.com/#search=inline-block)進(jìn)行查詢

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-8266ab5ddaec8b3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

## 三.a 標(biāo)簽的href, title, target 是什么? title 和 alt有什么區(qū)別?如何新窗口打開(kāi)鏈接?
> - **a標(biāo)簽定義超鏈接,用于從一張頁(yè)面到另一張頁(yè)面。**
    - href是a元素最重要的屬性,它指示鏈接的目標(biāo),href 屬性的值可以是任何有效文檔的相對(duì)或絕對(duì) URL。如果選擇了a標(biāo)簽的內(nèi)容,瀏覽器會(huì)嘗試檢索并顯示 href 屬性指定的 URL 所表示的文檔。
    - title屬性作用是鼠標(biāo)放置到a標(biāo)簽的時(shí)候,顯示的提示信息。
    - target屬性是表示瀏覽器在何處打開(kāi)一個(gè)新的鏈接,是打開(kāi)一個(gè)新的窗口還是覆蓋本頁(yè)面。
> - **title和alt屬性的區(qū)別**
   - title屬性,title是為該屬性的元素提供建議性的信息,它可以用在除了base,basefont,head,html,meta,param,script和title之外的所有標(biāo)簽。
當(dāng)鼠標(biāo)放置在選定元素時(shí),大部分可視化瀏覽器會(huì)顯示title的提示信息。
title屬性用途之一就是為鏈接添加描述性文字,特別是當(dāng)連接本身并不是十分清楚的表達(dá)了鏈接的目的的時(shí)候。
還有一個(gè)用處就是為圖像提供額外的說(shuō)明信息,比如日期等信息。                       

>  - alt屬性,alt屬性只能用在img、area和input元素中,它是為了給那些不能看到文檔中圖像的瀏覽者提供文字說(shuō)明信息,在圖片的位置顯示內(nèi)容。
>
> - **在新窗口中打開(kāi)鏈接**
      <a href="#" target="_blank" title="在新窗口代開(kāi)鏈接">鏈接</a>
> - **跳轉(zhuǎn)到錨點(diǎn)**
      1.id定位,這樣的定位可針對(duì)任何標(biāo)簽定位
      <a href="#here">錨點(diǎn)</a>
      <p id="here"></a>
      或
      <a href="#f1" name="f1">錨點(diǎn)1</a>
      <div name="f1"></div>
      2.使用name定位,name屬性只能針對(duì)a標(biāo)簽來(lái)定位,而對(duì)div等其他標(biāo)簽就不能起到定位作用
      <a href="#f2"></a>
      <br/><br/><br/>
      <a name="f2">111</href>
      3.使用js定位
> - **跳轉(zhuǎn)到另一個(gè)頁(yè)面的錨點(diǎn)**
       1.在test2.html創(chuàng)建錨  <a name="test">錨</a>
       2.在test.html設(shè)置好鏈接  <a href="test2.html#test">連接到另外頁(yè)面的錨的超鏈接</a>

## 四.display: none , visibility: hidden, opacity:0有什么作用?有什么區(qū)別?
>**他們的作用都是讓元素消失,但在渲染效果上有一定的區(qū)別。**
> 1. display:none 表示讓元素消失,并且脫離文檔流,下面的元素將會(huì)上移,占據(jù)其位置;
> 2. visibility:hidden 隱藏元素,但是并沒(méi)有脫離文檔流,渲染的時(shí)候?yàn)榭瞻祝诘奈恢萌匀淮嬖冢旅娴脑夭粫?huì)上移;
> 3. opacity:0 和visibility的作用相似,表示透明度為0,占據(jù)的位置仍然保留。
>        區(qū)別:都可以隱藏元素,主要是display:none;讓元素脫離了文檔流,會(huì)影響其后面的元素

[代碼](http://js.jirengu.com/niy/2/edit?html,console,output)

## 五.如何去除 a 鏈接的默認(rèn)樣式?直接在 a 鏈接父容器添加顏色,能否繼承到當(dāng)前 a 鏈接上?
> - a鏈接默認(rèn)樣式:

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-831bb317d317053c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> - 除去 a 鏈接的默認(rèn)樣式
> 使用text-decoration:none;

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-1c3965e748369e75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> - 用a鏈接制作按鈕

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-a723825f7e81fac5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

> - 直接在 a 鏈接父容器添加顏色,不能繼承到當(dāng)前 a 鏈接上。除了顏色不繼承,其他的都可以繼承,比如字體大小。要實(shí)現(xiàn)對(duì)a鏈接顏色起作用,必須設(shè)置a。


![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-df02cbfabde87863.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

next:[任務(wù)7-HTML4](http://www.lxweimin.com/p/64bab72ba2e0)
pre:[任務(wù)5-HTML2](http://www.lxweimin.com/p/9fc02e93b026)

***
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. line-height有什么作用? line-height指定一行的行高,使用后會(huì)使文本在上下居中。 lin...
    小木子2016閱讀 390評(píng)論 0 0
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,801評(píng)論 1 92
  • 1.line-height有什么作用? 所謂的行高,是指文本行基線之前的距離。在理解這句話之前先了解幾個(gè)基本知識(shí):...
    饑人谷_任磊閱讀 497評(píng)論 0 1
  • 課程目標(biāo) 掌握基本標(biāo)簽和基本樣式的用法 學(xué)習(xí)建議 閱讀資料都是老師的原創(chuàng)文章、示例代碼、或者是精心挑選的文章。是除...
    饑人谷_江君閱讀 591評(píng)論 0 0
  • 1.line-height有什么作用? line-height是行高的意思。具體指兩行文字基線之間的距離。line...
    墨月千樓閱讀 312評(píng)論 0 0