兩端對齊實現
一般加上下面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, " ");