html中高与行高的区别,深入了解css的行高Line Height属性

什么是行间距?

古时候我们是用印刷机来处理文字,印出来的每个字都位于独立的一个块里。

行间距,即传说中控制两行文字之间垂直距离的东东。

在CSS,line-height被用来控制行与行之间的垂直距离。

不过行间距与半行间距还是取决于CSS中的line-height。

那么如何来使用line-height?

默认状态,浏览器使用1.0-1.2 line-height .这是一个初始值。

15426229_1.jpg

你可以定义CSS里的line-height属性来覆盖默认值

Css代码 icon_copy.gif icon_star.png

spinner.gif

p { line-height:140%; }

p { line-height:140%; }

你可以用5种方式来定义line-height:

1、line-height可以被定义为normal。

Css代码 icon_copy.gif icon_star.png

spinner.gif

body { line-height:normal; }

body { line-height:normal; }

2、line-height可以被定义为继承

p { line-height:inherit; }

3、line-height可以使用一个百分比的值

p { line-height:120%; }

4、line-height可以被定义为一个长度值(单位px、em等)

p { line-height:20px; }

5、line-height也可以被定义为纯数字(甚至没有单位)

p { line-height:1.2; }

缩写line-height

那5种line-height值也可以在font属性里缩写

line-height值紧跟着font-size值,使用斜杠隔开/

举例来说......

值normal

body { font:100%/normal arial; helvetica, sans-serif; }

值百分比

body { font:100%/120% arial; helvetica, sans-serif; }

值长度

body { font:100%/20px arial; helvetica, sans-serif; }

值纯数字

body { font:100%/1.2arial; helvetica, sans-serif; }

计算line-height

有些CSS属性是可继承(inherited)(从层叠的元素里传递下来)

这样设计是为了方便开发者

于是他们不用为所有后代元素再设置一次

例如:color属性是可继承的。如果body被定义了color,那么它会传递给页面里的所有元素

对于line-height继承会有一点复杂

为了更好的演示line-height的各种用法

使用如下的HTML代码

consect etuer adipi scing ....

Lorem ipsum dolor sit amet ....

这些代码有着如下文档树结构

15426229_2.jpg

我们同时使用如下CSS

(注:文字大小使用像素是为了看起来简单,尽管不推荐这么干!)

Css代码 icon_copy.gif icon_star.png

spinner.gif

body { font-size:16px; line-height:XXX; }

h1 {font-size:32px;}

p {font-size:16px;} #footer {font-size:12px;}

body { font-size:16px; line-height:XXX; }

h1 {font-size:32px;}

p {font-size:16px;} #footer {font-size:12px;}

例1:值百分比

line-height被设置为百分比(120%)

Css代码 icon_copy.gif icon_star.png

spinner.gif

