6.HTML3

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

一、line-height有什么作用?

  • 根据视频上讲的,line-height:2;的意思
    1.它表示这这段文字占用的空间是它本身高度的2倍,也就是这段文字上下都有0.5倍的自身高度;
    2.文字间的缝隙等于文字的高度,这个就是行高;
    3.行高的作用对于一行文字让它在div里水平垂直居中。
  • 当line-height:1;时,那么这段文字所占用的空间就是它自己的高度,css中的属性中,此情况一定会写成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">测试1,鸡鸣外欲曙,.....</div>
     <div class="test2">测试2</div>   
  </body>    
Paste_Image.png

line-height是用于设置行间的距离的属性,也就是行高,而行高就是指文字的大小与行距的和。也可以说行高是指文本行基线间的垂直距离,但是文本之间的空白距离不仅仅是行高决定的,同时也受字号的影响。

行高指的是文本行的基线间的距离。而基线(Base line),指的是一行字横排时下沿的基础线,基线并不是汉字的下端沿,而是英文字母x的下 端沿,同时还有文字的顶线(Top line)、中线(Middle line)和底线(Bottom line),用以确定文字行的位置,如图7-17 所示。

Paste_Image.png

②行高与字体尺寸的差称为行距(leading),如图7-18所示。

Paste_Image.png

内容区域、行内框和行框
①理论上讲,一行中的每个元素都有一个内容区域,它是由字体尺寸决定的,如图7-19所示。

Paste_Image.png

②行内元素会生成一个行内框(inline box),行内框只是一个概念,它无法显示出来,但是它又确实存在。
在没有其他因素影响的时候,行内框等于内容区域,而设定行高则可以增加或者减少行内框的高度,即:将行距的值(行高-字体尺寸)除以2,分别增加到内容区域的上下两边,如图7-20所示。

Paste_Image.png

③由于行高可以应用在任何元素上,因此同一行内的若干元素可能有不同的行高和行内框高,例如有如下代码,其显示如图7-21所示。

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

Paste_Image.png

这里又有一个新的概念——行框(line box)。同行内框类似,行框是指本行的一个虚拟的矩形框,其高度等于本行内所有元素中行高最大的值。因此,当有多行内容时,每行都会有自己的行框,如图7-22所示。

Paste_Image.png

提示:理解行框和行内框的概念对于[垂直对齐:vertical-align属性]一节的内容非常重要。
注意:行框的高度只同本行内元素的行高有关,而和父元素的高度(height)无关。

行高的计算与继承

①以em、ex和百分比为单位的行高,其基数是元素本身的字体尺寸。例如有代码如下:

 字高20px,行高2em。

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

2个段落的行高都为2em,但是字体大小不同,因此显示如图7-23所示。

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

> ②行高可以设定得比字体高度小,此时多行的文字将叠加到一起,例如有如下代码,其显示如图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)

> ③行高是可继承的,但是继承的是计算值,例如有如下代码:
```p { font-size :20px; line-height : 2em; }
 p span { font-size : 30px; }```

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

> <p>元素的行高2em,字体尺寸为20px,因此计算值为40px,虽然<span>元素本身的字体尺寸为30px,不过其继承的行高仍为40px。但是在不同的浏览器内显示的效果却不尽相同,如图7-25所示。

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

> ④由于继承的是计算值,因此当元素内的文字字体尺寸不一样的时候,如果设定固定的行高很可能造成字体的重叠,例如有如下代码,其显示如图7-26所示。
>```p { font-size : 20px; line-height : 1em; }
>  p span { font-size : 30px; }```

> ```<p>字高20px,行高1em,当文本为多行时可能会发生文字重叠的现象。<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)

> 为了避免这种情况,可以为每个元素单独定义行高,但是这样很烦琐,因此可以定义一个没有单位的实数值作为缩放因子来统一控制行高,缩放因子是直接继承的,而不是继承计算值。例如修改上例中的行高为:

> ```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)

> ⑤当内容中含有图片的时候,如果图片的高度大于行高,则含有图片行的行框将被撑开到图片的高度,如图7-28所示。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2438058-ddd1f9ce7bbdcb7d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**注意**:图片虽然撑开了行框,但是不会影响行高,因此也不会影响到基于行高来计算的其他属性。
**提示**:当行内含有图片的时候,图片和文字的垂直对齐方式默认是基线对齐


## line-height 语法
> - 语法: line-height : normal | <实数> | <长度> | <百分比> | inherit
> - 说明: 设置元素中行的高度。
值:
> -  normal:默认行高,一般为1到1.2;
> -  实数:实数值,缩放因子; 
> - 长度:长度值,可为负数; 
> - 百分比:百分比取值基于元素的字体尺寸。
> - 初始值: normal;
> - 继承性: 继承;
> - 适用于: 所有元素
> - 计算值: 长度和百分比值为绝对值;其他同指定值
1.line-height可以被定义为:body{line-height:normal;} 
2.line-height可以被定义为:body{line-height:inherit;} 
3.line-height可以使用一个百分比的值body{line-height:120%;} 
4.line-height可以被定义为一个长度值(px,em等) body{line-height:25px;} 
5.line-height也可以被定义为实数值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种表示方法进行测试:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>任务六</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">
测试段落1

测试段落1

测试段落1

</p>
<p class="p2">
测试段落2

测试段落2

测试段落2

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

> 第一种:设置成normal:

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

>第二种:设置为固定值20px

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

>第三种:设置成百分比200%

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

>第四种:设置数字2

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

