学习笔记 CSS权威指南 第6章 文本属性

248 阅读6分钟

CSS权威指南 第6章 文本属性

6.1 缩进和行内对齐

在英语和现代中文中

块级方向: 放置块级元素的方向,即从上到下

行内方向: 块级元素中,行内元素的书写方向,即从左到右

6.1.1 缩进文本text-ident

缩进首行

  • 只能用于块级元素,不能用于行内元素
  • 可以使用负值
  • 百分值相对于父元素的宽度计算
  • 注意会被继承

6.1.2 文本对齐text-align

  • 只能用于块级元素
  • 只影响元素中的内容,对块级元素本身的对齐方式没有影响

起边和终边对齐

  • start: 文本与元素所在行框的起边对齐
  • end: 文本与元素所在行框终边对齐

两段对齐: 文本一行的两端,与父元素的边界对齐,单词/字母之间的空白会自动调整

6.1.3 对齐最后一行text-align-last

  • 使用<br>强制换行的也受影响
  • 如果只有一行,text-align-lasttext-align的优先级高

6.2 块级对齐

作者说,行构成非常复杂,可以用一本书来介绍......有这么夸张么,可是我之前都不知道行还要由啥子东西来构成.可以自己是有多无知啊

6.2.1 行的高度line-heigh

line-height定义元素中文本行基线之间的最小距离

行的构成:

  • 基线: 一行文字中,以x下面为准的那条线
  • 内容区: 由字体的高度决定,即em方块(5.4中学的)组成的区域
  • 行距: line-height - font-size 然后平均分配到内容上下边
  • 行内框: 内容区 + 行距
  • 行框: 最高的行内框的上边和最低的行内框的下边

直到这里,才真正清楚,一个行内元素到底是个啥玩意儿.

line-height的值

  • 默认值normal: 一般是字体高度的1.2倍
  • 相对值em ex %相对于 font-size计算
  • 绝对值,没什么好说的
  • 纯数字: 只是换系数 行高的继承
  • 从父元素继承时line-height时,相对值根据父元素的字号计算
  • 使用纯数字时,继承的就只是换算系数,而不是计算得到的值
body { font-size: 10px; }
div { line-height: 1em; } // => 继承的font-size是10px, 计算后的line-height值是10px
p { font-size: 18px; } // => line-height,继承父元素的是10px

body { font-size: 10px; }
div { line-heiht: 1; } // => 继承font-size 10px 计算line-height 10px
p { font-size: 18px; } // => 继承line-height 1 计算font-size 18px

6.2.2 纵向对齐文本vertical-align

只能用于行内元素和置换元素

基线对齐: baseline元素的基线与父元素的基线对齐

  • 图像,表单输入框等置换元素没有基线,就把将底边与父元素的基线对齐

下标和上标

  • sub: 元素的基线,低于父元素的基线.但是不同的浏览器正常的距离不一样
  • super: 元素的基线,高于你元素的基线

底端对齐:

  • bottom元素的行内框底边与行框的底边对齐
  • text-bottom行中文本的底边与父元素默认文本框的底边对齐
    • 默认的文本框由父元素的字号确定

顶端对齐 top: 与bottom相反 text-top: 与text-bottom相反

中线对齐: 行内框的中线与父元素的中线对齐

  • 行内元素的中线: 行内框的中线
  • 父元素的中线: 基线向上偏移0.5ex距离的那条线
  • 一般用在图像等置换元素上

百分数: 行内框的基线(或置换元素的底边),相对父元素的基线,抬升或下沉指定的量

  • 值相对于元素自身的line-height计算

绝对值 同百分数

6.3 单词间距和字符间距

单词是指,两边有空白的非空白字符串...呃,对象形文字不生效

6.3.1 单词间距word-spacing

word-spacing: 修改单词之间的间距

  • 默认值normal设置为0
  • 只对英文和数字有效

6.3.2 字符间距letter-spacing

letter-spacing: 字符之间的间距

  • 默认值normal也是0
  • 不过这个对中文有效

6.3.3 对齐方式对间距的影响

text-align是两端对齐

  • word-spacing的值可能会被修改
  • letter-spacing如果设置了值,则不会修改
  • letter-spaing如果是normal,则可能会被修改

继承: 只能继承计算后的值

  • 永远和父元素一样
  • 不能像行高那样继承换算系数

6.4 文本转换text-transform

转变文本的大小写

  • uppercase 大写
  • lowercase 小写
  • capitalize 首字母大写
  • none 保持原样不变

这个属性所有浏览器都支持,我居然一直都不知道......

6.5 文本装饰text-decoration

  • underline 下划线
  • overline 上划线
  • line-throught 删除线

注意这个属性不会被继承

发现新大陆,三个值可以同时写,就可以确定ex方框的顶边,底边以及行内框的基线了

6.6 文本渲染效果text-rendering

  • 是一个svg属性
  • 主要用于字体绘制的配置,优选考虑清晰,还是速度,还是精度

6.7 文本阴影text-shadow

length length length color

  • 第一个是横向偏移
  • 第2个是纵向偏移
  • 第3个是模糊半径
  • 第4个是颜色,如果不填和前景色一样

注意: 阴影过多,或者模糊半径过大会损耗性能

6.8 处理空白white-sapce

空白 换行符 自动换行
pre-line 折叠 保留 允许
normal 折叠 忽略 允许
nowrap 折叠 忽略 禁止
pre 保留 保留 禁止
pre-wrap 保留 保留 允许

一直以来只会用nowrap,用于不换行...没想到还可以保留空格,一直以为空格都只会显示一个的啊.....靠了

设定制表符宽度tab-size

  • 默认是8字空格

6.9 换行和断字

hyphens: 断行提示

就是在一个单词内,如果行的宽度不够放这个单词,是否用连字符来标志断字

  • none: 不断字
    • 连字符,&shy;等断字会被忽略
  • manual: 手动断字,即在相应的标志处断字
  • 只对英文有用

word-break: 单词换换行

  • normal: 文本在单词之间换行,中文就是每个字
  • keep-all: 禁止在字符之间换行
    • 对中文无效
  • break-all: 在字符之间也可能断行,不会出现连字符

测试了一下,在中文上的效果有点和书上不一样.不深究了..反正用的也少

line-break

  • loose: 宽松的换行规则
  • normal: 常规
  • strict: 严格

搞不懂,在chorme上测试中文没啥区别

overflow-wrap 感觉有了white-space这个属性没卵用了啊

6.10 书写模式

英文和中文都是从上到下,从左到右..所以这一节就不看了....至少目前看其他书写格式是浪费时间

TODO

6.1.2两段对齐的最后一行为什么没有两段对齐