标签使段落高度变大

2024-01-06

我有以下小提琴:

http://jsfiddle.net/tompazourek/sn5jp/ http://jsfiddle.net/tompazourek/sn5jp/

<p>some normal-sized text</p>

<p>some <small>small</small>-sized text</p>

p { line-height: 20px }

当我在 Chrome 中检查页面时,我发现第一段的计算高度是 20px,但第二段的计算高度是 21px。

为什么是<small>标签导致这些问题?我怎样才能解决这个问题?

每次出现<small>在段落中的文字弄乱了我的基线网格 http://alistapart.com/article/settingtypeontheweb.


EDIT:后来我还发现了一篇与这个主题相关的有趣文章:深入研究 CSS:字体规格、行高和垂直对齐 http://iamvdo.me/en/blog/css-font-metrics-line-height-and-vertical-align.


解释:

这里发生了一些事情。

在你的例子中,small元素是一个行内元素 https://www.w3.org/TR/CSS2/visuren.html#inline-level,这意味着它的垂直对齐方式由vertical-align财产 https://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align.

默认vertical-align值为baseline,这意味着基线small元素将与父框的基线对齐:

将框的基线与父框的基线对齐。如果该框没有基线,请将下边距边缘与父级的基线对齐。

接下来,您需要考虑line-height财产 https://www.w3.org/TR/CSS2/visudet.html#propdef-line-height以及它是怎样的计算出的 https://www.w3.org/TR/CSS2/visudet.html#line-height。您还需要采取领先和半领先 https://www.w3.org/TR/CSS2/visudet.html#leading考虑到。在 CSS 中,半前导是通过查找元素之间的差异来确定的line-height and font-size,将其分成两半,然后将计算出的空间量放置在文本上方和下方。

