深入理解 font-size

1、广义上的 font-size

用于设置 字体大小,辅以单位控制,实质上是控制 字符框 的高度。

2、狭义上的 font-size

2.1、字体的基线

在这里插入图片描述

line-height : 意为 行高content-area (内容区域),被 font-familyfont-size 共同影响(元素看到的高度与实际字体设置大小不一样的原因)

em box : 意为 字体框 ,仅被 font-size 影响,即 1 em = font-size: 1px ; ,等同于 font-size

x-height : 意为 x 的 字符高度** ,用于理解概念, x-height = 1 ex ; 在 CSS 中,vertical-align: middle ; 将该 元素的中心父元素基线 加上 x-height 高度的一半 对齐

baseline : 意为 基线 ,即 vertical-align 的 默认值

半行距:计算公式为 行距 = line-height - font-size

2.2、font-size 的基本单位类型

2.2.1、关键词类型
  • 绝对尺寸xx-smallx-smallsmallmediumlargex-largexx-large

  • 相对尺寸smallerlarger

2.2.2、数值类型
  • px : 像素
  • em : 相对于 父元素 的字体大小进行计算
  • rem : 相对于 根元素 的字体大小进行计算
2.2.3、百分比类型
  • % :其百分比取值是基于 父对象 中字体的尺寸

3、深入理解 line-height

3.1、含义

意为 行高 ,其 默认值 为 normal = content-area 的区域高度相同

3.2、影响

line-height 的大小受 font-family 、 浏览器的影响

3.3、单位

本质上是继承的类型不同

  • % :继承的是计算后的值

  • em:继承的是计算后的值

  • px: 继承的是计算规则,是 像素点,而不是 长 或者 高

3.4、内联盒模型的相关概念

在这里插入图片描述

匿名内联盒子:anonymous inline box ,没有标签包裹的文字默认自己形成一个盒子

内联盒子:inline box ,通常由一些标签包裹形成,例如最常见的标签包裹的文字会形成内联盒子

行框盒子:line box ( ) ,它是由单行内联元素形成的一个区域,注意是每一行都会形成,如果文字由五行,就会形成5个行框。行框的高度基本上是由行框内行高最大的内联盒子决定的。还会受 vertical-align 的影响

包含块:container-box ,在内联元素中,包含块是由行框组成的,也就是包裹在所有行框外面的那层盒子

3.5、常见问题

3.5.1、display :inline-block 元素间的空隙

通常使设置 font-size: 0 ; 或者使用 letter-spacing 属性达到去除边框的目的

可知 font 标签真正仅实现两个属性:colorface

以下列代码为例:

<div class="container">
  <h2>1. 元素间的间隙</h2>
  <div class="box">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
  <h2>2. 父元素底部的间隙</h2>
  <div class="box">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <span>x</span>
  </div>
  <h2>3. inline-block元素中有文字</h2>
  <div class="box">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item"></div>
    <span>x</span>
  </div>
</div>
.box {
  border: 1px solid;
}

.item {
  display: inline-block;
  background-color: red;
  width: 100px;
  height: 50px;
}

span {
  background-color: blue;
  color: white;
}
3.5.2、父容器最底端也有一个空隙

是由 stcuct 造成的,实际上是增加了一个 struct行高,所以会显得 略高

struct:幽灵空白节点,意为 支柱每一个行框开始的位置都有一个宽度为0,并且行高和字体大小都与该元素相同的内联盒子,这个盒子即为 “支柱”

4、深入理解 vertical-align

4.1、含义

设置元素的上下垂直对齐方式。

该属性定义 行内元素的基线 相对于 该元素所在行的基线 的垂直对齐。允许指定 负长度值百分比值 。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

影响 inline-level元素 和 table-cell元素 垂直方向上的布局.

4.2、vertical-align 的属性值

描述
baseline默认。元素放置在父元素的基线上。
sub垂直对齐文本的下标。
super垂直对齐文本的上标
top把元素的顶端与行中最高元素的顶端对齐
text-top把元素的顶端与父元素字体的顶端对齐
middle把此元素放置在父元素的中部。
bottom把元素的顶端与行中最低的元素的顶端对齐。
text-bottom把元素的底端与父元素字体的底端对齐。
length
%使用 “line-height” 属性的百分比值来排列此元素。允许使用负值。
inherit规定应该从父元素继承 vertical-align 属性的值。

4.3、常见问题

两个div 都设置 display:inline-block,正常显示;但是在第二个div中加一个块级元素或者内联元素,显示就变了个样,为什么?

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
        <style type="text/css">
            div{
                width: 100px;
                height: 100px;
                border:1px solid red;
                display: inline-block;
                vertical-align: top;
            }
        </style>

    </head>
    <body>
    <div></div>
    <div>第二个</div>
    </body>
</html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNJsjjgZ-1583574521136)(D:\DAYNOTE\vertical-align1.PNG)]

设置div元素的CSS样式时,加入 vertical-align: top; 就能达到我们想要的效果。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UfKXCcne-1583574521137)(D:\DAYNOTE\vertical-align2.PNG)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值