一文學會text-justify,orientation,combine文本屬性

  • 2022 年 4 月 22 日
  • 筆記

大家好,我是半夏👴,一個剛剛開始寫文的沙雕程序員.如果喜歡我的文章,可以關注➕ 點贊 👍 加我微信:frontendpicker,一起學習交流前端,成為更優秀的工程師~關注公眾號:搞前端的半夏,了解更多前端知識! 點我探索新世界!

原文鏈接 ==>//sylblog.xin/archives/36

前言

深度剖析text-align家族你不知道的下劃線-text-decoration兩篇介紹文本屬性的時候,我們基本已經學會了很多之前沒有使用過的屬性,今天我們接着來看更多的文本屬性,CSS的世界是精妙的,無盡的,僅僅希望同這三篇文章,可以入得CSS文本屬性的基礎門。人生短暫,學無止盡。

text-justify

兼容性

此屬性目前被列為「有風險」在候選推薦期間被丟棄。因此,不建議在生產中使用此屬性,因為它不太可能在不久的將來成為所有瀏覽器的標準。

兼容性很差,目前也就火狐瀏覽器可以用!!!僅學習。

定義

規定text-align: justify;使用的對齊方式。

text-justify 必須與text-align: justify;同時出現,如果你還不知道text-align: justify;是啥,請立即閱讀學透CSS-深度剖析text-align家族 文本屬性(上) (連載中),看完再來看這篇文章。

屬性值

auto

默認值,允許瀏覽器確定對齊方式是否更好地處理為inter-word或inter-character。這在內容語言在呈現之前未知的多語言場景中很有幫助。

inter-word

通過調整單詞間距來指定文本對齊

inter-character

通過調整字符間距指定文本對齊

可能單純的看inter-word和inter-character的截圖不是太清楚,放一張對比圖。

第一張:inter-character

第二張:inter-word

仔細看最明顯的兩處:
就不容易了 A
Your worst battle is
第一張圖your的字符間距是比較大的,第二章Your worst中間的間距比較大

none

禁用對齊方法。消除父元素帶來的inter-word和inter-character屬性

distribute

已被廢除,不提倡使用

親測在火狐瀏覽器表現如下

text-orientation

兼容性

瀏覽器的兼容還是不錯的,除了IE(永遠的噩夢)

定義

在文字的書寫模式為豎直的情況下,改變字符的方向。

豎直模式 writing-mode

  1. writing-mode: vertical-lr;

  1. writing-mode: vertical-rl;

屬性值:

mixed

默認值。水平腳本中的字符順時針旋轉 90°。
仔細看截圖中的英文和數字,方向是被旋轉 90°.

upright

此值會將字符本身從旋轉 90°旋轉到其自然位置。注意這個關鍵字會導致所有字符被視為從左到右,也就是 direction 被強制設為 ltr(從左往右)。

sideways

垂直書寫模式下的所有文本都橫向顯示,就像在水平布局中一樣,整行順時針旋轉 90°。。

sideways-right:

某些瀏覽器將此值視為sideways為向後兼容而保留的值的別名。

text-combine-upright

首先我覺得這個屬性就是對text-orientation的一個補充,主要的作用就是想把某些字符放在一行顯示,例如 上面的截圖頻繁出現的13,在豎直模式下,是分兩行顯示的。為了讓他們在一行顯示就需要用到這個屬性了。

兼容性

火狐和谷歌兼容還是不錯的,可以用。

屬性值

all

垂直包含框中所有連續的排版字符在同一行水平顯示,佔用垂直框中單個字符的空間。
請仔細閱讀這句話!!!

all 例子1
      writing-mode: vertical-lr;
      text-combine-upright: all;
      
       <p>
        我說道:「爸爸,你走吧。」他往車外看了看,說:「我買幾個橘子去。你就在此地,不要走動。」
        我看那邊月台的柵欄外有幾個賣東西的等着顧客。走到那邊月台,須穿過鐵道,須跳下去又爬上去。
        父親是一個胖子,走過去自然要費事些。我本來要去的,他不肯,只好讓他去。我看見他戴着黑布小帽,
        穿着黑布大馬褂12,深青布棉袍,蹣跚13地走到鐵道邊,慢慢探身下去,尚不大難。可是他穿過鐵道,
        要爬上那邊月台 ,就不容易了。
      </p>

最終的效果:


是不是瞬間明白了,讓你仔細閱讀的原因啦!!!

all 例子2
p{
  writing-mode: vertical-lr;
}
span{
  text-combine-upright: all;
}
 <p>
  我說道:「爸爸,你走吧。」他往車外看了看,說:「我買幾個橘子去。你就   在此地,不要走動。」
 <span id="leftSpan" >202108</span>就不容易了。
 </p>

最終的效果

這下是不是知道怎麼使用了,瀏覽器並不會識別那些要顯示在一行,需要我們指定哪些字符顯示在一行。

digits <integer>

兼容性

對於這個屬性,特地放出了兼容性圖。從圖中看,這個屬性基本沒法使用

垂直包含框中所有連續的 ASCII 數字在同一行上水平顯示,佔用垂直框中單個字符的空間,最多為指定的整數。如果沒有指定整數,則默認值為 2 位。任何低於 2 和高於 4 的都是無效的。

語法

text-combine-upright: digits 2;