CSS 行高和对齐

文本垂直对齐

行高

line-height属性是制定文本行基线之间的距离,而不是字体的大小,它确定了将各个元素框的高度增加或减少多少。line-height控制了行间距,这是文本行之间超出字体大小的额外空间。换句话说,line-height值和字体大小之差就是行间距。
在应用到块级元素时,line-height定义了元素中文本基线之间的最小距离。注意它定义的是最小距离,而不是一个绝对数值,文本基线拉开的距离可能比line-height值更大。line-height并不影响替换元素布局,不过确实可以应用到替换元素。

构造文本行

  • 行内框
    文本行中的每个元素都会生成一个内容区,这由字体的大小确定。这个内容则会生成一个行内框(inline box),如果不存在其他因素,这个行内框就完全等于该元素的内容区。由line-height产生的行间距就是增加或减少各行内框高度的因素之一。要确定一个给定元素的行间距,只需要将line-height的计算值减去font-size的计算值。这个值就是总的行间距。行间距可能为负。行间距再除以2,将间距的一半分别应用到内容区的顶部和底部。其结果就是该元素的行内框。
  • 行框
    一旦给定内容行已经生成了所有行内框,接下来在行框的构造中就会考虑这些行内框。行框的高度恰好足以包含最高行内框的顶端最低行内框的底端
  • 指定line-height值
    line-height如果取默认值normal,用户代理必须计算行间的垂直空间。不同的用户代理计算出的值可能不同,不过通常都是字体大小的1.2倍,这使得行框要高于给定元素的font-size值。

行高和继承

当一个块级元素从另一个元素继承line-height时,问题会变得更为复杂。line-height值从父元素继承时,要从父元素计算而不是在子元素计算 。

    body {font-size:10px;}
    div {line-height:1em;}
    p {font-size : 18px}

    <div>
        <p>
            这段文字从div继承了line-height,div的字体大小时10,所以计算出来的大小是10px。
        </p>
    </div>

解决这个问题的一种方式是设置缩放因子,缩放因子将是继承值而不是计算值。这个数会应用到该元素及其所有子元素,所以各元素都根据其自己的font-size计算line-height。

    body {font-size : 10px;}
    div {line-height : 1.5;}
    p {font-size:18px;}

尽管看上去,line-height在每个文本行的上面和下面平均分配了额外空间,实际上,它是在行内元素的内容区顶部和底部增加(或减少)一定量来创建一个行内框。

垂直对齐文本

在CSS中,vertical-align 属性只应用于行内元素和替换元素,如图像和表单输入元素。vertical-align属性不能继承。
vertical-align 只接受8个关键字,一个百分比数字或者一个长度值。

  • 基线对齐
    baseline要求一个元素的基线与其父元素的基线对齐。如果一个垂直对齐元素没有基线,比如图片输入框,那么该元素的低端与其父元素的基线对齐。
    这个对齐规则很重要,因为它使得一些web浏览器总把替换元素的底边放在基线上,即使该行中没有其他文本。例如,假设一个表单元格中只有一个图像。这个图像可能实际在基线上,不过在某些浏览器中,基线下面的空间会导致图像下出现一段空白。另外一些浏览器则会把图像“紧包”在表单元格中,所以不会出现空白。
  • 上标和下标
    vertical-align:sub 声明会使一个元素变成下标,这意味着其基线(或者如果这是一个替换元素,则是其低端)相对于其父元素的基线降低。规范并没有定义元素降低的距离,所以对于不同的用户代理,这个距离可能有所不同。super更sub相反,相对父基线升高。
    sub和super不会改变元素字体大小,下标或者上标元素中的所有文本默认地都应当与父元素中的文本大小相同。
  • 底端对齐
    bottom将元素行内框的低端与行框的低端对齐。
    text-bottom 是指行内文本的底端。替换元素或任何其他类型的非文本元素会忽略这个值。对于这些元素(替换元素或者非文本元素),将考虑一个“默认”的文本框。这个默认框由父元素的font-size得到。要对齐的元素的行内框底端再与这个默认文本框的底端对齐。
  • 顶端对齐
    top与bottom相反,text-top与text-bottom相反
  • 居中对齐
    middle 往往(不总是)应用于图像。middle会把行内元素框的中点与父元素基线上方0.5ex处的一个点对齐,这里的1ex相对于父元素的font-size定义。因为大多数用户代理都把1ex处理为0.5em,middle往往将元素的垂直中点与父元素基线上方0.25em处的一个点对齐。不过有些浏览器确实会计算准确的x-height。
  • 百分数
    使用百分数,会把元素的基线(或替换元素底边)相对于父元素的基线升高或降低制定的量(你制定的百分数要计算为该元素line-height的百分数,而不是相对于其父元素的line-height)。正则升高,负则降低。
  • 长度对齐
    它把一个元素升高或降低指定的距离,与对齐前相比。要认识到垂直对齐的文本并不会成为另一行的一部分,它也不会覆盖其他行中的文本。所有垂直对齐的元素都会影响行高。应该记得行框的描述,其高度要足以包含最高行内框的顶端和最低行内框的低端。这包括因垂直对齐上升或下降的行内框。
