CSS进阶之基线(参考线)

一、引入

1.CSS属性

font-size、line-height、vertical-align、font-family
这些属性的它们在页面里是参考的什么线,我们从文字的设计开始。

2.文字

文字是通过一些文字制作软件制作的,比如fontforge
制作文字时,会有几根参考线,不同的文字类型,参考线不一样。同一种文字类型,参考线一致。
以Consolas字体为例:
在这里插入图片描述
文字的相对大小:1000、2048、1024
文字的实际大小(content-area,内容区):文字顶线到底线的距离
所以行盒的背景大小,就是覆盖content-area。

二.行高

  1. 行距= 行间距 + 字体大小
  2. 行距:相邻文本行间上一个文本行基线和下一文本行基线间的距离。
  3. 行间距: 指相邻文本行间上一个文本行下行线(ascent)和下一文本行上行线(descent)间的距离。
  4. 在 CSS 中,CSS 属性 line-height 则是用于设置真实的行距。从 W3C Rec 中看出, CSS 中行高即是行距。
    行间距所占的空间是怎样分配:
    将行间距对半开,然后分别分配到上下两端这是引用了 Half-leading 的概念,Half-leading =行距/2。
    在这里插入图片描述
    顶线向上延申的空间,和底线向下延申的空间,两个空间相等,该空间叫做gap(空隙),gap默认情况下,是字体设计者决定。
    top到botoom(看ppt图),叫做virtual-area(虚拟区),行高,就是virtual-area。line-height:normal,默认值,使用文字默认的gap。
    在这里插入图片描述

文字一定出现一行的最中间——错误
content-area一定出现在virtual-area的中间

<style>
    p{
        background: red;
        font-size: 32px;
        font-family: Arial;
        line-height: normal;
    }
    span{
        font-size: 200px;
        background: lightblue;
        line-height: normal;
    }
</style>
<p>
    M
    <span>
        M
    </span>
    <span style="font-size: 5em;">
        M
    </span>
</p>//这里通过改变line-height可以观察到文字的对齐方式

三、vertical-align

默认对齐方式为 baseline,数量值均是相对于 baseline 而言。

1.一个元素如果子元素出现行盒,该元素内部也会产生参考线

  1. baseline:该元素的基线与父元素的基线对齐
  2. super: 该元素的基线与父元素的上基线对齐
  3. sub:该元素的基线与父元素的下基线对齐
  4. text-top: 该元素的virtual-area的顶边,对齐父元素的text-top
  5. text-bottom: 该元素的virtual-area的底边,对齐父元素的text-bottom
  6. top:该元素的virtual-area的定边,对齐line-box的顶边
  7. bottom:该元素的virtual-area的底边,对齐line-box的底边
  8. middle: 该元素的中线(content-area的一半),与父元素的X字母高度一半的位置对齐

2.行盒组合起来,可以形成多行,每一行的区域叫做line-box,line-box的顶边是该行内所有行盒最高顶边,底边是该行行盒的最低底边。

实际,一个元素的实际占用高度(高度自动),高度的计算通过line-box计算。
行盒:inline-box
行框:line-box
数值:相对于基线的偏移量,向上为正数,向下为负数。
百分比:相对于基线的偏移量,百分比是相对于自身virtual-area的高度
line-box是承载文字内容的必要条件,以下情况不生成行框:

  1. 某元素内部没有任何行盒
  2. 某元素字体大小为0

四、可替换元素和行块盒的基线

图片:基线位置位于图片的下外边距。
表单元素:基线位置在内容底边
行块盒:

  1. 行块盒最后一行有line-box,用最后一行的基线作为整个行块盒的基线。
  2. 如果行块盒内部没有行盒,则使用下外边距作为基线
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 在CSS中,要设置垂直方向上的文本对齐方式,可以使用vertical-align属性。这个属性可以应用于同一行的任意一个选择器,或者父元素的样式上。常用的属性值包括: baseline(使元素的基线与父元素的基线对齐)、sub(使元素的基线与父元素的下标基线对齐)、super(使元素的基线与父元素的上标基线对齐)、text-top(使元素的顶部与父元素的字体顶部对齐)、text-bottom(使元素的底部与父元素的字体底部对齐)、middle(使元素的中部与父元素的基线加上父元素高的一半对齐)、top(使元素的基线对齐到父元素的基线之上的给定长度,可以是负数)、bottom(使元素的基线对齐到父元素的基线之上的给定百分比)等。例如,如果要将一个元素的基线与父元素的顶部对齐,可以设置vertical-align: top;。实际测试结果如下所示: <div class="box1"> 哈哈 </div> <div class="box2"> 呵呵 </div> <style> .box1 { display: inline-block; width: 100px; height: 100px; background-color: red; color: white; font-size: 48px; } .box2 { display: inline-block; width: 50px; height: 50px; background-color: blue; color: white; font-size: 16px; } </style> 在上述示例中,.box1元素的基线与父元素的顶部对齐,而.box2元素的基线则与父元素的基线对齐。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CSS基线对齐的理解以及处理](https://blog.csdn.net/weixin_43324314/article/details/106894148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [【CSS】vertical-align属性](https://blog.csdn.net/dyk11111/article/details/128114234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞羽逐星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值