翻译练习

原博客地址:Removing White Space Below Image Elements, or Why Inline Elements Have Descenders

HTML中Image元素下面展示的空白行经常造成困惑,但是这里有一个合乎逻辑的解释:Image是行内元素,行内元素都有底线。

如果你曾经试着把一个<img>标签包裹在一个设置了边框或者背景色的容器里,你就会碰到臭名昭著的“什么鬼???!!!为什么我的图像下面有内边距?”的问题。如果你尽职尽责地去查找“删除图像下面的空白行”,你大概会找到解决方案(或者这篇文章,提供了解决方案):使用CSS把img设置为块级元素,然后图像下面这个烦人的空白行就神奇地消失了。可能看起来像这样:

img{
display: block;
}

底线的问题

现在你清楚了解决方案,让我解释一下为什么会这样。了解原因会帮助你记住解决方案,也会让你理解这不是一个bug,而是一个历史遗留的问题。

让我们绕道看看字体排版的世界:

当你看着我在这里写的文本时,你会注意到小写字母分成三组:a, c, e, m, n, o, r, s, u, v, w, x, z, æ, and ø,这些高度一致,都包含在基线和肩线之间(见上图)。其他的字母要么有顶线(b, d, f, h, k, l, t),要么有底线(g, j, p, q, y)。顶线是字母肩线突出向上的部分,底线是字母基线以下的部分。

这些跟图像有什么关系呢?简单:在HTML中<img>标签是一个行内元素。这意味着它被当成文本处理。当文本被放置在页面中时就为底线留出了空间。换句话说,你在看到的图像下面的空白行就是浏览器假设在文本中在图片之前或之后应给有一个底线,从而给它留出空间。这个空白行问题出现的原因是因为图像最初被引入的时候是被认定为行内元素的,今天我们主要把它当成块级元素来使用。正如我早先所说,这都是由于历史遗留的问题。

所以,总结一下:图像是假定为有底线的行内元素。当你想让它表现的像块级元素,那就把它定义为块级元素,然后底线就神奇的消失了。

完结。

如何删除Image元素下面的空白行及为什么行内元素有底线的更多相关文章

  1. CSS里常见的块级元素和行内元素

    根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为“block”,成为“块级 ...

  2. CSS学习笔记——盒模型,块级元素和行内元素的区别和特性

    今天本来打算根据自己的计划进行前端自动化的学习的,无奈早上接到一个任务需求需要新增一个页面.自从因为工作需要转前端之后,自己的主要注意力几 乎都放在JavaScript上面了,对CSS和HTML这方面 ...

  3. 行内元素有哪些?块级元素有哪些?CSS的盒模型?转载

    块级元素:div p h1 h2 h3 h4 form ul行内元素: a b br i span input selectCss盒模型:内容,border ,margin,padding css中的 ...

  4. 【CSS3】块级元素与行内元素的区别

    一.行内元素与块级函数的三个区别 行内元素的特点: 和其他元素都在一行上: 高,行高及外边距和内边距部分可改变: 宽度只与内容有关: 行内元素只能容纳文本或者其他行内元素. 行内元素设置width无效 ...

  5. Html行内元素和块级元素

    1.关于行内元素和块状元素的说明 根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display ...

  6. html块级元素与行内元素

    1.关于行内元素和快元素的说明: 根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display ...

  7. [HTML/CSS]盒子模型,块级元素和行内元素

    目录 概述 盒子模型 块级元素 行内元素 可变元素 总结 概述 在div+css中,了解块级元素和行内元素还是非常有必要的,比如:对行内元素使用width属性就会失效.虽然自己不是做前端的,但是,在项 ...

  8. CSS行内元素

    一.典型代表 span a ,strong em del, ins 二.特点: 在一行上显示 不能直接设置宽高 元素的宽和高就是内容撑开的宽高. <style type="text/c ...

  9. 【HTML】行内元素与块级元素

    一.行内元素与块级元素的三个区别 1.行内元素与块级元素直观上的区别 行内元素会在一条直线上排列,都是同一行的,水平方向排列 块级元素各占据一行,垂直方向排列.块级元素从新行开始结束接着一个断行. 2 ...

随机推荐

  1. python爬虫selenium相关

    首先上很好用的selenium中文文档,基本上所有问题都能通过阅读此文档解决.可惜好像没找到翻译者名称. https://python-selenium-zh.readthedocs.io/zh_CN ...

  2. ElasticSearch 安装与运行

    公号:码农充电站pro 主页:https://codeshellme.github.io 本节来介绍 ES 的安装. 1,下载 ES ES 是基于 Java 语言开发的,因此,要安装 ES,首先需要有 ...

  3. k8s 调度 GPU

    最近公司有项目想在 k8s 集群中运行 GPU 任务,于是研究了一下.下面是部署的步骤. 1. 首先得有一个可以运行的 k8s 集群. 集群部署参考 kubeadm安装k8s 2. 准备 GPU 节点 ...

  4. HarmonyOS单模块编译与源码导读

    我这里以3518的开发板为例进行讲解,3516的也是通用的. 下面是之前全量编译的脚本 python build.py ipcamera_hi3518ev300 -b debug HarmonyOS最 ...

  5. java随机数的产生

    两种产生随机数的方法: 1.通过import java.util.Random来实现 2.Math.random() 一.第一种的话就是导入Random之后,先生成一个Random对象r,之后再利用r ...

  6. Windows Terminal 更换主题

    1. 打开设置,是个json文件 2. 在此处获取主题配置:https://atomcorp.github.io/themes/ 3.将主题配置粘贴到schemes节点(可以增加N个) 4.配置每个命 ...

  7. K8S(15)监控实战-ELK收集K8S内应用日志

    K8S监控实战-ELK收集K8S内应用日志 目录 K8S监控实战-ELK收集K8S内应用日志 1 收集K8S日志方案 1.1 传统ELk模型缺点: 1.2 K8s容器日志收集模型 2 制作tomcat ...

  8. leetcode31 下一个排列 字典序

    数字的字典序就是比大小 先想几个例子  123_>132  1243-> 1324 ,12453-> 12534 1.不可排的序列就是降序序列 2.两个相同长度的串比大小,前面相同, ...

  9. zhihu level

    zhihu level https://www.zhihu.com/creator/account/growth-level refs xgqfrms 2012-2020 www.cnblogs.co ...

  10. Promise console.log All In One

    Promise console.log All In One 同步事件/异步事件 微任务/宏任务 js 事件循环原理 先执行 同步事件 在执行,异步事件的所有微任务队列,按照时间顺序 最后执行,异步事 ...