最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 几分钟让你弄清垂直居中原理!

    正文概述 掘金(阿李贝斯)   2021-07-24   700

    「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」

    很多人开始接触到文字垂直居中的时候一般都是靠以下两行代码

    line-height: 24px;
    height: 24px;
    

    其实这个概念是很容易误导初学者的,line-height只是使控制文字对齐的元素之一,下面介绍下相关的知识,并解释下为什么仅靠这两行代码并不能实现精确的垂直居中。

    内联元素默认基线对齐(vertical-align:baseline)

    哪些元素是内联元素?

    display为inline/inline-block/inline-table的都属于内联元素。

    几分钟让你弄清垂直居中原理!

    从表现行为上来看,“内联元素”典型的特征就是和文字在一行显示,因此文字/图片/按钮/输入框/下拉框等表单控件也是内联元素。---引自 张鑫旭 《css世界》

    重点:文字属于内联元素,沿基线对齐。 文章开头提出的问题有答案了,当你指定line-height之后,所有的内联元素还是沿着基线对齐,所以仅靠line-height是无法完成文字的垂直居中的。

    什么是基线(baseline)?

    小写字母x的下边缘就是我们的基线

    扩展概念:x-height

    定义:小写字母x的高度 扩展:尺寸单位ex是css中的一个相对单位,指的是小写字母x的高度(x-height)

    line-height(行高)

    定义的就是两行基线的间距

    可能出现的值:

    • 数值:所有的子元素继承的都是这个值
    • 百分比或者长度值:所有的子元素继承的是最终的计算值

    line-height的好基友vertical-align

    vertical-align的属性值

    • 线类:baseline(default)/top/middle/bottom
    • 文本类:text-top/text-bottom
    • 上标下标类:sub/super
    • 数值百分比类:20px/2em/20%(后面两个比较少用)

    line-height+vertical-align:middle也只是近似的垂直居中

    几分钟让你弄清垂直居中原理! middle是指沿着基线往上1/2 x-height高度对齐,可以近似理解为字母x交叉点的位置

    vertical-align为一个数值来解决精确垂直居中的问题

    vertical-align:baseline其实就是vertical-align:0 需要精确解决垂直居中的问题是需要在这个基础上进行调试的,比如设置vertical-align为-5px

    vertical-align:-5px;
    

    几分钟让你弄清垂直居中原理!

    注意点: vertical-align作用条件

    可能会有人觉得vertical-align看似好用,但是有时候不起作用,但其实你需要知道它的使用条件:只能应用于内联元素以及display值为table-cell的元素

    探索:display:flex+align-items:center能实现精确的文字垂直居中吗?

    我们不如先来尝试下

    几分钟让你弄清垂直居中原理! 可以见得,万能的flex布局实现了文字垂直居中,但文字受到多种因素的影响,精确的垂直居中其实是比较难实现的。

    补充知识:div的高度是由行高决定的

    对于块级元素,line-height对其本身是没有任何作用的,块级元素的高度跟着变化实际上是通过改变块级元素里面内联级别元素占据的高实现的

    • 对于非替换元素的纯内联元素,其可视高度完全由line-height决定
    • 纯文本:line-height决定最终高度
    • 子元素含有替换元素,line-height只能决定最小高度

    有意思的概念:幽灵空白节点

    内联元素的所有解析和渲染表现就如同每个行框盒子的前面有一个“空白节点”一样。 透明不占据任何宽度和高度,就好像幽灵一样,看不见,却又确实撑开了父元素。

    <style>
    span {
      display:inline-block
    }
    </style>
    
    <div>
      <span></span>
    </div>
    

    几分钟让你弄清垂直居中原理!

    总结

    其实对于前端来说,市面上常见的垂直居中方案是足以满足我们的需求的,有时候受到字体因素等的影响有略微差距其实也是可以接受的,只要你弄清楚它的原理或许你就不会这么困惑了。

    参考

    张鑫旭《css世界》


    起源地下载网 » 几分钟让你弄清垂直居中原理!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元