为了便于说明,这里有一个示例图像演示了这一点(取自 W3.org https://www.w3.org/Talks/2008/0911-CSS-Amsterdam/line-height.png):

自从line-height is 20px,以及small元素有一个font-size of 13px,那么我们可以确定3.5px的上方和下方添加了空间small元素的文本:

(20px - 13px) / 2 =  3.5px

同样,如果我们计算周围文本节点的半前导,其具有font-size of 16px,那么我们可以确定2px在周围文本的上方和下方添加了一定的空间。

(20px - 16px) / 2 =  2px

现在,如果我们将这些半领先空间计算与vertical-align属性,您会注意到实际上在基线下方添加了更多空间small元素。这解释了为什么计算出的高度p元素包含small元素大于另一个元素的计算高度p元素。

话虽这么说,您会期望计算出的高度p元素继续增加font-size of the small元素减少。为了进一步说明这一点,您会注意到计算出的高度p元素是23px当。。。的时候font-size of the small元素设置为6px.

p { line-height: 20px; }
small { font-size: 6px; }
<p>some normal-sized text</p>
<p>some <small>small</small>-sized text</p>

潜在的解决方法:

因为我们知道高度差是由于添加到baseline,我们可以改变vertical-align的值small元素到top:

p { line-height: 20px; }
small { vertical-align: top; }
<p>some normal-sized text</p>
<p>some <small>small</small>-sized text</p>

或者,您可以给出small元素aline-height of 17px,这会导致2px在元素上方和下方添加的空间量(与我们上面计算的周围文本添加的空间量相同)。

// Surrounding text that is 16px:
(20px - 16px) / 2 =  2px

// Small element text that is 13px:
(17px - 13px) / 2 =  2px
p { line-height: 20px; }
small { line-height: 17px; }
<p>some normal-sized text</p>
<p>some <small>small</small>-sized text</p>

但是,您确实不想计算其中的任何内容并对它进行硬编码,这意味着您应该只使用相对的line-height并省略px units.

自从font-size is 16px和想要的line-height值为20px,你会划分line-height by the font-size并得到1.25:

p { line-height: 1.25; }
<p>some normal-sized text</p>
<p>some <small>small</small>-sized text</p>

如果您不想使用亲​​戚line-height: 1.25,并且您想继续使用line-height: 20px,那么你当然可以重置small元素的line-height值回到初始值,即normal.

p { line-height: 20px; }
small { line-height: normal; }
<p>some normal-sized text</p>
<p>some <small>small</small>-sized text</p>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标签使段落高度变大 的相关文章

  • 固定宽度可变高度网格CSS

    我们如何在网格布局中实现固定宽度和可变高度 就像www pinterest com http www pinterest com主页布局 我认为他们正在使用 Javascript 只是想知道是否还有其他方法 只需使用float left不管
  • 输入类型=图像 - onclick(),将触发其事件,但在 jquery 中的函数上表现不佳

    我认为这可能是两篇文章 2个问题 所以如果你对此发表评论 我会将它们分开 主要问题实际上是 我怎样才能为按钮设置图像背景 简单且正确 我想现在我可以确定这些事实了 因为我在将图像设置为按钮背景时遇到了 小 问题 我想 好吧 如果很难设置的话
  • 将父容器扩展至 100% 高度以容纳浮动内容

    我正在为一个客户项目而苦苦挣扎 我的全部divs 没有绝对定位 height 100 for html body 和容器divs 但静态内容未达到其内容 在 910 像素处 我可以将溢出属性更改为auto 并且背景会继续向下到内容的末尾 但
  • JSF 2.1 中的 HTML 4 <按钮>

    我想使用以下命令 The JSF
  • 增加数字输入、CSS、HTML 上的向下和向上箭头的大小

    有没有办法利用CSS来增大数字输入框右侧的上下箭头的大小 只是向上和向下箭头 而不是整个输入框 或者至少是按比例的 看这个例子 size 36 font size 36px size 12 font size 12px
  • 根据变量值将 LESS 编译为多个 CSS 文件

    有一个指定颜色的变量variables less文件 例如 themeColor B30F55 和一个 json构成实体列表的文件 其中每个键是一个实体 ID 键的值是该实体的颜色 例如 8ab834f32 B30F55 3cc734f31
  • 对一组复选框使用 HTML5“必需”属性?

    使用支持 HTML5 的较新浏览器 例如 FireFox 4 时 并且表单字段具有属性required required 并且表单字段为空 空白 然后点击提交按钮 浏览器检测到 必填 字段为空 并且不提交表单 相反 浏览器会显示一条提示 要
  • 使用deployJava.runApplet来定位特定元素

    经过多年成功维护一个使用旧有的小程序 嵌入Java小程序的方法 我们无法捂住耳朵唱 啦啦啦 不再了 是时候使用 deployJava runApplet 当我使用点击处理程序触发此方法时 此处通过 jQuery 在按钮上使用事件侦听器 但这
  • 使用 CSS 自定义字体?

    我见过一些在其网站上使用自定义字体的新网站 除了常规的 Arial Tahoma 等 他们支持大量的浏览器 如何做到这一点 同时 如果可能的话 还会阻止人们免费下载该字体 一般来说 您可以使用自定义字体 font face在你的 CSS 中
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 在 HTML5 中创建可拖动和可缩放的网格

    与其他 HTML5 不同如何创建网格问题 我想知道如何制作一个可拖动且可扩展的 绘制网格非常简单 var c document getElementById canvas var ctx c getContext 2d var width
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • W3C 验证器:“握手警报:unrecognized_name”

    我正在尝试验证我的网站W3C Nu Html 检查器 https validator w3 org nu doc https 3A 2F 2Fwww healthdrop in 2F但我遇到了以下错误 不知道为什么 IO 错误 握手警报 u
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 为范围旋钮 ionic-range 添加边框颜色

    我正在使用离子范围添加范围滑块 并想向范围旋钮添加边框 由于它的 ionic4 和范围旋钮是 Shadow dom 的一部分 我无法使用范围旋钮的 border 属性直接更改边框 我已附上我想要实现的图像 范围旋钮周围有白色边框 现有属性只

随机推荐

  • android 中具有相应标签的单选组的 TableLayout

    我正在创建一个反馈输入表单 它可以让用户从单选按钮中进行选择 如下图所示 因此 我采用了表格布局 并在第一行中添加了带有固定宽度的文本视图的表格行 并在其余行中添加了带有固定宽度的单选按钮的文本视图 这是布局代码
  • 从超类访问私有变量(JAVA)

    好吧 我整个学期都在学习java 并且认为我对继承和超 子类有了清晰的了解 今天我们的任务是创建一个名为敌人的超类 以及不同类型敌人的子类 我做的一切都很好 我的所有子类都在工作 但是当我回去阅读我们必须遵循的指南时 我发现了这句话 超类的
  • Java 8 javax.net.ssl.SSLPeerUnverifiedException:对等点未经过身份验证,但不是 Java 7

    我在将应用程序从 Java 7 切换到 Java 8 时遇到问题 更改 JDK 后 我开始收到此 SSLPeerUnverifiedException 改回Java 7 也不例外 我发现这个问题 Java 7 的 SSL 连接失败 http
  • 从 SSL 证书中提取序列号

    客户端和服务器持有匹配的证书 当服务器发送通信时 它会解码证书中的序列号并将其传递给客户端 然后 客户端可以从其证书副本中获取序列号 并将其与服务器提供的序列号进行比较 这些应该匹配 证书中序列号的字符串表示形式显示如下 58 17 9B
  • 针对大量出站 HTTP 请求优化 Node.js?

    我的 Node js 服务器有时会变得缓慢或无响应 甚至在尝试连接到服务器时偶尔会导致 503 网关超时 我 99 确定 基于我运行的测试 这种延迟具体是由于我使用节点oauth模块 https github com ciaranj nod
  • 使用 jQuery 循环 XML

    我有一些基本代码 可以循环处理从 Adob e RoboHelp 用于我们的帮助文档 生成的一些 XML 这工作正常 但由于主题可以根据作者的需要嵌套多次 因此我需要一种更好的方法来循环此 XML 而不仅仅是嵌套 each loops XM
  • Python:为什么 print 语句和 subprocess.call() 输出不同步?

    我正在运行以下代码 将其称为batch py for config in keystoneConfig cmdlist generate cmd list config print join cmdlist subprocess call
  • 测试不通过 Maven 运行?

    当我在 Maven 中运行测试时 我得到以下信息 INFO INFO T E S T S INFO INFO INFO Results INFO INFO Tests run 0 Failures 0 Errors 0 Skipped 0
  • UITableView 方法“indexPathForRowAtPoint:”的奇怪行为

    如下面的代码所示 当tableview被拉伸 从不向上滚动 时 NSLog tap is not on the tableview cell 总是会被称为 因为我认为indexPath将永远为零 但是当我点击节号大于 2 的节标题中的头像时
  • Objective-C 在另一个类上调用函数?

    这是我的 Objective C 课程 AppDelegate SomeScript 我如何从应用程序委托或任何其他类调用 SomeScript 类上的登录函数 我假设loggedIn是一个不带参数的实例方法 首先 几个术语问题 它们不是函
  • QLabel 中的文本滚动(字幕)

    我正在学习小部件选框标签 https www linux apps com p 1132075 class include WidgetMarqueeLabel h include
  • Backbone.js 将视图附加到多个元素

    我对骨干很陌生 所以我这样做可能违反了骨干的本质 感谢建议 我做了一个墙式系统 所以有一个表格可以用来在墙上发布更新 每次更新都可以有评论 我一次显示 10 个更新 所以有10个评论表 所以我有一个看法 CommentForm Backbo
  • vscode API:获取行最后一个字符的位置

    跟进这个仍然悬而未决的问题 https stackoverflow com questions 57099341 vscode extenstion how to get position of last character of line
  • 使用Picasso设置背景资源

    我知道 Picasso 是一个很棒的图像库 Picasso with context load http i imgur com DvpvklR png into imageView 使用此代码我可以将图像加载到图像视图 但是是否可以使用
  • 如何通过 Typescript (Angular2) 检测页面上任意位置的点击[重复]

    这个问题在这里已经有答案了 如何通过 Typescript 检测页面任意位置的点击 在 AngularJS 2 中 您可以范围HostListener到文档 import Component HostListener from angula
  • 从另一个线程访问单例对象

    我使用调用服务方法 ThreadPool QueueUserWorkItem o gt service Method arg1 arg2 服务有对象 loggingService 我正在使用 Spring Net private reado
  • Python 检查损坏的视频文件(捕获 OpenCV 错误)

    我正在寻找一种方法来检查视频文件是否已损坏 我正在使用 cv2 Python 的 OpenCV 来加载视频 如果视频文件已损坏 我想跳过该文件并继续处理下一个文件 我找到了这个堆栈溢出问题 https stackoverflow com q
  • 运行“ng test”时,Jasmine 测试列表未显示在浏览器输出中

    我继承了几年前首次开发的 Angular 应用程序 我被赋予的任务之一是让我们的测试继续进行 因为在过去的一年或更长时间里没有进行过测试 这最初是 Angular 2 应用程序 已更新至 2 3 1 左右 目前我们无法进行进一步的更新 因为
  • android 数字格式异常

    我得到以下异常 java lang NumberFormatException 无效的整数 当您尝试将值存储到共享首选项中而输入字段中尚未插入任何内容时 就会发生这种情况 这是因为我将输入解析为 int 因为我需要对数字进行减法 这不是什么
  • 标签使段落高度变大

    我有以下小提琴 http jsfiddle net tompazourek sn5jp http jsfiddle net tompazourek sn5jp p some normal sized text p p some p
Powered by Hwhale