1.定义
   行高:两行文字baseline(基线)之间的距离

示意图:

2.为何line-height可以让单行文本垂直居中    
   其实并没有垂直居中,除非将font-size:0;

3.line-height的高度原理(可以先看看行内盒子的原理)
   * 行内元素的高度是line-height决定的,而不是由font-size决定的,
   * 行高由于其继承性,影响无处不在,即使单行文本也不例外
   * 行高只是幕后黑手,高度的表现不是行高,而是内容区域和行间距
   * 内容区域高度+行间距 = 行高
      内容区域高度至于字号以及字体有关,与line-height无关

4.比较有用的属性值
   * line-height:1.5;line-height:150%;line-height:1.5em;
      实际的line-height: font-size*1.5,适合页面自适应

* 区别:
      * 1.5: 所有可继承元素根据自身的font-size重计算行高
      * 150%/1.5em: 当前元素根据font-size计算行高,子元素继承该行高

分析:div的行高: line-height:24px*1.5,span的行高 line-height:60px*1.5
<div style="background:#eee;font-size:24px;line-height:1.5;">
<span style="font-size:60px;">测试1</span>
</div>
分析: div的行高: line-height:24px*1.5,span继承div的行高 line-height:24px*1.5
<div style="background:#eee;font-size:24px;line-height:150%;">
<span style="font-size:60px;">测试2</span>
</div>

* 继承性(IE8+)
   input框等元素默认行高是normal,使用inherit可以让文本框样式可控性更强

* 使用经验
   body{font-size:14px;line-height:1.4286}  => line-height:20px;

5.line-height和图片的表现
  * 行高不会影响图片实际占据的高度
  * 消除图片底部间隙的方法
    a.图片块状化 - 无基线对齐   img{display:block;}
    b.图片底线对齐  img{vertical-align:bottom;}
    c.行高足够小 - 基线位置上移 .box{line-height:0;}

6.line-height的实际应用
   * 大小不固定的图片垂直居中(IE8+)

.box{height:300px;line-height:300px;text-align:center;}
.box>img{vertical-align:middle;/*基线网上1/2高度*/}

* 多行文本垂直居中(IE8+)

.box{line-height:250px;text-align:center;}
.box>.text{display:inline-block;line-height:normal;text-align:left;vertical-align:middle;}
/* 重置外部继承的line-height、text-align */

* 代替height,避免IE6/IE7下的haslayout

<span class="out">
<span class="in1">height:36px;</span>
</span>
<span class="out">
<span class="in2">line-height:36px;</span>
</span> .out{display:inline-block;/*或float:left*/}
.in1{display:block;height:36px;}
.in2{display:block;line-height:36px;} /*结果:在IE6/IE7下,out容器的 inline-block,给变成了block*/

深入了解line-height的更多相关文章

  1. How to Take Control of Your Line Height in Outlook.com

    Reference to: http://www.emailonacid.com/blog/details/C13/line_height_and_outlook.com

  2. 深入了解css的行高Line Height属性

    什么是行间距? 古时候我们使用印刷机来出来文字.印刷出来的每个字,都位于独立的一个块中. 行间距,即传说中控制两行文字垂直距离的东东.在CSS中,line-height被用来控制行与行之间垂直距离. ...

  3. height与line-height

    1.网页的所有元素可以分为块元素和行元素.一行文字所在的一个逻辑区域是行元素,其他的元素就都是块元素line-height只针对行元素,height针对其他所有元素 2. width,height对于 ...

  4. 真正的能理解CSS中的line-height,height与line-height

    https://blog.csdn.net/a2013126370/article/details/82786681 在最近的项目中,常常用到line-height,只是简单的理解为行高但并没有深层次 ...

  5. CSS3与页面布局学习总结(二)——Box Model、边距折叠、内联与块标签、CSSReset

    一.盒子模型(Box Model) 盒子模型也有人称为框模型,HTML中的多数元素都会在浏览器中生成一个矩形的区域,每个区域包含四个组成部分,从外向内依次是:外边距(Margin).边框(Border ...

  6. CSS学习笔记——视觉格式化模型 visual formatting model

    CSS 视觉格式化模型(visual formatting model)是用来处理文档并将它显示在视觉媒体上的机制.他有一套既定的规则(也就是W3C规范),规定了浏览器该怎么处理每一个盒子.以下内容翻 ...

  7. 微信小程序demo2

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现   ...

  8. 模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着 ...

  9. 想着模仿京东微信首页呢,banner滚动搞定了,写到了一半了

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 想着模仿京东首页呢,结果也没赶得及写完,轮播图让我搞 ...

  10. 浅析CSS中的BFC和IFC

    1. 为什么会有BFC和IFC 首先要先了解两个概念:Box和formatting context: Box:CSS渲染的时候是以Box作为渲染的基本单位.Box的类型由元素的类型和display属性 ...

随机推荐

  1. Laravle Introduction

    Where To Start Learning a new framework can be daunting, but it's also exciting. To smooth your tran ...

  2. poj 2117 Electricity【点双连通求删除点后最多的bcc数】

    Electricity Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4727   Accepted: 1561 Descr ...

  3. Jquery zTree的使用

    <%@ page language="java" pageEncoding="utf-8"%><%@taglib prefix="s ...

  4. HTML 的 iframe 元素

    在 HTML 中, iframe 元素用于在网页中嵌入其它网页的内容,例如: <iframe src="http://example.com/abc.html">ifr ...

  5. struts2设置<s:select>默认选中项的方法

    struts2的select标签中,常用的有以下几个属性:(1)struts2中的select 标签中,必须设置的属性只有一个,即是list.(2)select标签的list中必须有值,不然会报错.如 ...

  6. MySQL 复制+快照恢复误删除操作实验测试

    下面假定2个场景: 场景1:主从架构,没有延迟,某DBA误操作:drop database [复制+快照:在线备份]场景2:存在不确定性或者风险性较大的操作,如升级测试,大表变更[啥事都在快照上折腾, ...

  7. 分享功能使用的UIPopoverController在iOS9 过期,替换为popoverPresentationController

    记录一下 以备以后用到的时候拿出来看看.以前使用的: 1 if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom ...

  8. c++基础语法 构造函数 析构函数 类的组合

    1 构造函数 1.不能指定任何返回值,甚至连void都不能有. 2.与Java不同,c++不同new对象,对于无参的构造函数声明对象时括号应该省略. 2 析构函数 1. 前加~,不能有参数,不能有返回 ...

  9. KALI 2.0优化

    1.首选项没有主菜单,系统管理 apt-get install alacarte 2.APT源 #官方源deb http://http.kali.org/kali kali main non-free ...

  10. 组合模式(Composite Pattern)

    组合模式定义:组合模式允许你将对象组合成树形结构来表现"整体/局部"层次结构,组合能让客户以一致的方式处理个别对象以及对象组合. 当涉及到如:菜单,子菜单之类的问题时,会自然而然的 ...