前言

相信大多数掘友们应该都用过 vertical-align ,它可以用于行内元素和表格元素中实现垂直方向的居中。但在以往的使用中,我却发现了一些意外情况,让我们来看看吧!知道vertical-align 原理的小伙伴可以直接关掉文章了—.—

例子

例1. 父盒子没设置高度,为什么底部还挤出来一段距离?

css

.container {background-color: aquamarine;
}
img {width: 280px;
}

html

<div class="container">
<imgsrc="https://picsum.photos/280/280">
</div>

例2. 设置了 vertical-align: middle;,为什么图片还没有垂直居中与父盒子?且上边挤出的距离大于下边挤出的距离?

css

.container {width: 300px;background-color: aquamarine;line-height: 200px;height: 200px;
}
img {height: 190px;vertical-align: middle;
}

html

<div class="container">
<imgsrc="https://picsum.photos/280/280">
</div>

基本概念解释

先来看下底线、基线、中线的基本含义吧,下面的图片解释了行高和这三根线的位置。

<img src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cb84d6e551b84db1ab7217d8fc33db7d~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?) 图片来源:[blog.csdn.net/VickyTsai/a…](https://link.juejin.cn/?target=https%3A%2F%2Fblog.csdn.net%2FVickyTsai%2Farticle%2Fdetails%2F103000077 “https://blog.csdn.net/VickyTsai/article/details/103000077"” style=“margin: auto” />

  • 底线(bottom line):上下底线之间的距离就是行高。
  • 基线(base line):通俗的说就是与英文字母 x 最底边相切的那条线就是底线。
  • 中线(middle line):垂直与x中点的那条线

有没有感觉像小学读书时用的拼音格子本。记得那时候还说着一口方言呢,哈哈,有点扯远了。来看下面的解释吧!

解答例子中的问题

例1

vertical-align 默认是 基线对齐(baseline),也就是自己的基线和父盒子的基线对齐,而图片img莫得的基线为自己的底部,所以父盒子下方会有挤出来一段距离,

解决方案:

  • 设置父盒子的字体为0,让基线和底线重合,这些就不会被挤出来了
  • 想办法让img盒子的基线和父盒子的底线对齐,比如设置img盒子 vertical-align: middle;

例2

根据mdn的解释我们可以发现 vertical-align: middle; 的意思是:使元素的中部与父元素的基线加上父元素 x-height(译注:x 高度)的一半对齐。这里所说的 x-height 是指英文字母 x 的高度的意思。通常 x 的垂直中心点不是父元素的垂直中心点,且会随着父元素字体的大小变化而变化,所以才造成上下会齐出一段距离

解决方案:

  • 让父盒子的 字体设置为0就可以了;

彻底搞懂vertical-align 底线、基线、中线的含义相关推荐

  1. 2021-08-06随记(vertical-align, 顶线、底线、中线、基线,vue原理理解)

    vertical-align 父元素是inline或者是table-cel,如果是inline-block或者block则必须要设置line-height(和高度一样)子元素为inline或者inli ...

  2. 一文多图搞懂KITTI数据集下载及解析

    转载自一文多图搞懂KITTI数据集下载及解析-阿里云开发者社区 KITTI Dataset 1.图片下载:点击下载:https://s3.eu-central-1.amazonaws.com/avg- ...

  3. 【SVG】路径<Path>标签详解,一次搞懂所有命令参数

    在上一篇文章 什么是SVG?--SVG快速入门 中我对SVG做了基础的介绍,这篇文章将集中讲解<path>标签 本站链接:什么是SVG?--SVG快速入门_gxyzlxf的博客-CSDN博 ...

  4. zhs16gbk对应mysql_[Oracle] 彻底搞懂Oracle字符集

    基本概念字符集(Character set):是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.常见的字符集有ASCII,ZHS16GB231 ...

  5. 面试必备|带你彻底搞懂Python生成器

    2019年人工智能系统学: https://edu.csdn.net/topic/ai30?utm_source=ai100_bw 作者 | Rocky0429 转载自 Python空间(ID:Dev ...

  6. 20分钟教你搞懂Git!

    Git 是最流行的版本管理工具,也是程序员必备的技能之一.本文就来教你 20 分钟搞懂 Git! 以下为译文: 尽管每天你都会用到Git,但也有可能搞不懂它的工作原理.为什么Git可以管理版本?基本命 ...

  7. 搞懂机器学习的常用评价指标!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈安东,湖南大学,Datawhale成员 我与评价指标的首次交锋是 ...

  8. 一文搞懂结构体的定义及实际使用

    大家好,我是无际,无实战不理论. 今天给大家讲一下结构体. 大家可能很好奇,为什么这种文章教程泛滥了,我还要拿出来讲. 相信无际的铁粉都知道,我分享的干货和经验出发点是实际产品应用. 脱离产品你所学的 ...

  9. 想要彻底搞懂“异地多活”,看完这篇就够了

    在软件开发领域,「异地多活」是分布式系统架构设计的一座高峰,很多人经常听过它,但很少人理解其中的原理. 异地多活到底是什么?为什么需要异地多活?它到底解决了什么问题?究竟是怎么解决的? 这些疑问,想必 ...

  10. 这一次,你能彻底搞懂 Flink!

    近年来,AI 场景发展得如火如荼,同时其计算规模也越来越大.这也让专注于数据处理的 Flink 有了较大的发展空间.Flink作为在大数据生态里实时处理的一个新框架,在一定程度上也有一定的难度. Fl ...

最新文章

  1. 计算开机时间c语言编程,计算电脑开机时间的代码
  2. 如何构建一个成功的AI PoC(概念验证项目)
  3. 研究表明:无人驾驶技术减少拥堵加快进程
  4. 阿里内部不显示 P 序列职级,“高 P”光环成过去式?网友:这下可以装大佬了...
  5. 如何理解Return的返回值?
  6. iptables 定义规则
  7. 解决chrome浏览器us-yahoo.com搜索劫持
  8. ie9浏览器两个ajax请求同步不兼容_浏览器拦截问题
  9. ByteBuf的源码分析
  10. 即插即用,基于阿里云Ganos快速构建云上开源GIS方案
  11. 高质量C /C编程指南---第1章 文件机关
  12. python --爬虫 --下载小说
  13. 文明与征服北条时宗最强阵容搭配指南
  14. sql server 2000收缩数据库【极简操作】
  15. ⑭tiny4412 Linux驱动开发之cpufreq子系统驱动程序
  16. 计算机函数公式的英文表达式,Houdini Expression functions 函数表达式中英文对照(二)...
  17. MySQL数据清理有技巧,这么破
  18. Python3 批量提取视频中的音频
  19. FMRI及NMR简介
  20. 阿里面试官问我:如何设计秒杀系统?我给出接近满分的回答

热门文章

  1. 交换机与路由器技术:静态路由配置和路由器上配置DHCP、虚拟局域网VLAN
  2. 部署大宗商品撮合交易平台,实现高效交易与资源信息对接
  3. 中英文语音/录音转文字必备的6个软件
  4. Bugku WEB 安慰奖
  5. heka 0.11.0源码分析--主要启动流程分析
  6. OJ 2310 Problem D Mandarin
  7. 计算机技能鉴定高级,职业技能鉴定计算机(高级)试题.pdf
  8. marshmallow——简介
  9. HTML+CSS制作的纯静态网页
  10. 2022牛客寒假算法基础集训营1 H题 牛牛看云