• css深入理解之行高line-height


    line-height的定义#

    基线之间的距离

    不同字体,基线位置不同

    所有内联元素的样式表现都与行内框盒子模型有关,例如浮动的图文环绕效果

    4种行内框盒子模型#

    <p>hello world<em>this is em</em></p>
    

    上面一行普通的文字,包含了4种盒子。

    四种盒子模型:
    1.“内容区域”(content area)
    围绕文字看不见的盒子,内容区域的高度大小只与font-size的大小和font-family有关,在simsun宋体字体下,内容区域高度等于文字大小。

    2.“内联盒子”(inline boxes)


    3.“行框盒子”(line boxes)

    每一行就是一个“行框盒子”,由一个个内联盒子组成
    4.“包含盒子”(containing box)


    由一行一行的“行框盒子”组成

    line-height的高度机制与原理#

    内联元素的高度是由行高决定的即line-height
    单行文字也有行高
    问:line-height明明是两基线距离,单行文字哪来行高,还控制了高度?
    答:1.行高由于其继承性,影响无处不在,即使单行文本也不例外;
    2.行高只是幕后黑手,高度的表现不是行高,而是内容区域和行间距

    内容区域的高度+行间距=行距
    在simsun宋体下:
    font-size=240px=内容区域的高度
    字号font-size+行间距=line-height行高
    半行间距

    多个行框盒子的包含容器
    多行文本的高度就是单行文本高度累加

    line-height的不同属性值#

    line-height支持的属性值
    ① normal 默认值,与浏览器相关,
    在同一浏览器中也和元素字体相关(font-family),所以考虑到兼容性,实际开发时,会对行高reset,保证各浏览器兼容性一致
    根据当前的font-size计算

    line-height:1.5;
    

    实际行高=1.5*font-size(假设是200px)=30px
    em,px,rem,pt
    根据font-size计算
    ⑤ inherit--行高继承(input默认的行高是normal)

    1.5/1.5em(150%)的区别:
    --1.5是根据自己的font-size计算line-height
    --1.5em是根据父级元素font-size计算,相当于继承了父元素的line-height

    经验:
    --阅读 1.5
    --网页开发 匹配20像素(20/font-size)计算结果取大不取小

    line-height与图片的表现#

    inline水平元素vertical-align默认基线对齐(基线:即字母x的下边缘)

    如何消除图片底部间距?###

    1.图片块状化-无基线对齐
    vertical-align属性只对内联,内联块状元素有效
    2.图像底线对齐

    img{vertical-align:bottom;}
    
    1. 行高足够小-基线位置上移
    .box{line-height:0;}
    

    line-height的实际应用#

    • 图片水平垂直居中 (ie8+)
    .box{line-height:300px;text-align:center;}
    .box>img{vertical-align:middle}
    
    • 多行文本水平垂直居中(ie8+)
    .box{line-height:250px;text-align:center;}
    .box>.text{display:inline-block; line-height: nomal; text-align:left;vertical-align:middle;}
    
    • 用line-height代替height,避免ie6/ie7的haslayout
      标题样式:
    {height:36px;line-height:36px;}
    

    其实可以直接简写成:

    {line-height:36px;}
    

    还有很多没有理解的地方。。。不开心。。。

  • 相关阅读:
    Java 动态代理 两种实现方法
    aspectj ----- 简介
    url中传递中文参数时的转码与解码
    JDK各个版本比较 JDK5~JDK10
    单例开始究竟能问多深及终极解决方案
    Map、Set、List 集合 差别 联系
    HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList 底层实现
    springMVC :interceptors
    Shiro在Spring session管理
    SpringMVC Shiro与filterChainDefinitions
  • 原文地址:https://www.cnblogs.com/godot-blog/p/6550936.html
Copyright © 2020-2023  润新知