HTML5 与 HTML4 - h1 标签呈现有额外的空间 - 如何删除?

2023-11-24

我选取了一个 DTD 为 HTML4 Transitional 的页面,并将文档类型更改为<!DOCTYPE html>h1 和其下方的 div 之间会出现额外的空间。我没有对标记或 CSS 进行任何其他更改。

JSFiddle 示例:http://jsfiddle.net/ngordon/vSqkg/3/.

如果将文档类型从 HTML5 更改为 HTML4 Transitional,即使标记和 CSS 完全相同,您也可以看到额外的空格出现和消失。

知道如何摆脱那个空间吗?


HTML 4.01 Transitional 文档类型导致浏览器中几乎标准模式。 HTML5 文档类型导致标准模式。

这篇 Microsoft 文章解释了其中的差异:http://msdn.microsoft.com/en-us/library/ff405794%28v=vs.85%29 .

它说对于几乎标准模式:

内联元素对行高有贡献当且仅当以下之一 以下是正确的。

如果元素:

  • 包含文本字符

  • 具有非零边框宽度

  • 具有非零边距

  • 有非零填充

  • 有背景图片

  • 垂直对齐设置为基线以外的值

请注意,换行符不被视为文本字符 定义,除非它是行框的唯一内容。在这种情况下, 行框高度仍然是最上面的行内框顶部,并且 行中最下面的行内框底部,无论指定如何 行高。

如果 img 元素是表格单元格的唯一内容,则行框 细胞系框高度的高度调整为零。

最重要的是,在您的情况下,这意味着包含图像的行的高度的计算不包括strut,一个虚构的内联元素,应将行高增加到h1元素。

This jsfiddle显示出真实的span元素与&nbsp;作为替代支柱的真实文本内容,您可以看到 HTML 4.01 Transitional 文档类型和 HTML5 文档类型的布局相同。

This jsfiddle显示了相同的想法,只是这次支柱是使用 CSS 构建的,如下所示:

h1:before {
   content: '\A0';
}

就 khurram 的回答而言,他正在做的是降低行高h1因此,在标准模式下,支柱的高度小于图像的高度。这意味着整个线条的高度由图像的高度决定,而不是支柱的高度。标准和几乎标准模式下的图像高度相同,因此您不会看到两种模式之间的渲染存在差异。

至于为什么要设置line-heighth1匹配图像的高度 (25px) 不起作用,但将其设置为 12px 可以,这是因为支柱不仅建立了顶部和底部,还建立了线条的基线。基线略高于底部,以允许文本下降,对于正常大小的文本,通常约为 3 像素。默认情况下,图像位于基线上,因此基线和底部之间的间隙会添加到图像的高度中,以确定线条的高度。

