CSS 文本方向

一般地,正常网页文本方向都是从上到下,从左到右。实际上,有多种设置文本方向的属性,text-align,HTML全局属性中有一个"dir"属性就是专门用来设置文本方向的,设置文本方向的CSS样式有direction、unicode-bidi和writing-mode。


[1] writing-mode

writing-mode原先是IE的私有属性,原先的属性是lr-tb(左-右,上-下)和tb-rl(上-下,右-左)。其中writing-mode:tb-rl常用于触发haslayout。但W3C将writing-mode属性标准化后,其属性值也发生了变化。

writing-mode属性与其他改变文本方向的属性非常不一样。它不仅改变文本的显示方向,更直接改变了文本流的方向。如果其属性值改为vertical-rl,则文本流改成了垂直方向,则text-align变成了垂直对齐,vertical-align变成了水平对齐。

值: horizontal-tb | vertical-rl | vertical-lr

初始值: horizontal-tb

应用于: 除表格类元素之外的所有元素

继承性: 有

[注意] safari和移动端IOS和android需要添加-webkit-前缀;IE浏览器只支持自己的私有属性值。


[2] dir

dir是HTML的全局属性,专门用来设置文本的方向

值: ltr | rtl | auto

//ltr: 1 23 456
//rtl: 456 23 1

[3] direction

direction是设置文本方向的CSS样式

值: ltr | rtl | inherit

初始值: ltr

应用于: 所有元素

继承性: 有

[注意] 想让direction样式在inline元素上起作用,需要unicode-bidi样式的相关设置

[注意] 设置direction样式时,HTML元素的全局属性dir无效

ltr: 从左到右(left to right)
rtl: 从右到左(right to left)

// ltr: 1 23 456
// rtl: 456 23 1

[4] unicode-bidi

unicode-bidi是一种更健壮的处理文本方向的方式

值: normal | embed | bidi-override | isolate | isolate-override | plaintext | inherit

初始值: normal

应用于: 所有元素

继承性: 无

[注意] unicode-bidi属性应用于flex弹性盒模型上有问题,除非伸缩容器只包含一个匿名伸缩项目时有效,其余情况都无效;isolate、isolate-override、plaintext是实验属性值,几乎没有浏览器支持。