内联格式化模式(line-height原理)(2)
作者:dudo 来源:dudo博客 发布时间:2008-06-29 14:37:00
这就是说,一个足够大的元素,即使只有一个很小的line-height,也可以通过指定content-area的值来使得和后面内容保持较大行距。例如,考虑下面的例子:
<FONT face=Arial><P style="line-height: 12pt; font-size: 12pt;">
<A style="font-size: 128pt;">anchor</A>
angry text
<B style="vertical-align: top">bold</B>
</P></FONT>
超级链接的content-area高度为128pt,但是由于指定了line-height,它的inline box只有12pt高。这个inline box位于baseline之上;根据上面的参数,我们就可能判断超级链接底部(bottom)位于baseline之上30pt。这就使得inline box的顶部位于baseline之上42pt。而纯文本则正好偏于baseline之上,其content-area高度为12pt,底部位于baseline之下2pt。加粗文本的content-area也是12pt高,但它是靠line-box的顶部对齐的。
“根据上面的参数,我们就可能判……位于baseline之上30pt”的计算原理:
以Helvetica字体为例来说。在Helvetica字体中已经指定了baseline的位置,文本会从baseline下降-219/1000,上升781/1000。因此,对于font-size大小为128pt来说,它下降(位于baseline以下)部分为-28pt(128pt*219/1000),上升(位于baseline心目)部分为100pt。根据line-height的规则,本例中为12pt,实际起作用的halfheading就是12pt-128pt)/2 = -58pt。half leading是从128pt 字母高度(EM)的顶部和底部计算得出的。因此,字体大小为128pt的inline box的content area底部就是-28pt-(-58pt)=58pt-28pt=30pt。同样,inline box的content area的顶部位于(baseline的)100pt-58pt=42pt处。
(注意:Helvetica字体处于数字的时候有轻微的变动。它实际上升和下降数值接近于775/1000 EM和-225/1000 EM。)
对于content area的baseline可能看来有点“怪异”,因为baseline不是正好处在字符的中间,而是向字符的底部稍微有点偏移。需要注意的是,这个例子只是用以介绍CSS规则的一个方面,而不是说每个人都应该对字体使用较大的负leading。
--Steve Zilles
现在计算得到line-box高度为44pt:42pt位于baseline之上,2pt位于baseline之下。加粗字体的inline-box顶部(在本例中同content-area一致)和line-box字体的顶部重合。纯文本之上有30pt的空白,而链接文字上部会有baseline之上58pt、之下26pt“浸入”到相邻行中中(注意,这些数字都是假定链接文本的inline box底部位于baseline以上30pt,溢出扩展部分主要根据链接的“content-area”的中点与baseline之间的关系决定)。
测试:对照这个测试文件和相关显示效果。两个示例中,都是在上面的代码基础进行了扩展,此外,前者和代码设置相同,后者使用了的36pt的链接。
如果在行内出现了一个可置换文本,它的content-area就等于它的实际高度和宽度加上所有的padding、border和margin。line-height对于可置换元素的inline box没有效果(但是当解释vertical-align属性的百分比数值时可以使用)。例如,考虑下面的例子:
<FONT face=Arial><P style="line-height: 12pt; font-size: 12pt;">
<IMG SRC="filler.gif" style="height: 120pt; width: 16pt; margin: 8pt;">
angry text
<B style="vertical-align: top">bold</B>
</P></FONT>
图片的content-area总高度为136pt(120pt + 8pt + 8pt),12pt的line-height会被忽略。此外,图片底部的外边缘(content加上margin)将会同baseline对齐,这会使line-box的顶部升高,因为图片inline box的顶部会比前面例子中的链接顶部要高。使可置换元素的inline-box比元素大小还要小的唯一方法就是使用负的margin值。顶部对齐的粗体文本将会与line-box的顶部对齐,这也正好是图片的顶部外边缘(content加margin)。
测试:对照这个测试文件:line-height.htm (4.37 KB)和相关显示效果。
两个示例中,都是在上面的代码基础进行了扩展,此外,前者和代码设置相同,后者使用了的30pt的图片,其margin值为6pt。
如果父级内联元素设置了border,那么border将和元素的font-size一致;同时也会和元素的content-area相匹配,后代元素。例如,考虑下面的例子:
<FONT face=Arial><P style="line-height: 12pt; font-size: 12pt;">
<SPAN style="border: 1px solid gray;">
<A style="font-size: 72pt;">anchor</A>
<IMG SRC="filler.gif" style="height: 60pt; width: 16pt; margin: 4pt;">
angry text
<B style="vertical-align: top">bold</B>
</SPAN>
</P></FONT>
SPAN的边框将和假定的content-area一致,在本例中为12pt,因为从父元素中继承来的font-size是12pt。(此外,在本例中SPAN的content-area和其inline box正好一致,因为font-size和line-height数值相同。)这个边框将会穿过段落内外部元素,可能在任何顶部对齐(top-align)的元素下方显示。在内联元素与SPANinline box重叠的情况下,规范中并未指定谁应该在谁的上方。测试:对照这个测试文件和相关显示效果。两个示例中,都是在上面的代码基础进行了扩展,此外,前者和代码设置相同,后者使用了的30pt的图片,其margin值o为2pt,此外还有一个36pt的链接。
测试:对照这个测试文件:line-height-test.htm (4.66 KB)和相关显示效果。两个示例中,都是在上面的代码基础进行了扩展,此外,前者和代码设置相同,后者使用了的30pt的图片,其margin值o为2pt,此外还有一个36pt的链接。在一些常见情况下,可以查看这个测试文档和H?kon Lie's 提供的相关显示效果。
在一些常见情况下,可以查看这个测试文档:line-height2.htm (3.86 KB)和H?kon Lie's 提供的相关显示效果。