>第五种:设置inherit

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

## 由此可见
> 1. 设置成normal和inherit,段落的行高是一样的。因为他们是默认行高,一般值为1到1.2,当然这也取决于元素的 font-family。它们算出来的大小就是用font-size的大小(40px/20px)乘以1.2。所有继承下来的元素不会忽略font-size的值,而使用相应font-size的大小来乘以1.2。line-height会随着font-size作相应的缩放。
> 2. 设置成固定值,p1和p2继承了父元素的固定行高,而忽略本身font-size的值,line-height不会随着font-size的值作相应的改变,因为p1的font-size比父元素的行高大,所以出现了重叠。
> 3. 设置成百分比。计算方法就是用font-size的大小(20px)乘以line-height的百分比(200%)。这个计算出来的值会子元素继承,所有继承元素会使用这个计算出来的值,而忽略本身font-size的值,line-height不会随着相应的font-size作相应比例的缩放。
> 4. 设置成数字2,数值会被继承到子元素,然后子元素会按照自己的font-size调整行高,计算式font-size大小(40px/20px)乘以2。所以line-height会随着相应的font-size作相应比例的缩放。

**所以这上面的四种方式使用无单位的数值比较好**

## line-height的一个重要用途-文本居中
> - 单行文本
> ①不设置height,如果不设置height,line-height可以设置为任意数字

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

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

> - 多行文本
多行文本垂直居中重点是设置display:table-cell;根据视频上讲的这是借用table的属性,因为vertical-align只有在表格中才起作用。然后在加个文本居中text-align就可以达到效果

![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)进行查询

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

## 三.a 标签的href, title, target 是什么? title 和 alt有什么区别?如何新窗口打开链接?
> - **a标签定义超链接,用于从一张页面到另一张页面。**
    - href是a元素最重要的属性,它指示链接的目标,href 属性的值可以是任何有效文档的相对或绝对 URL。如果选择了a标签的内容,浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档。
    - title属性作用是鼠标放置到a标签的时候,显示的提示信息。
    - target属性是表示浏览器在何处打开一个新的链接,是打开一个新的窗口还是覆盖本页面。
> - **title和alt属性的区别**
   - title属性,title是为该属性的元素提供建议性的信息,它可以用在除了base,basefont,head,html,meta,param,script和title之外的所有标签。
当鼠标放置在选定元素时,大部分可视化浏览器会显示title的提示信息。
title属性用途之一就是为链接添加描述性文字,特别是当连接本身并不是十分清楚的表达了链接的目的的时候。
还有一个用处就是为图像提供额外的说明信息,比如日期等信息。                       

>  - alt属性,alt属性只能用在img、area和input元素中,它是为了给那些不能看到文档中图像的浏览者提供文字说明信息,在图片的位置显示内容。
>
> - **在新窗口中打开链接**
      <a href="#" target="_blank" title="在新窗口代开链接">链接</a>
> - **跳转到锚点**
      1.id定位,这样的定位可针对任何标签定位
      <a href="#here">锚点</a>
      <p id="here"></a>
      或
      <a href="#f1" name="f1">锚点1</a>
      <div name="f1"></div>
      2.使用name定位,name属性只能针对a标签来定位,而对div等其他标签就不能起到定位作用
      <a href="#f2"></a>
      <br/><br/><br/>
      <a name="f2">111</href>
      3.使用js定位
> - **跳转到另一个页面的锚点**
       1.在test2.html创建锚  <a name="test">锚</a>
       2.在test.html设置好链接  <a href="test2.html#test">连接到另外页面的锚的超链接</a>

## 四.display: none , visibility: hidden, opacity:0有什么作用?有什么区别?
>**他们的作用都是让元素消失,但在渲染效果上有一定的区别。**
> 1. display:none 表示让元素消失,并且脱离文档流,下面的元素将会上移,占据其位置;
> 2. visibility:hidden 隐藏元素,但是并没有脱离文档流,渲染的时候为空白,它所在的位置仍然存在,下面的元素不会上移;
> 3. opacity:0 和visibility的作用相似,表示透明度为0,占据的位置仍然保留。
>        区别:都可以隐藏元素,主要是display:none;让元素脱离了文档流,会影响其后面的元素

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

## 五.如何去除 a 链接的默认样式?直接在 a 链接父容器添加颜色,能否继承到当前 a 链接上?
> - a链接默认样式:

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

> - 除去 a 链接的默认样式
> 使用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 链接父容器添加颜色,不能继承到当前 a 链接上。除了颜色不继承,其他的都可以继承,比如字体大小。要实现对a链接颜色起作用,必须设置a。


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

next:[任务7-HTML4](http://www.jianshu.com/p/64bab72ba2e0)
pre:[任务5-HTML2](http://www.jianshu.com/p/9fc02e93b026)

***
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容

  • 1. line-height有什么作用? line-height指定一行的行高,使用后会使文本在上下居中。 lin...
    小木子2016阅读 357评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,728评论 1 92
  • 1.line-height有什么作用? 所谓的行高,是指文本行基线之前的距离。在理解这句话之前先了解几个基本知识:...
    饥人谷_任磊阅读 440评论 0 1
  • 课程目标 掌握基本标签和基本样式的用法 学习建议 阅读资料都是老师的原创文章、示例代码、或者是精心挑选的文章。是除...
    饥人谷_江君阅读 562评论 0 0
  • 1.line-height有什么作用? line-height是行高的意思。具体指两行文字基线之间的距离。line...
    墨月千楼阅读 294评论 0 0