浅谈line-height

基础知识

有4种模型,分别是

  • 块,块盒模型 containing boxing,包括line
  • 行内盒模型 inline boxing ,包含content
  • 行模型 line boxing,包含inline,line高度是由最高的inline元素决定.
  • 内容区域 content area

这部分内容可以着重看 这里有详细的介绍。

line-height与line boxes高度

由上面的内容可以总结出line boxes 的高度取决与其下属的inline boxes 中最高的元素。

对于像input这样的元素,在不同浏览器上line-height属性表现是不同,参考Line-Height Doesn’t Work As Expected On Inputs

垂直居中的特性

行高还有一个特性,叫做垂直居中性。line-height的最终表现是通过line boxes实现的,而无论line boxes所占据的高度是多少(无论比文字大还是比文字小),其占据的空间都是与文字内容公用水平中垂线的。 ----张鑫旭的博文

我们经常看到一种垂直居中的方法,那就是让heightline-height 相同

    text-vertical{
        height:30px;
        line-height:30px;
    }

其实在这里起作用的是line-height , 只要设置好了line-height ,在不设置height 的情况下一个div 的高度就是他的line-height 的值

结果如图:在chrome的测试下

line-height与line boxes高度 by wangjojo (@wweggplant) on CodePen.

多行文字垂直居中

在看了张鑫旭大神的博文后, 发现不使用最后的i标签也是可以做到垂直居中的,可能是他当时写那篇文章的时间太久,浏览器的更新问题等, 在最新版本的测试下,不必使用i标签,只使用line-height 就能解决问题,如果发现旧浏览器不支持,可以采用他博客中提到的方法.

多行文字居中,添加i方式 by wangjojo (@wweggplant) on CodePen.

行高在文章中的应用

line-height赋值方式px/em、百分值、normal、数值、inherit继承。px/em和inherit没什么好说的, normal与数值1.2等价 ,所以下面重点说说百分比和数值两种赋值方式的区别.

line-height百分比

line-height百分比赋值的结果是当前line-height的值乘以这个百分比数值得到的.demo如下:

line-height赋值方式 by wangjojo (@wweggplant) on CodePen.

外层的 div.wrapline-height 计算结果是 20px*150% = 24px;

内部的h1标签和 p标签的通过继承得到 line-height:150% 然后最后的结果仍然是24px

line-height采用百分比的情况下,line-height的最终值h就是当前line-height乘以这个百分比计算得出.并且这个值会继承下去,后代的元素继承得到的值也是h

line-height纯数值

外层的 div.wrap-line-height-numberline-height 计算结果是 30px*1.5 = 45px;

内部的h1标签和 p标签的通过继承得到 line-height:1.5


h1line-height16px*1.5 = 24px


pline-height12px*1.5 = 16px

可以把line-height采用数值形式当作一种倍数的继承, 后代的元素都会继承这个倍数,并受这几数值的影响,得到最后的值

line-height与vertical-align关系(有空再写)

总结

  1. 4种box模型以及各自的含义
  2. line-heightline box的关系
  3. 文字垂直居中
  4. line-height赋值形式采用数值或者是百分比时各自的代表的含义

参考

原文地址:https://www.cnblogs.com/homehtml/p/12628443.html

时间: 2024-08-29 08:29:44

浅谈line-height的相关文章

浅谈style.height、clientHeight、offsetHeight、scrollHeight

先分别介绍以下,以下资料来自MDN HTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数. Element.clientHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数. Element.scrollHeight 是一个只读属性,是一个元素内容高度的度量,包括由于溢出导致的视图中不可见内容 style.height clientHeight offsetHeig

浅谈php web安全

首先,笔记不是web安全的专家,所以这不是web安全方面专家级文章,而是学习笔记.细心总结文章,里面有些是我们phper不易发现或者说不重视的东西.所以笔者写下来方便以后查阅.在大公司肯定有专门的web安全测试员,安全方面不是phper考虑的范围.但是作为一个phper对于安全知识是:“知道有这么一回事,编程时自然有所注意”. 概要: 1.php一些安全配置 (1)关闭php提示错误功能 (2)关闭一些“坏功能” (3)严格配置文件权限. 2.严格的数据验证,你的用户不全是“好”人 2.1为了确

浅谈OCR之Onenote 2010

