聊一聊CSS文本兩端對齊

今天我們來聊一聊CSS文本兩端對齊。


事情的起因是這樣的,在Review一位同事做的頁面時蚂踊,發(fā)現(xiàn)好幾處字符之間寫了很多空格,于是問他為什么這么做笔宿,他說設計要求這幾個文本的呈現(xiàn)寬度必須一致犁钟,但它們的字符個數(shù)又不同棱诱,所以就在字符數(shù)少的文本中添加空格從而達到文本兩端對齊(字符均勻分布)的效果,于是我對他表示了侮辱性的贊美涝动。


用添加空格符的方式實現(xiàn)文本兩端對齊迈勋,除了不夠優(yōu)雅,容易被羞辱之外醋粟,還有其他三個問題:


1. 不同的瀏覽器靡菇,不同的移動設備,對空格符的展示寬度是有細微差別的米愿,一個空格看不出影響厦凤,但是多個空格就無法保證一致了,很有可能出現(xiàn)沒對齊或者折行的情況育苟。


2. 任何頁面都避免不了修改泳唠,如果文本需要更換,并且更換后字數(shù)發(fā)生變化宙搬,這將意味著之前的空格數(shù)量需要重新調整笨腥,非常不利于維護。


3. 某些頁面上的文本勇垛,用戶可能會去復制脖母,但復制下來后發(fā)現(xiàn)含有很多空格符,仍需要二次編輯闲孤。


因此在日常開發(fā)中要避免使用空格符來實現(xiàn)兩端對齊谆级,而應該使用標準的CSS文本對齊屬性來解決。


CSS文本對齊屬性 text-align


這個屬性大家經常用到的值有三個:

left:左對齊

right:右對齊

center:居中對齊

它還有一個屬性值:justify讼积,表示文本兩端對齊肥照,也就是讓文本在固定寬度內平均分布,使兩邊不會出現(xiàn)空白勤众。那么用這個屬性是否就能很好的實現(xiàn)文本兩端對齊呢舆绎?


通過測試發(fā)現(xiàn),單行文本通過text-align:justify; 并不能實現(xiàn)兩端對齊们颜,為什么會出現(xiàn)這個情況吕朵?我們需要先了解一點點排版知識。


傳統(tǒng)書刊的排版印刷對于整個自然段通常采用兩端對齊的方式窥突,這樣就保證了排版的美觀和良好的閱讀體驗努溃。但是自然段的最后一行文字是左對齊的,因為最后一行文本意味著段落的結束阻问,沒有必要繼續(xù)兩端對齊了梧税。


細心的朋友應該已經猜到了,在我們測試中,文本只有一行第队,意味著它也是最后一行哮塞,而CSS的文本對齊方式也遵循最后一行文本默認左對齊的原則,因此不能實現(xiàn)兩端對齊斥铺。


好在CSS為我們提供了另外一個屬性:text-align-last,這個屬性用來額外設置段落最后一行文本的對齊方式坛善,因此對于單行文本晾蜘,我們只需要設置:text-align-last: justify;就可以了,親測有效眠屎。


TIPS:單行文本要想實現(xiàn)文本兩端對齊剔交,除了上面說的方式,一定別忘了這個文本需要一個確定的寬度改衩,不設置寬度岖常,文本也就不存在兩端。因此這個單行文本不能是行內布局葫督,而應該是塊級或者是行內塊級布局竭鞍。


好景不長,用上面的方式實現(xiàn)了文本兩端對齊后橄镜,發(fā)現(xiàn)它只是在PC上有效偎快,但是在IOS的系統(tǒng)瀏覽器里毫無效果,最后發(fā)現(xiàn)在IOS上不支持text-align-last這個屬性洽胶,因此這個方式并不穩(wěn)妥晒夹。


那么如何解決IOS的兼容問題呢?