猜你喜欢
- 一、通知方式有哪些?常见的通知方式有:邮件,电话,短信,微信。短信和电话:通常是收费的,较少使用;邮件:适合带文件类型的通知,较正式,存档使
- 系统环境:VC6 + Python-2.5.41、下载Python-2.5.4源码。2、解压,打开D:\Python-2.5.4\PC\VC
- python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重,字典排序,字典、列表、字符串互转,时间对象操作
- python使用ctypes模块调用windows api GetVersionEx获取当前系统版本,没有使用python32#!c:/py
- 引言最近两年都是在使用 react 进行项目开发,看技术博客都是针对 react 和 javaScript 高级方面的,对 vue 的知识基
- python实现rsa加密实例详解一 代码import rsakey = rsa.newkeys(3000)#生成随机秘钥privateKe
- 1.安装pyenv https://github.com/pyenv/pyenv-instal
- coalesce 函数可以接受多个参数,将会返回这些参数中第一个非NULL的值,若提供的参数全部为NULL,则返回NULLifnull 函数
- Python错误SyntaxError: unexpected EOF while parsing含义是解释器到底了都没找到它要找到的东西出
- 点击率预估模型0.前言本篇是一个基础机器学习入门篇文章,帮助我们熟悉机器学习中的神经网络结构与使用。日常中习惯于使用Python各种成熟的机
- 上篇文章给大家介绍了MySQL 8.0.23 主要更新一览(新特征解读) ,感兴趣的朋友点击查看吧!最新版windows mysq
- 目录配置连接池SetMaxOpenConns方法SetMaxIdleConns方法SetConnMaxLifetime方法SetConnMa
- 在Linux或者Windows下想要查看目录树都可以通过tree命令来实现,两个操作系统中的操作也很相似。使用Linux时,最初以为这是sh
- 前言最近在数据库的一张表添加两个字段,后来提示什么磁盘空间不足什么什么的,后来数据库就断开连接了,之后就一直连接不上去后来,最后经过思考终于
- <script>function getJsFile(url, callBack){
- 一、form介绍我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同
- 概述我们可以将此归咎于许多原因,但这肯定不仅仅是因为 PHP 生态系统缺乏适当的测试工具。在本文中,我想向您展示一个简单的设置,用于项目的基
- union all在MySQL5.6下的表现Part1:MySQL5.6.25[root@HE1 ~]# MySQL -uroot -pEn
- 一. pprint美观打印数据结构pprint模块包含一个“美观打印机”,用于生成数据结构的一个美观的视图。格式化工具会生成数据结构的一些表
- 本文实例讲述了Python实现列表转换成字典数据结构的方法。分享给大家供大家参考,具体如下:'''[ {