不管你怎麼換字體、調字距,都達不到那種自然的效果。這其實不是你的鍋,也不是設計師的問題——而是瀏覽器長期沒有正確處理中文與西文混排的間距。在中文網頁排版的世界裏,這個問題已經困擾了我們很多年。

如果你經常寫內容類應用,一定有過這樣的困惑:

為什麼中文和英文、數字混在一起,總是看起來那麼彆扭?

比如「我愛Vue」、「版本2.0」,這些混排的文字總顯得擠在一起、不太舒服。

不管你怎麼換字體、調字距,都達不到那種自然的效果。

這其實不是你的鍋,也不是設計師的問題——而是瀏覽器長期沒有正確處理中文與西文混排的間距。

在中文網頁排版的世界裏,這個問題已經困擾了我們很多年。

曾經的無解時代

根據中文排版規範,當漢字與西文或數字相鄰時,應當有一個微小的間距。

這被稱為“文字間距”或“中西文混排間距”。

過去,我們為了讓排版更舒服,試過各種土辦法:

•用腳本在中英文之間自動加空格;

•在字體文件裏做字距補丁;

•甚至用 letter-spacingword-spacing 硬調。

但這些方法都不完美:有的破壞語義,有的導致對齊錯亂,還有的在不同瀏覽器下效果完全不同。

想讓下面這段話顯示得順眼:

我愛Vue,也愛React。

幾乎得靠一點“玄學”調試。

CSS 給出的答案:text-autospace

現在,終於有了官方方案。

在最新的 CSS Text 模塊中,W3C 定義了一個新屬性:

text-autospace: normal;

text-autospace 是 CSS Text Module Level 4 中新增的規範。

它的核心目的就是自動處理表意文字(如中文 CJK)與非表意文字(西文、數字等)之間的間距。

通俗點講,就是——在中文(或日文、韓文)與英文、數字之間,自動插入合適的視覺間距,

讓排版更自然、更有呼吸感,不再貼在一起。

原來在網頁中是這樣的:

css 右對齊_Web前端教程:簡單實用的CSS網頁佈局中文排版技巧_weixin_ci

加上這個屬性後,就變成了這樣:

css 右對齊_Web前端教程:簡單實用的CSS網頁佈局中文排版技巧_weixin_CSS_02

差別雖然細微,但閲讀體驗完全不同。

當頁面裏有大量中英混排時,整篇文字會更均衡、更舒服。

目前,我注意到知乎已經啓用了這個 CSS 屬性。作為一個內容類網站,為他們點個贊!

兼容性:終於等來了黃金時代

其實,這個屬性在很多年前的草案裏就已經被提出,但一直沒人實現。直到最近,情況終於發生了變化:

css 右對齊_Web前端教程:簡單實用的CSS網頁佈局中文排版技巧_weixin_ci_03

也就是説,現在主流瀏覽器幾乎都支持了!

中文排版那點“小別扭”,終於能用標準 CSS 解決了。

使用建議

使用也很簡單,只需一行 CSS,就可以在全局生效(推薦寫在 body 或 :root 上):

:root {
  /* 啓用自動混排間距 */
  text-autospace: normal;
}

不過,為了保險起見,建議加上兼容判斷:

@supports (text-autospace: normal) {
  :root {
    text-autospace: normal;
  }
}

這樣舊瀏覽器會自動忽略這個屬性,不會出錯。

寫在最後

這些年,中文網頁的中英文混排一直是個小麻煩。

為了那半個空格,我們寫過正則、改過字體、甚至造過插件。

現在,一個標準 CSS 屬性就能搞定:

text-autospace: normal;

這不僅是中文排版的改進,更是漢字文化影響 Web 的一個新起點。