这可以通过将图像移离基线来解决,方法是使用img { vertical-align: top },如图所示jsfiddle。如果您在此处修改 h1 行高,您会发现大于 25 像素的值会增加行之间的间距,但 25 像素或更小的值不会改变该间距。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML5 与 HTML4 - h1 标签呈现有额外的空间 - 如何删除? 的相关文章

  • 将 2 个 Div 垂直居中另一个 Div

    我有 2 个 div 我想将它们垂直居中在另一个 div 内 目前我有 http jsfiddle net 5vpA3 1 http jsfiddle net 5vpA3 1 现在我明白这里发生了什么 但我希望左侧 div 在该容器内垂直对
  • 使用 JavaScript 将数据插入数据库时​​,在控制台中创建错误“超出最大调用堆栈大小”

    我进行了大量搜索来修复过去几天遇到的 JavaScript 错误 我看到很多问题都得到了解答堆栈溢出 但不幸的是 没有人符合我的错误 我想要的是发送一个简单的记录到database using JavaScript and PHP 但我得到
  • 输入文本中固定下划线

    我试图修复所有输入文本类型中的下划线 但没有成功 Example My code input width 100 background color fcfcfc border 0 padding 10px div class col lg
  • 背景突出显示代码块中的文本?

    我的目标是能够显示如下内容 我想要背景突出显示已经有的代码块内的一段代码语法高亮 我想在 Github 上托管于 Github Pages 上的 Markdown 文件上执行此操作 可以使用 kramdown markdown html c
  • 如何将div对齐到页面底部,而不是屏幕底部

    我想将 div 与页面底部对齐 而不是与屏幕底部对齐 当我这样做时 contact block position absolute bottom 0 left 0 div 被放置在屏幕的底部区域 当我的页面很长时 我必须向下滚动 并且本应位
  • 如何在 leaflet.js 中设置 layer.control 的样式?

    我正在尝试更改图层控件中的默认下拉菜单图标 我希望图标旁边有文字 有什么办法可以做到这一点吗 也许使用 JQuery 和 CSS 我正在开发一个基于此示例的传单项目 http leafletjs com examples layers co
  • 当悬停时不透明度发生变化时,Google Chrome 中的背景会发生变化

    我使用 Jquery 设置了悬停效果 可以更改悬停元素的不透明度 它在所有最新的浏览器中都能正常工作 除了 Chrome 它会改变 body 元素的背景 这是链接 http wrong ro tataia http wrong ro tat
  • 单值或常量值时在 x 轴上绘制的样条图 - highchart

    while using the older version of highchart 2 1 6 if a plot had only one value or a series of same values it would plot a
  • Firefox 插件查找未使用的 CSS 样式[重复]

    这个问题在这里已经有答案了 可能的重复 识别未使用的 CSS 定义的工具 https stackoverflow com questions 135657 tool to identify unused css definitions 假设
  • 在 TCPDF 中设置背景颜色

    我已经手动设置了第一页的背景颜色 如下所示 pdf gt AddPage pdf gt SetFillColor 52 21 0 76 pdf gt Rect 0 0 pdf gt getPageWidth pdf gt getPageHe
  • HTML5 服务器端事件:EventSource 与包装的 WebSocket

    HTML5 服务器发送事件 SSE API 是否只是 HTML5 WebSocket 之上的受限制的 基于事件的 API 在我看来 一个EventSource只是一个WebSocket that Cannot send data 使用tex
  • Django css文件缓存

    我有一个 css 文件 我想修改它以满足我的需要 问题是它似乎被缓存在某个地方 因为无论我在 css 文件中做什么 我都看不到更改 我确信我指向了正确的文件 因为现在我已经对其进行了修改 并且它有效 有什么设置可以关闭缓存吗 谢谢 正如本文
  • 呈现为 Flexbox 的有序列表不显示项目符号/小数(项目也呈现为 Flexbox)

    我有一个有序列表 ol 有它的display属性设置为flex 列表项也呈现为弹性框 这样做会导致项目符号 数字 不再显示 有什么办法可以让项目符号显示在ol有课 questions questions likert 在40px的区域pad
  • 在 HTML 中移动选取框/下移文本

    我正在尝试向下移动或移动 HTML 中的文本 但我似乎无法将其移动到任何地方 我添加了一个颜色命令来更改文本的颜色 但似乎只是移动了 它一直到顶部
  • 带 CSS 网格的等宽侧边栏列

    是否可以让左右列具有相同的宽度 而中间列占据剩余空间 我不想设置像这样的百分比grid template columns 20 60 20 因为并不总是确定这些列的内容是什么 Flexbox 和表格似乎没有解决这个问题的方法 所以我再次尝试
  • 点击问题:动态生成的链接不触发点击功能

    下面是两个代码片段 由于某种原因什么也没有发生 但来自同一个 JS 文件的其他 jQuery 函数在带有 UL 的页面上执行得很好 这是在盯着我看吗 ul class paganation li 1 li li a href 2 a li
  • 空 URL 哈希导致页面在 js 事件上跳转

    我有一个带有下一个和上一个按钮的照片库 如果我的某个 javascript 方法由于某种原因被破坏 那么当单击其中一个按钮时 它会向 url 添加一个哈希值 即 www google com 我知道可以给散列一个 div id 来跳转到页面
  • 使用 JavaScript 的计时器

    我想使用java脚本实现计时器 我想随着间隔的变化而减少计时器 Example假设我的计时器从 500 开始 我想要根据级别减少计时器 例如1 一级定时器应减1 且递减速度应较慢 2 2级定时器应递减2 递减速度应为中等3 3级定时器应减3
  • 如何根据所需表单输入的值更改 CSS 样式

    我想知道如何编写 javascript 来改变所需的表单元素的样式 如果它们有价值的话就改变它们 我想要做的是当所需的文本字段为空时 在它们周围有一个彩色边框 并在它们有值时删除边框样式 我想做的是编写一个 javascript 函数来检查
  • jQuery 覆盖默认验证错误消息显示(Css)弹出/工具提示等

    我试图用 div 而不是标签来覆盖默认的错误消息标签 我看过这个帖子 https stackoverflow com questions 309574 jquery validation how to not display errors