原文:浅谈OCR之Onenote 2010 上一次我们讨论了Tesseract OCR引擎的用法,作为一款老牌的OCR引擎,目前已经开源,最新版本3.0中更是加入了中文OCR功能,再加上Google的更新.维护,可以说是潜力很大,值得期待.由上一次的测试结果也可以看出,Tesseract的OCR结果还不是很理想,尤其是中英文混合的文字,其识别率有限.本次我们来关注下Office 2010中的Onenote,调用其API来测试OCR功能. PS:在公司经理一直推荐使用MyBase来记录工作中遇到的

【算法微解读】浅谈01分数规划

浅谈01分数规划 所谓01分数规划,看到这个名字,可能会想到01背包,其实长得差不多. 这个算法就是要求"性价比"最高的解.sum(v)/sum(w)最高的解. 定义 我们给定两个数组,a[i]表示选取i的收益,b[i]表示选取i的代价.如果选取i,定义x[i]=1否则x[i]=0.每个物品只有选和不选的两种方案,求一个选择的方案使得R=sigma(a[i]x[i])/sigma(b[i]x[i]),也就是选择物品的总收益/总代价最大或者最小. 01分数规划问题主要包含以下几个问题:

浅谈移动前端的最佳实践(转)

前言 这几天,第三轮全站优化结束,测试项目在2G首屏载入速度取得了一些优化成绩,对比下来有10s左右的差距: 这次优化工作结束后,已经是第三次大规模折腾公司框架了,这里将一些自己知道的移动端的建议提出来分享下,希望对各位有用 文中有误请您提出,以免误人自误 技术选型 单页or多页 spa(single page application)也就是我们常常说的web应用程序webapp,被认为是业内的发展趋势,主要有两个优点: ① 用户体验好 ② 可以更好的降低服务器压力 但是单页有几个致命的缺点:

浅谈asp.net通过本机cookie仿百度(google)实现搜索input框自动弹出搜索提示

对于通过用户输入关键词实现自动弹出相关搜索结果,这里本人给两种解决方案,用于两种不同的情形. 常见方法是在数据库里建一个用户搜索关系表,然后通过用户搜索框输入的关键字异步调用数据表中的相关数据,显示在一个隐藏div中. 第二种方式也就是我现在着重讨论的方式,适用于单个用户,基于此用户以往的搜索数据来实现搜索提示功能.技术关键是记录下用户的以往搜索数据,写入cookie,然后页面从用户本机cookie调用数据. ok,下面进入正题.本文主要讲实现步骤,代码可根据自己实际需要更改. 一,如何写入co

浅谈客户的一点固见

浅谈客户的一点固见 Neil Cameron 客户通常对port数目有着确定的想法. 我感到这一点有些不同平常,原因是人们经常对生活中的其它事情并无此定见. 可是,说到RAID或HBA控制器上的port数目,大家确实有着十分固定的看法. 举个样例:我有两个SSD--哦,你没有两个port的控制器,那我就看看四个port的吧. 但我不管怎样也不会考虑16个port的控制器,由于我的思维已经卡在我当前拥有的硬盘数目上. 遗憾的是,其实,不管你眼下是否能意识得到,你所须要的其实是16port的控制器.

浅谈C++ IO标准库(1)

IO流:一.C++中标准IO库:1).为面向对象的标准库.2).以继承的形式设计.     A)以iostream为基类,派生出了fstream,strigstream类.注意:fstream.stringstream没有继承关系,open.close为fstream类自有的函数操作,str为stringstream自有的函数操作,故其各函数操作不可混用,而iostream中的函数操作其两子类由于继承关系可以调用.     B) 其禁用了复制和赋值操作,故IO对象不可以复制或赋值.这将导致像ve

【ZOJ】3785 What day is that day? ——浅谈KMP应用之ACM竞赛中的暴力打表找规律

首先声明一下,这里的规律指的是循环,即找到最小循环周期.这么一说大家心里肯定有数了吧,“不就是next数组性质的应用嘛”. 先来看一道题 ZOJ 3785 What day is that day? Time Limit: 2 Seconds      Memory Limit: 65536 KB It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? Input There are multiple tes

io流浅谈

IO流浅谈 在这篇文章里,我会分别和大家聊字节流和字符流 一字节流 File     File:文件和目录(文件夹)路径名的抽象表示形式.       File的构造方法:    File(String pathname):把一个路径名称封装成File对象    File(String parent, String child):把一个父路径和一个子路径封装成一个File对象    File(File parent, String child):把一个父路径File对象和一个子路径封装成一个Fi