• HTML & CSS – dir, direction, writingmode, ltr (left to rigth), rtl (right to left)


    前言

    世界上有很多语言的阅读方向是不同的. 

    英文

    中文 (以前才有竖排文字, 现在中文和英语一样了)

    阿拉伯文 (Arabic)

    面对不同的语言, HTML 和 CSS 就需要不同的写法. 虽然我没有做过类似的项目, 但是知识还是要有的, 正所谓 "没吃过猪肉,也见过猪跑" 嘛.

    参考:

    HTML 中bdo标签的dir属性和CSS的direction属性的区别与用法

    snaapy.com (Arabic 网站)

    Youtube – CSS how to: text direction

    Easily Create Sideways Text Using the “writing-mode” CSS Property

    阅读方向

    有 3 个方向需要搞清楚.

    1. 整体靠的方向

    靠左: 英文

    靠右: 阿拉伯文

    靠上: 中文

    靠下: 没有看过

    2. 字的方向

    left to rigth: 英文

    right to left: 阿拉伯文

    top to bottom: 中文

    bottom to top: 没看过

    3. 换行的方向

     

    horizontal top to bottom: 英文

    vertical left to right: 中文

    vertical right to left: 中文

    horizontal bottom to top: 没有

    小总结

    靠的方向, 字的方向, 换行的方向

    英语: left, left to right, horizontal top to bottom

    中文: left or right, top to bottom, vertical left to right or right to left

    阿拉伯文: right, right to left, horizontal top to bottom

    dir Attribute

    Attribute dir 或 CSS direction 是用来控制 "靠" 的方向的

    <p>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, consectetur!
    </p>
    <p dir="ltr">
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic, consectetur!
    </p>
    <style>
      p {
        width: 300px;
        border: 1px solid black;
      }
      p:nth-child(1) {
        direction: ltr;
      }
      p:nth-child(2) {
        margin-top: 1rem;
        direction: rtl;
      }
    </style>

    效果

    CSS direction 和 HTML dir attirbute 是一样的效果. 写其中一个就可以了, 推荐用 HTML.

    rtl 是 rigth to left 缩写 (另外, ltr 就是 left to right, tb 就是 top to bottom)

    它的效果是把整个段落往右边靠. 结尾的标点符号也换了位置. 但是每一个字是没有改变方向的.

    bdo Attribute

    bdo 是用来控制 “字的方向”.

    <p>
      <bdo dir="rtl"
        >Lorem ipsum dolor, adipisicing elit. Eum, eius.其实, 你爱我像谁?</bdo
      >
    </p>

    给 p 加上 bdo tag dir="rtl" (它们一套用的, 如果写 ltr 就没效果了), BDO stands for Bi-Directional Override.

    注意看, 它每一个字 (every alphabet) 都反向了.

    也可以用 CSS style, 但推荐使用 HTML

    p {
      unicode-bidi: bidi-override;
      direction: rtl; /* 一定是 rtl, 一套用的 */
    }

    Writing-mode

    它用来控制 "换行的方向"

    HTML

    <p>I love you? ,其实,你爱我像谁?</p>
    <style>
      p {
        writing-mode: vertical-lr;
        height: 100px;
        border: 1px solid black;
      }
    </style>

    效果

    这个是 vertical left to right 的效果, 我是故意放英文的, 显然它不合适. 这也是为什么近年来越来越少用 vertical 排版了. 因为它很难表达英文和数字 (全文都用中文就可以. 但这很容易限制表达. 比如要创作一本 CSS 教程, 怎么可能不带英文呢?)

    writing-mode: vertical-rl

    vertical right to left 效果

    writing-mode 默认值是 horizontal-tb, top to bottom 的意思 (没有 bottom to top 的哦)

    总结

    虽然这 3 种设定可以笛卡尔积出很多排版, 但真正会用到的只有几个而已.

    英文

    默认, 什么也不用 set, 它的默认值是

    p {
      writing-mode: horizontal-tb;
      direction: ltr;
      /* unicode-bidi: bidi-override; */
    }

    效果

    中文

    CSS Style

    p {
      writing-mode: vertical-lr;
      direction: ltr;
      /* unicode-bidi: bidi-override; */
    }

    direction: ltr 按理说应该是指 "靠左", 但由于换成 vertical 了, 所以它变成了 top, 这里需要我们自己清楚.

    中文右到左

    CSS Style

    p {
      writing-mode: vertical-rl;
      direction: ltr;
      /* unicode-bidi: bidi-override; */
    }

    阿拉伯文

    不会写阿拉伯文, 改用中文代替.

    p {
      writing-mode: horizontal-tb;
      direction: rtl;
      unicode-bidi: bidi-override;
    }

    结束语

    我自己没有做过相关项目, 这里只是写个大概, writing-mode 还有其它的设定的. 

    但重点是下一篇的, CSS – Logical Properties, 没有上面这些基本概念, 很难理解为什么需要 Logical Properties. 所以才写了这篇.

     

  • 相关阅读:
    Swift5.3 语言参考(八) 模式
    Swift5.3 语言参考(七) 属性
    Swift5.3 语言参考(六) 声明
    Swift5.3 语言参考(五) 语句
    Swift5.3 语言参考(四) 表达式
    Swift5.3 语言参考(三) 类型
    Swift5.3 语言参考(一) 关于语言参考
    有效率的会议方式
    有效率的会议方式
    高中生活--第5篇--学英语的故事(四大难题)
  • 原文地址:https://www.cnblogs.com/keatkeat/p/15967175.html
Copyright © 2020-2023  润新知