body { font-size:16px; line-height:120%; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

body { font-size:16px; line-height:120%; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

line-height的百分比(120%)和body的文字大小(16px)被用来计算值(16px*120%=19.2px)这个计算出来的值会被层叠下去的元素所继承

所有继承下来的元素会忽略本身的font-size,而使用相同的,计算出来的line-height.

15426229_3.jpg

line-height不会随着相关的font-size做相应的比例缩放

15426229_4.jpg

例2、值:长度

line-height被设置成一个长度值(20px)

Css代码 icon_copy.gif icon_star.png

spinner.gif

body { font-size:16px; line-height:20px; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

body { font-size:16px; line-height:20px; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

长度值20px会被后代继承

所有继承下来的元素会忽略本身的font-size,而使用相同的,继承的line-height

15426229_5.jpg

line-height还是不会随着相关的font-size做相应的比例缩放

15426229_6.jpg

例3、值:normal

line-height被设置为normal(约为1.2)

Css代码 icon_copy.gif icon_star.png

spinner.gif

body { font-size:16px; line-height:normal; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

body { font-size:16px; line-height:normal; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

在本例中使用继承的计算出来的值还不如用值normal,浏览器在解释normal的时候会有细微差别。

现在所有继承下来的元素不会忽略本身的font-size,而使用基于font-size算出来的line-height

15426229_7.jpg

现在,line-height会随着相关的font-size做相应的比例放缩

15426229_8.jpg

但是,如果你既想要normal的灵活,又想要设置一个自定义的值这时候就得指望值:纯数字

例4、值:纯数字

line-height被设置为值:纯数字(1.5)

Css代码 icon_copy.gif icon_star.png

spinner.gif

body { font-size:16px; line-height:1.5; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

body { font-size:16px; line-height:1.5; }

h1 {font-size:32px;}

p {font-size:16px;}

#footer {font-size:12px;}

在本例中用继承的计算后的值,倒不如用系数(1.5)

现在所有继承下来的元素使用基于font-size算出来的line-height

15426229_9.jpg

再一次,line-height会随着相关的font-size做相应的比例缩放

15426229_10.jpg

那么哪一种是最好的方案?

一般来说,设置行高为值:纯数字是最理想的方式。因为其会随着对应的font-size而放缩

在多种情况下,很难确定一个完美的line-height,但无论如何,保守估计标题是没有段落那么的需要自适应line-height

举例来说,所有内容被定义为1.5,标题被定义为1.2.

body {line-height:1.5} h1,h2,h3,h4,h5,h6 {line-height:1.2}

万维网内容可存取性指南(WCAG)2.0规定“段落中的行距至少要1.5倍”,这意味着如果要达到AAA等级,行高应为1.5.

深入line-height

为了深入了解line-height,我们需要先来了解 CSS boxes的各种类型

我们从一段简单的HTML代码开始

The emphasis element is defined as "inline".

这些代码在大多数浏览器下应该会被渲染成下图

15426229_11.jpg 这个例子中涉及到4个boxes

box类型1:containing boxes

这个例子中段落就是一种containing boxes,它包含了其他boxes。

15426229_12.jpg

box类型2:inline boxes

在段落内有一系列的inline boxes

15426229_13.jpg inline boxes 不会让内容显示成块形式,而是排成一行。

emphasis 元素就是一种inline boxes

15426229_14.jpg

其他没有特别标签的box被称为拟名inline boxes

15426229_15.jpg box类型3:line boxes

inline boxes在containing boxes里一个接一个组成了line boxes

15426229_16.jpg box类型4:content area

content area是围绕着文字的看不见的一种box,他的高取决于font-size

15426229_17.jpg inline boxes与inline-height

行高基于一则简单小配方,应用在inline boxes上。

1.line-height和font-size的差别可以从下面的例子中看出

例:

font-size:16px;

line-height:20px;

差别:4px(即行间距)

2.拆分行间距,来创建一个半行间距

4px行间距/2 = 2px半行间距

3.半行间距会被应用在content area 的顶部和底部

15426229_18.jpg 但有的时候情况会有一点点的复杂

content box包裹着line box,而半行间距位于content box 的上部和下部。

15426229_19.jpg

然而有时候inline box 会小于content area!

举例来说,如果line-height 小于 font-size,inline box 会优先于行高

例:

font-size:16px;

line-height:12px;

inline box 高度:12px

content area 会溢出,inline box的顶部和底部半行高会折叠起来以保证inline box的高度

15426229_20.jpg line box的一些注解

line box的高度取决于它内部最高的inline box (或被替换的元素)

最高的inline box 可以是匿名inline box

15426229_21.jpg

也是可以增加line-height后的inline box

15426229_22.jpg 还可以是更大font-size的inline box

15426229_23.jpg 或存在上标或下标

15426229_24.jpg

或,甚至存在可替换元素,例如一张图

15426229_25.jpg line box在containing box宽度内靠着彼此的颈部堆积

15426229_26.jpg

最后,总结

上标和下标

上标和下标有时候会强制影响line box 使其高度异常。

15426229_27.jpg 你可以把line-height设置为0来解决这个问题,那样会移除元素的上下半行间距

sup,sub {ine-height:0;}

IE6,line-height和内联图片

IE5/6错误的移除了内联图片的顶部半行间距

15426229_28.jpg 搞定这玩意儿,需要点技术含量。如果有必要的话,给图片设置顶部的margin值,以模拟顶部半行间距。这个顶部的margin应该只针对于IE5/6(使用条件注释)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动生成优化的Java类专业知识

如果您今年访问过JavaOne,您可能已经参加了我的演讲“如何从数据库生成定制的Java 8代码”。 在那次演讲中,我展示了如何使用Speedment Open Source工具包使用数据库作为域模型来生成各种Java代码。 我们没有时间要考虑的一件事是,Speedment不…

vue动态路由配置,vue路由传参

如果是不同的组件过来的,可以设置不同的id值,只要在目标组件获取属性id的值就可以了,参数就利用query.属性值来获取 转载于:https://www.cnblogs.com/xiaoqi2018/p/10434318.html

Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。 netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后…

win10怎么放计算机在桌面,win10我的电脑怎么放在桌面

win10我的电脑图标怎么放在桌面呢?一不小心将win10桌面上的此电脑图标删除了,找了半天都没找到它。win10系统怎么将我的电脑图标藏的隐蔽。今天,我就将找回win10我的电脑图标方法分享给你们刚重装完win10系统有些小伙伴就急急忙忙的来询问小编…

project 2013 显示标题

1、分析 右键只能插入任务,不能插入标题,而插入任务会被编号,目前只能在打印设置标题,不能在编辑界面显示标题的,或者使用最高级任务的方式 2、解决 文件,打印,页面设置,页眉&#x…

getopt在Python中的使用

在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能。目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词。长格式是在Linux下引入的。许多Linux程序都支…

大数据的数据采集数据处理_让我们处理大数据

大数据的数据采集数据处理作为开发人员,我们的重点是简单,有效的解决方案,因此,最有价值的原则之一就是“保持简单和愚蠢”。 但是使用Hadoop map-reduce很难坚持这一点。 如果我们要评估多个Map Reduce作业中的数据,我…

怎样正确使用和维护微型计算机,下篇:微型计算机应该怎样进行维护与保养

2. 养成良好的使用维护习惯(1)正确的使用习惯个人使用习惯对计算机的影响很大,首先是要正常开关机,开机的顺序是,先打开外设的电源,然后再开主机电源。关机顺序相反,先关闭主机电源,再关闭外设电源。其道理…

CF :K 一个含n条边的带权无向连通图,q次查询,每次查询两点间的最短距离。...

题意:给你一个含n条边的带权无向连通图,q次查询,每次查询两点间的最短距离。 思路:LCA思维。 设a,b两点间的距离为f(a,b) 则f(a,b)dis[a]dis[b]-2*dis[lca(a,b)]; 由于n条边,因此我们先任取一条边&#xff…

每天一个linux命令(20):find命令之exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。 exec解释: -exec 参数后面跟的是command命令,它的终止是以;为结束标志的&#x…

英语作业介绍一项发明计算机,介绍电脑的发明的英语作文

匿名用户1级2008-07-25 回答Simple 1:Different eras of political history are frequently identified with royal dynasties, or great wars and revolutions.Eras in the history of art and architecture may be distinguished by styles such as Renaissance, Gothic, Imp…

Math、Date内置对象方法整理

Math : 内置的对象&#xff08;构造函数&#xff09;静态属性或静态方法。一、Math.PI : 圆周率console.log(Math.PI);二、近似值1. 四舍五入 &#xff1a; Math.round()注: 负数时&#xff0c; < 0.5 舍去 > 0.5 进一console.log(Math.round(4.5)); //5console…

Neo4j:动态添加属性/设置动态属性

我一直在研究一个包含英国国家铁路时刻表的数据集&#xff0c;它们以文本格式为您提供每列火车的出发和到达时间。 例如&#xff0c;可以这样创建代表停止的节点&#xff1a; CREATE (stop:Stop {arrival: "0802", departure: "0803H"})该时间格式不是特…

便利的开发工具-log4cpp快速使用指南

0. 优点 提供应用程序运行上下文&#xff0c;方便跟踪调试&#xff1b; 可扩展的、多种方式记录日志&#xff0c;包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等&#xff1b; 可以动态控制日志记录级别&#xff0c;在效率和功能中进行调整&#xff1b; 所有配…

计算机用户账户无法打开浏览器,请问怎么样禁止一个电脑用户使用IE浏览器

为了不使他人随意改变您对浏览器的设置以及对IE的某些功能限制使用&#xff0c;有必要将你的设置选项进行隐藏或禁止使用。过去在Windows 9x系统中&#xff0c;一般是通过修改注册表来实现的&#xff0c;不过这会对系统的安全性带来一定的风险。当您选择了Windows XP后&#xf…

Mask R-CNN论文理解

摘要&#xff1a; Mask RCNN可以看做是一个通用实例分割架构。Mask RCNN以Faster RCNN原型&#xff0c;增加了一个分支用于分割任务。Mask RCNN比Faster RCNN速度慢一些&#xff0c;达到了5fps。可用于人的姿态估计等其他任务&#xff1b;1、Introduction 实例分割不仅要正确的…

doctype html h5,HTML DOCTYPE

前言&#xff1a;DOCTYPE标签在平常书写HTML的时候总是放在首位内容&#xff0c;但是他有什么作用呢。正文&#xff1a;html之中的DOCTYPE书写H5与H4的时候我们引用的使用的DOCTYPE是会有些许不一样的。HTML4的时候我们使用如下格式&#xff1a;>p.s.这里我们说一下H4的几种…

servlet基础_Servlet基础

servlet基础通过本教程&#xff0c;我将尝试使您更接近Java Servlet模型。 在检查servlet规范中定义的类之前&#xff0c;我将解释在开始开发Web应用程序之前需要了解的基本知识。 了解Java Servlet模型 首先&#xff0c;不仅为基于请求和响应编程模型的规范的Web应用程序定义…

纯 CSS 实现高度与宽度成比例的效果

http://zihua.li/2013/12/keep-height-relevant-to-width-using-css/ 转载于:https://www.cnblogs.com/ygm900/p/10443982.html

c++ || && 逻辑短路问题

结论&#xff1a;“或”逻辑前面为1&#xff0c;“与”逻辑前面为0就会发生短路 1——或逻辑短路 include <stdio.h> int main() { int a5,b6,c7,d8,m2,n2; (ma<b)||(nc>d); printf("%d\t%d",m,n); } 输出的结果为1,2.为什么呢&#xff0c;因为a<b&am…