时间: 2024-08-07 09:42:13

CSS 行高和对齐的相关文章

【转】css行高line-height的一些深入理解及应用

一.前言 前两天在腾讯ISD团队博客上看到一篇翻译的文章“深入理解css 行高”,是个不错的文章,学到了不少东西,建议您看看. 这里,我也要讲讲我对line-height的一些理解,所讲解的东西绝大多数与上面提到的“深入理解css 行高”是不重复的,可以说是补充或是另外一个角度的思考.另外,将结合实际,展示line-height的一些特性和一些常见应用,帮助您对css行高line-height的理解.所讲述的并不一定都是正确的,欢迎指正欢迎交流. 二.一些字面意思“行高”顾名思意指一行文字的高度

css行高line-height的一些深入理解及应用

by zhangxinxu from http://www.zhangxinxu.com,原文地址:http://www.zhangxinxu.com/wordpress/?p=384 一.一些字面意思"行高"顾名思意指一行文字的高度.具体来说是指两行文字间基线之间的距离.基线实在英文字母中用到的一个概念,我们刚学英语的时使用的那个英语本子每行有四条线,其中底部第二条线就是基线,是a,c,z,x等字母的底边线.下图的红色线即为基线. vertical-align中有top,middle

CSS行高line-height解释

"行高"顾名思意指一行文字的高度.具体来说是指两行文字间基线之间的距离.基线实在英文字母中用到的一个概念,我们刚学英语的时使用的那个英语本子每行有四条线,其中底部第二条线就是基线,是a,c,z,x等字母的底边线.下图的红色线即为基线. vertical-align中有top,middle,baseline,bottom与之是由关联的 css中起高度作用的应该就是height以及line-height了吧! 如果一个标签没有定义height属性(包括百分比高度) 1.单行文字的垂直居中对

css行高line-height的用法(转)

本文导读: “行高“指一行文子的高度,具体来说是指两行文子间基线间的距离.在CSS,line-height被用来控制行与行之间的垂直距离.line- height 属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离.所有浏览器都支持 line-height 属性. 一.line-height语法 line-height属性的具体定义列表如下: 语法: line-height : normal | <实数> | <长度> | <百分比

CSS行高——line-height

初入前端的时候觉得CSS知道display.position.float就可以在布局上游刃有余了,随着以后工作问题层出不穷,才逐渐了解到CSS并不是几个style属性那么简单,最近看了一些关于行高的知识,就此总结一下. 所谓行高是指文本行基线间的垂直距离.要想理解这句话首先得了解几个基本知识: 顶线.中线.基线.底线 <!DOCTYPE html> <html> <head> <title>Test</title> <style type=

css行高line-height的用法

一.line-height语法 line-height属性的具体定义列表如下: 语法: line-height : normal | <实数> | <长度> | <百分比> | inherit 说明: line-height 属性设置行间的距离(行高),不能使用负值.该属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离.line-height 与 font-size 的计算值之差(行距)分为两半,分别加到一个文本行内容的顶部和

理解css行高(line-height)

首先我们要明确 line-height 的定义,line-height指的是两条文字基线之间的距离. 行内框盒子模型 所有内联元素的样式表现都与行内框盒子模型有关.所以这个概念是非常重要的. <p>这是一段文字,这里有个<em>em</em> 标签.</p> 如上面一段普普通通的代码,却包含了4种盒子: 1)“内容区域”(content area),是一种围绕文字看不见的盒子,可理解为选中文字蓝色背景区域,如下图.“内容区域”的大小与 font-size 大

css 行高

line-height行高 行高也就是基线与基线的距离 一行文本垂直居中 行高的设置可以让一行文本在盒子中垂直居中 做法就是,让文字的行高等于盒子的高度 行高分为上距离,下距离和内容高度,上下距离平分除内容高度外距离 行高小于盒子高度,会偏上一点, 行高大于盒子高度,会偏下一点, 原文地址:https://www.cnblogs.com/wbyixx/p/9492737.html

CSS 行高与文字竖直居中

1.