随机推荐

  • 如何使用 spring-kafka 暂停和恢复 @KafkaListener

    我已经实现了 Kafka 消费者 现在我有了一个场景 通过Spring Boot从Kafka流中读取数据2 2 5 Release 加载数据库表1 将表1的数据复制到表2 清空表格1 要执行上述操作 我需要使用使用quartz的调度作业 已
  • php 帖子的最大大小?

    难道POST请求有大小限制吗 我有一个大程序 我想缓存其输出 基本上 我想在缓存中存储一 个重要的 html 表 因为特定项目的增长 查询数量以及响应时间变得失控 现在我正在发送由 ajax 调用检索的大输出 在另一个 ajax 调用中 第
  • 如何在 REST 中实现粗粒度乐观锁?

    我已经为 REST 资源实现了乐观锁定 这些资源通过将 GET 中的版本号传回 PUT 调用 与数据库表进行一对一映射 如果在执行 GET 和 PUT 之间数据库中的版本号发生变化 则发生乐观锁异常 非常简单的设计 现在 如何对映射到多个数
  • C++11 可重入类锁定策略

    我有一个使用的界面pimpl习语 但是接口需要是可重入的 然而 调用线程不需要知道锁定 这是由四部分组成的问题和一部分无端设计的 C 11 示例 包含示例是为了解决我遇到过的几个类似常见问题解答的问题 locking pimpl rvalu
  • 曼哈顿距离 A*

    我正在使用 A 搜索算法并使用曼哈顿距离作为启发式来实现 NxN 谜题求解器 我遇到了一个好奇的问题bug 我无法理解 考虑这些谜题 0 元素是空白 最初的 1 0 2 7 5 4 8 6 3 goal 1 2 3 4 5 6 7 8 0
  • 获取等于目标的数组项的总和(子集总和)

    我需要获得等于目标的数组项的总和 如果数组项的总和不等于目标 我想获得小于目标的最高总和 这是一个例子 Input 4 6 8 12 4 6 6 12 4 4 4 Results 12 12 8 4 6 6 4 4 4 6 4 Note 数
  • 如何根据字段的子字符串值连接两个表?

    我遇到了 sql 问题 我想加入两个表 员工和班级讲师 条件是员工的 unid 列如 u0871457 而班级讲师的 EmplId 为 00871457 我只想将 EmplId 的第一个字符替换为 u 来连接以匹配来自 unid 的字符串
  • LSF - 获取已提交作业的 ID

    假设我使用类似的东西提交了一份工作bsub pwd 现在我想获取该作业的作业 ID 以便为下一个作业建立依赖关系 有什么方法可以让 bsub 返回作业 ID 吗 Nils 和 Andrey 分别在 shell 和 C C 环境中找到了这个具
  • 为 Fancybox 添加缩放功能

    我正在使用 Fancybox 作为我的缩略图库 我想使用 JQZoom http www mind projects it projects jqzoom 还有 fancybox 最终结果 1 用户点击缩略图 2 fancybox出现更大的
  • 使用 msbuild 指定解决方案的项目文件

    我想要使 用 msbuild 构建解决方案的特定项目的命令行 就像我们使用 devenv com 一样 在 devenv com 中 我们可以使用以下命令行指定解决方案的项目 devenv com Build Release x86 tes
  • 按字母顺序排列 CSS 属性是否有速度优势?

    我希望这个问题不要太奇怪和武断 当我使用 Firebug 查看一些 CSS 时 我注意到每个标签的 CSS 属性都是按字母顺序排列的 它是想告诉我们什么吗 除了能够更快地找到所需属性的明显好处之外 我想知道 如果属性在原始样式表中按字母顺序
  • 为什么在传递 std::ofstream 作为参数时要使用“使用已删除”函数? [复制]

    这个问题在这里已经有答案了 我有一个会员是std ofstream fBinaryFile and a void setFile std ofstream pBinaryFile fBinaryFile pBinaryFile output
  • 如何从 Pandas 的 OLS 摘要中提取特定值?

    是否有可能从 pandas 的线性回归摘要中获取其他值 目前我只知道一种获取 beta 和截距的方法 我需要得到 R 平方 这是手册的摘录 In 244 model ols y rets AAPL x rets ix GOOG In 245
  • Ruby,如何访问 do-end 循环之外的局部变量

    我有一个循环 在远程计算机上执行一系列命令 ssh exec cd vmfs volumes 4c6d95d2 b1923d5d 4dd7 f4ce46baaadc ghettoVCB ghettoVCB sh f vms to backu
  • 从表中删除重复行

    我的数据库中有一个表 其中包含我想要删除的重复记录 我不想为此创建一个包含不同条目的新表 我想要的是从现有表中删除重复的条目而不创建任何新表 有什么办法可以做到这一点吗 id action L1 name L1 data L2 name L
  • 如何在 PHP 中重复数组?

    arr array 1st 1st 以上 arr has 2项目 我想重复 arr这样它就充满了4 items PHP 中有单次调用吗 数组填充函数应该有帮助 array array fill int start index int num
  • IEquatable 和仅仅重写 Object.Equals() 有什么区别?

    我想要我的Food类能够在它等于另一个实例时进行测试Food 稍后我将针对列表使用它 并且我想使用它List Contains 方法 我应该实施IEquatable
  • 使用 Javascript 语法高亮代码 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 您可以推荐哪些 Javas
  • 如何在前台运行 GcmListenerService

    我的 GCM 服务有时会出现问题 当我的智能手机的 RAM 自动清除时 该服务会关闭 请阅读this如果您需要更多详细信息 据我了解 如果我将服务设置为在前台运行 它应该有助于系统用 RAM 删除它 方法为Service class onS
  • HTML5 与 HTML4 - h1 标签呈现有额外的空间 - 如何删除?

    我选取了一个 DTD 为 HTML4 Transitional 的页面 并将文档类型更改为h1 和其下方的 div 之间会出现额外的空间 我没有对标记或 CSS 进行任何其他更改 JSFiddle 示例 http jsfiddle net