CSS中英文字符兩端對齊實現


兩端對齊實現

  一般加上下面2行就可實現

display: inline-block; text-align: justify;

  但是對於中英文混雜的情況,中英文難一起實現對齊,原因在下面有分析,需要如下js來控制

var ppp = document.getElementById("ppp"); ppp.innerHTML = ppp.innerHTML.split("").join(" ");

justify實現原理
  要理解原理,我們首先要搞清楚文本的兩端對齊聲明text-align:justify起作用的本質。首先,大家要知道,text-align:justify是專門為英文設計的,誰叫CSS是老外發明的呢,用來實現英文語句的兩端對齊。注意這里的,是語句的對齊。大家應該都知道,英文語句是一個單詞一個單詞組合而成的,每個單詞之前使用空格分隔。text-align:justify之所以可以讓英文段落兩端對齊,那是因為每個英文單詞之前那個透明看不見的空格被拉伸了。注意,是空格被拉伸了,對,只有空格。因此,當我們寫下一段洋洋灑灑中文內容的時候,text-align:justify是沒有任何作用的,跟沒設置沒任何區別。為什么呢?很簡單,因為中文是一個一個漢字,漢字之間是沒有空格的,自然也就不能拉伸,自然也就不能兩端對齊。

  通過代碼:ppp.innerHTML = ppp.innerHTML.split("").join(" ");讓每個文字之間都有空格字符,於是,text-align:justify就能大發神威,實現兩端對齊。

  兩端對齊是實現了,但是,空格字符它也是真實存在的字符,是會占據寬度的。如果放任不管,文字就會太稀松,閱讀很吃力,會被當bug提出來的,怎么辦呢?很簡單,我們使用letter-spacing收縮字符間距就可以了。

ppp.style.letterSpace = '-.15em';

總結:

box.style.textAlign = "justify"; box.style.letterSpacing = '-.15em'; box.innerHTML = box.innerHTML.split("").join(" ");

  如果段落含有英文片段,會干掉原來的空格,因為三個空格會被當做一個空格距離處理,因此,我們還需要對連續3個空格左下特殊處理,因此代碼進化成:

box.innerHTML = box.innerHTML.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '').split("").join(" ").replace(/\s{3}/g, "   ");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM