整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          聊一聊CSS文本兩端對齊

          聊一聊CSS文本兩端對齊

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



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


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


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


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


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


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


          CSS文本對齊屬性 text-align


          這個屬性大家經(jīng)常用到的值有三個:

          left:左對齊

          right:右對齊

          center:居中對齊

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


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



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


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


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


          TIPS:單行文本要想實現(xiàn)文本兩端對齊,除了上面說的方式,一定別忘了這個文本需要一個確定的寬度,不設(shè)置寬度,文本也就不存在兩端。因此這個單行文本不能是行內(nèi)布局,而應(yīng)該是塊級或者是行內(nèi)塊級布局。


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


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


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

          someClass: after { content: “”}

          由于添加了偽元素,單行文本不再是最后一行,偽元素才是, 同時偽元素的內(nèi)容為空字符串,并不會對顯示造成影響,因此完美解決了這個問題。

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

          最終的代碼:

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

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

          常情況下select內(nèi)的文字默認(rèn)值是左對齊,下面主要用css的屬性實現(xiàn)select里面的文字右對齊;

          效果如下:

          實現(xiàn)該效果是,在select樣式里添加direction: rtl;屬性即可;

          direction定義和用法

          direction屬性規(guī)定文本的方向 / 書寫方向。

          該屬性指定了塊的基本書寫方向,以及針對 Unicode 雙向算法的嵌入和覆蓋方向。不支持雙向文本的用戶代理可以忽略這個屬性。

          技術(shù)等級】初級

          【承接文章】《CSS文本屬性,讓你的段落更加美觀,前端之路更進一步》

          本文重點講解CSS技術(shù)中文本樣式的text-align屬性以及”塊級元素”和“內(nèi)聯(lián)元素”的使用。本文屬于前端開發(fā)的初級教程,適合于剛剛開始接觸CSS技術(shù)的學(xué)習(xí)者。

          一、設(shè)置對齊方式:

          CSS技術(shù)利用text-align屬性來設(shè)置對齊方式

          首先,在使用該屬性的同時,要明確這是誰相對于誰的對齊方式。讓我們一起來看下列代碼。

          <div>

          <p style=”text-align:center”></p>

          </div>

          上述代碼中使用了text-align屬性的標(biāo)記對是<p></p>標(biāo)記對。那么,是誰相對于誰垂直居中了呢?下面列舉了兩種可能的情況:

          • <p>標(biāo)記對相對于它的容器<div>標(biāo)記對垂直居中

          • <p>標(biāo)記對的內(nèi)容(即“”文字)相對于<p>標(biāo)記對本身垂直居中。

          請大家仔細想一想,應(yīng)該是上述那種情況?

          正確答案是第二種。也就是說:使用了text-align屬性的標(biāo)記對,是這個標(biāo)記對的內(nèi)容在該標(biāo)記對內(nèi)部實現(xiàn)了對齊效果,而不是這個標(biāo)記對在其容器內(nèi)部實現(xiàn)了對齊效果。

          其次,要想實現(xiàn)文本相對于自身的對齊方式,那么自身的標(biāo)記對必須具備一定的寬度和高度。以上述代碼來說,<p>標(biāo)記對默認(rèn)情況下的寬度為整個頁面的寬度,也就是說這個標(biāo)記對自身是有一定的寬度的,同時內(nèi)部的文本數(shù)量又比較少,所以text-align在使用的過程中是可以看到效果的。

          綜合上述的內(nèi)容,可以說text-align屬性在使用時要注意以下兩點:

          • 對齊效果是自身內(nèi)部的文本內(nèi)容相對于自身這個容器的對齊方式。

          • 標(biāo)記對自身必須具備一定的寬度。

          text-align屬性可以有多種取值:

          • left,左對齊。內(nèi)部文本在自身容器中左對齊

          • center,居中對齊。內(nèi)部文本在自身容器中居中對齊。

          • right,右對齊。內(nèi)部文本在自身容器中右對齊。

          • justify,兩端對齊。內(nèi)部文本在自身容器中兩端對齊,即整個段落的左側(cè)是整齊的,右側(cè)也是整齊的。這種對齊方式和左對齊是有區(qū)別的。左對齊可以明顯的觀察出段落的右側(cè)是不整齊的。

          左對齊和兩端對齊的區(qū)別

          從上圖中可以看出,兩端的最右側(cè),也就是深色直線比對的位置。采用的左對齊的段落這條線附近的段落文本是沒有對齊的;而采用了兩端對齊的這條線附近的段落文本是對齊的。

          二、塊級元素與內(nèi)聯(lián)元素

          我們將HTML的各個標(biāo)記,根據(jù)在頁面中展示內(nèi)容的外觀,分為兩類:一類叫做“塊級元素”,另一類叫做“內(nèi)聯(lián)元素”。

          • 典型的“塊級元素”是<div></div>標(biāo)記對。

          • 典型的“內(nèi)聯(lián)元素”是<span></span>標(biāo)記對。

          這兩個標(biāo)記對本身沒有任何外觀效果,內(nèi)部可以盛放任何HTML標(biāo)記對,是網(wǎng)頁布局時常用的兩個容器。 默認(rèn)情況下,<div></div>標(biāo)記的寬度為頁面的整寬,即一個<div></div>標(biāo)記占一行,被稱為“塊級元素”。<span></span>標(biāo)記的寬度為內(nèi)部內(nèi)容的寬度,多個<span></span>標(biāo)記的內(nèi)容可以在一行內(nèi)顯示,被稱為“行內(nèi)元素”或“內(nèi)聯(lián)元素”。

          還有哪些塊級元素標(biāo)記:

          • 常用的塊級元素標(biāo)記還包括:<p></p> <ul></ul> <ol></ol> <li></li> <table></table> <form></form>

          還有哪些內(nèi)聯(lián)元素標(biāo)記:

          • 常用的內(nèi)聯(lián)元素標(biāo)記還包括:<a></a> <img /> <input /> <select></select> <textarea></textarea>

          三、塊級元素與內(nèi)聯(lián)元素的區(qū)別:

          塊級元素和內(nèi)聯(lián)元素的的區(qū)別可以從下圖中看到。

          “塊級元素”和“內(nèi)聯(lián)元素”的區(qū)別

          四、學(xué)習(xí)兩個新的CSS屬性

          我們這里學(xué)習(xí)兩個簡單的CSS屬性,分別為width和height屬性。

          • width,為塊級元素設(shè)置寬度。

          • height,為塊級元素設(shè)置高度。

          這兩個屬性的取值必須是帶有單位的數(shù)值。

          例:div{width:200px; height:30px;}

          上述代碼將頁面中所有的<div></div>標(biāo)記對都設(shè)置為了寬度200像素、高度30像素的矩形。也就是說這樣一來,<div></div>標(biāo)記對再也不占有整個頁面的整寬了,但是仍然為獨占一行的情況。

          這兩個屬性是用來設(shè)置元素的寬度和高度的,但是只能適用于塊級元素。這也是內(nèi)聯(lián)元素沒有寬度的一個重要原因:因為利用width屬性為內(nèi)聯(lián)元素設(shè)置寬度是沒有效果的。

          文章預(yù)告

          下一篇文章中,小海老師會為大家從細節(jié)上深入剖析line-height屬性以及該屬性的用法。對于渴望在前端開發(fā)道路上前進的你一定不能錯過!

          小海教材

          如果大家希望得到更加全面的關(guān)于HTML和CSS技術(shù)講解的內(nèi)容,可以私信我,我會免費將小海老師自己編寫的HTML和CSS的PDF教材發(fā)給你,幫助你在前端開發(fā)的道路上闊步前行。

          小海聲明

          在頭條上也已經(jīng)寫了有十篇文章了。這些文章都是從前端開發(fā)的基礎(chǔ)開始一步一步講起的。我非常希望能有更多的前端開發(fā)初學(xué)者通過我寫的文章,逐步學(xué)到一定的知識,甚至慢慢有了入門的感覺。這些文章都是我這幾年教學(xué)過程中的經(jīng)驗,每寫一篇時我都盡量把握好措辭,用簡單易懂的語言描述,同時精心設(shè)計版面,讓版面更加豐富,激發(fā)閱讀興趣。所以,每一篇文章可能篇幅不長,但是都要耗費小海老師很久的時間。

          希望收藏了我寫的文章的你同時可以關(guān)注一下“小海前端”,因為這些文章都是連載的,并且是經(jīng)過我系統(tǒng)的歸納過的。關(guān)注“小海前端”,我會繼續(xù)為大家奉上更加深入的前端開發(fā)文章,也希望更多的初學(xué)者跟著學(xué)下去,我們共同將前端開發(fā)的路努力堅持的走下去。


          主站蜘蛛池模板: 好看的电影网站亚洲一区| 久久久人妻精品无码一区| 一区二区免费视频| 中文字幕一区二区免费| 久久无码精品一区二区三区| 无码精品人妻一区二区三区AV| 日韩在线一区二区三区视频| 中文字幕人妻第一区| 免费人妻精品一区二区三区| 亚洲第一区在线观看| 亚洲日本久久一区二区va| 国产乱人伦精品一区二区在线观看| 无码人妻啪啪一区二区| 亚洲熟妇av一区二区三区| eeuss鲁片一区二区三区| 黄桃AV无码免费一区二区三区| 亚拍精品一区二区三区| 精品国产一区二区三区不卡| 日本一区二区三区中文字幕| 久久精品国产免费一区| 一区二区三区在线|日本| 亚洲电影唐人社一区二区| 久久精品一区二区三区日韩| 精品理论片一区二区三区| 99精品国产高清一区二区| 狠狠色婷婷久久一区二区| 中文字幕一区二区三区人妻少妇| 国产一区二区三区日韩精品| 亚洲AV综合色一区二区三区 | 一区二区三区在线|日本| 国产亚洲欧洲Aⅴ综合一区| 国产精品 一区 在线| 日韩一区在线视频| 亚欧成人中文字幕一区| 国产日韩精品一区二区在线观看| 色窝窝无码一区二区三区成人网站| 日本精品啪啪一区二区三区| 亚洲一区精品伊人久久伊人| 在线视频一区二区三区三区不卡| 无码人妻一区二区三区免费n鬼沢| 国产精品无码一区二区在线|