著手點只有一個姊氓,那就是如何保證單行文本對于CSS來說并不是最后一行丐怯?這句話看似很奇怪,其實解決辦法很簡單翔横,只需要給這個單行文本添加一個偽元素after即可读跷。

someClass: after { content: “”}

由于添加了偽元素,單行文本不再是最后一行禾唁,偽元素才是舔亭, 同時偽元素的內容為空字符串,并不會對顯示造成影響蟀俊,因此完美解決了這個問題钦铺。

注意:偽元素after不僅要設置content,還要添加 width:100%; 和 display:inline-block; 這是因為:如果不設置寬度肢预,偽元素內容并不會成為第二行矛洞,如果display設置成block,又造成了偽元素變成了另一個塊級元素,所以要設置為inline-block沼本。

最終的代碼:

someClass {text-align:justify; width:300px;}

someClass: after { content: “”; width:100%; display:inline-block;}


第一次純手機手戳噩峦,有誤或者不完善之處敬請諒解,歡迎評論指出抽兆。


[ 轉載請注明出處识补,禁止用于盈利 ]


我的其他文章

純js實現(xiàn)上傳文件小工具

反饋在人機交互中的重要性

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辫红,隨后出現(xiàn)的幾起案子凭涂,更是在濱河造成了極大的恐慌,老刑警劉巖贴妻,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件切油,死亡現(xiàn)場離奇詭異,居然都是意外死亡名惩,警方通過查閱死者的電腦和手機澎胡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娩鹉,“玉大人攻谁,你說我怎么就攤上這事⊥溆瑁” “怎么了巢株?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長熙涤。 經常有香客問我阁苞,道長,這世上最難降的妖魔是什么祠挫? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任那槽,我火速辦了婚禮,結果婚禮上等舔,老公的妹妹穿的比我還像新娘骚灸。我一直安慰自己,他們只是感情好慌植,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布甚牲。 她就那樣靜靜地躺著,像睡著了一般蝶柿。 火紅的嫁衣襯著肌膚如雪丈钙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天交汤,我揣著相機與錄音雏赦,去河邊找鬼。 笑死,一個胖子當著我的面吹牛星岗,可吹牛的內容都是我干的填大。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼俏橘,長吁一口氣:“原來是場噩夢啊……” “哼允华!你這毒婦竟也來了?” 一聲冷哼從身側響起寥掐,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤靴寂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后曹仗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榨汤,經...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡蠕搜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年怎茫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妓灌。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡轨蛤,死狀恐怖,靈堂內的尸體忽然破棺而出虫埂,到底是詐尸還是另有隱情祥山,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布掉伏,位于F島的核電站缝呕,受9級特大地震影響,放射性物質發(fā)生泄漏斧散。R本人自食惡果不足惜供常,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸡捐。 院中可真熱鬧栈暇,春花似錦、人聲如沸箍镜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽色迂。三九已至香缺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間歇僧,已是汗流浹背赫悄。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人埂淮。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓姑隅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親倔撞。 傳聞我的和親對象是個殘疾皇子讲仰,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,758評論 1 92
  • 學會使用CSS選擇器熟記CSS樣式和外觀屬性熟練掌握CSS各種選擇器熟練掌握CSS各種選擇器熟練掌握CSS三種顯示...
    七彩小鹿閱讀 6,317評論 2 66
  • 1.塊級元素和行內元素 塊級(block-level)元素痪蝇;行內(內聯(lián)鄙陡、inline-level)元素。 塊元素的...
    饑人谷_小侯閱讀 2,014評論 1 4
  • CSS 是什么 css(Cascading Style Sheets)躏啰,層疊樣式表趁矾,選擇器{屬性:值;屬性:值}h...
    崔敏嫣閱讀 1,488評論 0 5
  • 本課來自http://www.imooc.com/learn/9請不要用作商業(yè)用途给僵。 HTML5 HTML介紹 H...
    PYLON閱讀 3,233評論 0 5