整合營(yíng)銷(xiāo)服務(wù)商

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

          免費(fèi)咨詢熱線:

          HTML網(wǎng)頁(yè)中的圖形是如何對(duì)齊的?有什么方法可以使它們對(duì)齊?


          許多方法可以將HTML元素與CSS對(duì)齊,但是一起使用或單獨(dú)使用它們并不是那么容易。開(kāi)發(fā)人員所面臨的困難之一就是試圖將元素集中在頁(yè)面中間。

          因此,在本文中,我將展示一些最常用的方法,即通過(guò)使用不同的CSS屬性在水平和垂直方向上居中圖像。

          水平居中

          讓我們開(kāi)始使用3個(gè)不同的CSS屬性將圖像水平居中。

          文字對(duì)齊

          使圖像水平居中的第一種方法是使用text-align屬性。但是,僅當(dāng)圖像位于塊級(jí)容器(例如<div>)內(nèi)時(shí),此方法才有效:

          Margin: Auto

          使圖像居中的另一種方法是使用margin:auto屬性(用于左邊距和右邊距)。但是,單獨(dú)使用margin:Auto將不適用于圖像。如果需要使用margin:auto,則還必須使用2個(gè)其他屬性。

          margin-auto屬性對(duì)內(nèi)聯(lián)級(jí)別的元素沒(méi)有任何影響。由于<img>標(biāo)簽是一個(gè)內(nèi)聯(lián)元素,因此我們需要先將其轉(zhuǎn)換為塊級(jí)元素:

          其次,我們還需要定義寬度。因此,左右邊緣可以占用其余的空白空間并自動(dòng)對(duì)齊,可以這樣解決問(wèn)題(除非我們給出100%的寬度):

          Display: Flex

          將圖像水平居中的第三種方法是使用display:flex。同樣,我們對(duì)容器使用text-align屬性,它也會(huì)使用display:flex。但是,僅使用display:flex是不夠的。容器還必須具有一個(gè)稱為justify-content的附加屬性。

          justify-content屬性與display:flex一起使用,我們可以使用它水平放置圖像的中心。最后,圖像的寬度必須小于容器的寬度,否則,它會(huì)占用100%的空間,然后我們就無(wú)法對(duì)其進(jìn)行集中化。

          垂直居中放置圖像

          1、Display: Flex

          對(duì)于垂直對(duì)齊,使用display:flex確實(shí)很有幫助。考慮到我們的容器的高度為800px,但圖像的高度僅為500px:

          現(xiàn)在,在這種情況下,向容器中添加一行代碼(align-items:center)就可以了:

          如果將align-items屬性與display:flex一起使用,就會(huì)將元素垂直放置。

          2、位置:絕對(duì)和變換屬性

          垂直對(duì)齊的另一種方法是一起使用position和transform屬性。這個(gè)有點(diǎn)復(fù)雜,所以讓我們一步一步地做。

          步驟1:定義絕對(duì)位置

          首先,我們將圖像的定位行為從靜態(tài)更改為絕對(duì):

          同樣,它應(yīng)該位于相對(duì)放置的容器內(nèi),因此我們添加一個(gè)位置:相對(duì)于其容器的div。

          步驟2:定義頂部和左側(cè)屬性

          其次,我們定義圖像的頂部和左側(cè)屬性,并設(shè)置為50%。這會(huì)將圖像的起點(diǎn)(左上角)移到容器的中心:

          步驟3:定義變換屬性

          在第二步的時(shí)候已經(jīng)將圖像的一部分移出容器。因此,我們需要將其取回內(nèi)部。在圖像上定義轉(zhuǎn)換屬性,并在其X和Y軸上添加負(fù)50%可以達(dá)到目的:

          還可以使用其他方法進(jìn)行水平和垂直居中,我這里只嘗試了最常用的方法。希望這篇文章可以幫助你了解如何在頁(yè)面中心對(duì)齊圖像。

          天我們來(lái)聊一聊CSS文本兩端對(duì)齊。



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


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


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


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


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


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


          CSS文本對(duì)齊屬性 text-align


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

          left:左對(duì)齊

          right:右對(duì)齊

          center:居中對(duì)齊

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


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



          傳統(tǒng)書(shū)刊的排版印刷對(duì)于整個(gè)自然段通常采用兩端對(duì)齊的方式,這樣就保證了排版的美觀和良好的閱讀體驗(yàn)。但是自然段的最后一行文字是左對(duì)齊的,因?yàn)樽詈笠恍形谋疽馕吨温涞慕Y(jié)束,沒(méi)有必要繼續(xù)兩端對(duì)齊了。


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


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


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


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


          那么如何解決IOS的兼容問(wèn)題呢?


          著手點(diǎn)只有一個(gè),那就是如何保證單行文本對(duì)于CSS來(lái)說(shuō)并不是最后一行?這句話看似很奇怪,其實(shí)解決辦法很簡(jiǎn)單,只需要給這個(gè)單行文本添加一個(gè)偽元素after即可。

          someClass: after { content: “”}

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

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

          最終的代碼:

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

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

          先,我們來(lái)學(xué)習(xí)CSS設(shè)置文本的對(duì)齊方式。

          通過(guò)CSS,可以設(shè)置文本的水平和垂直對(duì)齊方式。(有案例的效果演示)

          文本水平對(duì)齊,我們前面的課程曾經(jīng)接觸過(guò)——使用 text-align 這個(gè)樣式屬性來(lái)實(shí)現(xiàn)。它的屬性值有三個(gè):left,right,center,分別表示文本水平居左,居右,居中。

          我們來(lái)舉個(gè)例子。

          在 005 目錄下創(chuàng)建 alignment-spacing.html 文件,構(gòu)建基礎(chǔ)代碼,添加一個(gè) h1 元素和三個(gè) p 元素,分別填入一些文本。

          <h1>浠浠呀老師,學(xué)前端的大專生就業(yè)難嗎?</h1>

          <p>

          no, 不難,只要你能力過(guò)關(guān)、項(xiàng)目經(jīng)驗(yàn)過(guò)關(guān)、人品過(guò)關(guān),企業(yè)就會(huì)錄用你。

          </p>

          <p>

          你可以在面試的時(shí)候,著重介紹一下你的開(kāi)發(fā)能力、技術(shù)能力以及你對(duì)技術(shù)理解,讓別人挑不出毛病,那學(xué)歷這塊是可以自動(dòng)忽略的。

          </p>

          <p>

          我在面試別人的時(shí)候也是這樣,如果這個(gè)人的技術(shù)能力和過(guò)往經(jīng)驗(yàn)真的征服了我,我不是很在他乎他的學(xué)歷。

          </p>

          我們可以給三個(gè)段落文本,設(shè)置不同的水平對(duì)齊方式,給三個(gè) p 元素定義 class 屬性,值分別為 a,b,c。

          在這個(gè)目錄下再創(chuàng)建一個(gè) mystyle-2.css 文件,定義 p.a (讀作p點(diǎn)a) 選擇器,聲明樣式 text-align: left (不要讀冒號(hào))。定義 p.b 選擇器,聲明樣式 text-align: center。定義 p.c 選擇器,聲明樣式 text-align: right。

          p.a {

          text-align: left;

          }

          p.b {

          text-align: center;

          }

          p.c {

          text-align: right;

          }

          在瀏覽器中預(yù)覽效果,三個(gè)段落分別左、中、右對(duì)齊了。

          當(dāng) text-align 屬性被設(shè)置為 justify [?d??st?fa?]時(shí),每一行都被拉長(zhǎng),使每一行都有相等的寬度,而且左右邊界是對(duì)齊的,就像雜志和報(bào)紙排版一樣。

          注釋掉全部樣式,定義 p 選擇器,聲明樣式 text-align: justify。

          我們看,貌似沒(méi)有什么效果。

          為了演示,給第一個(gè)段落添加單詞 no, (讀作no 英文的逗號(hào)) 。再給 p 元素聲明一個(gè)樣式 width: 200px。

          再看效果,三個(gè)段落的兩側(cè)都是對(duì)齊的。

          假如注釋掉這個(gè)樣式,

          很明顯,右側(cè)不再對(duì)齊顯示了。

          除了水平對(duì)齊,還可以設(shè)置文本的垂直對(duì)齊。通過(guò)聲明 vertical-align 屬性來(lái)實(shí)現(xiàn)。值有五個(gè):

          baseline,基線對(duì)齊。

          text-top,文本頂部對(duì)齊。

          text-bottom,文本底部對(duì)齊。

          sub,下角標(biāo)對(duì)齊。

          super,上角標(biāo)對(duì)齊。

          在 html 文件中添加一個(gè) h1 元素,5個(gè) p 元素。填入一些文本。在每個(gè)段首添加一個(gè) img 元素,引入本地的一個(gè)小圖片,圖片的寬高都為 9px。給每個(gè)圖片元素定義 class 屬性,值分別為 a,b,c,d,e。

          在樣式表中,定義 img.a 選擇器,聲明樣式 vertical-align: baseline。

          baseline 是如何對(duì)齊的呢?看效果,在垂直方向好像是居中對(duì)齊。

          實(shí)際上,baseline 是基于四線三格倒數(shù)第二行對(duì)齊的。對(duì)于英文文本才有意義。

          比如,將 1 修改為 fight 1。

          基線在這,文本中的圖片就基于它來(lái)對(duì)齊。

          再定義 img.b,img.c,img.d,img.e 四個(gè)選擇器,給他們都聲明 vertical-align 屬性,值分別為 text-top,text-bottom,sub,super 。

          看看效果,圖片垂直方向上,已經(jīng)相對(duì)于文本頂部、底部、上角標(biāo)、下角標(biāo)的位置對(duì)齊了。

          接下來(lái),我們學(xué)習(xí)如何設(shè)置文本的間距。

          通過(guò) CSS,可以實(shí)現(xiàn)文本縮進(jìn)、文字或字母間距、行高、單詞間距和處理空白。(有案例的效果演示)

          聊起文本縮進(jìn),你還記得以前是如何實(shí)現(xiàn)自然段首行縮進(jìn)的嗎?可以發(fā)彈幕告訴大家!

          通過(guò)聲明 CSS 的 text-indent 屬性也可以實(shí)現(xiàn)。使?長(zhǎng)度值或百分?來(lái)設(shè)置?本縮進(jìn)。

          長(zhǎng)度值可以使?絕對(duì)單位或相對(duì)單位。絕對(duì)單位就是 px,比如縮進(jìn) 50px;相對(duì)單位最常用的是 em,縮進(jìn)的寬度為字符寬度的倍數(shù),一般設(shè)置為 2em,就是空兩格。

          字符寬度——如果是中文方塊字,也可以稱為字體大小,它是通過(guò) font-size 屬性來(lái)設(shè)置的,這個(gè)屬性在后面 CSS 字體課程中會(huì)詳細(xì)介紹。

          百分?縮進(jìn)寬度,是根據(jù)?元素的寬度計(jì)算得到。這個(gè)很少使用。

          給 p 元素聲明 text-indent 屬性,值為 2em。

          仔細(xì)觀察,每個(gè)自然段縮進(jìn)貌似不是2個(gè)字的寬度,這是為什么呢?

          你應(yīng)該想到了,把 text-align: justify 注釋一下,就是我們要的效果了。

          letter-spacing 屬性用于指定中文文字或英文字母之間的空隙。

          在樣式中,定義 h1 選擇器,聲明樣式 letter-spacing: 5px。

          這樣,標(biāo)題文字間就有了 5px 的空隙。

          line-height 屬性用于指定行與行之間的高度,也就是行高。屬性值常用的有三個(gè):

          第一,normal,也是默認(rèn)值,瀏覽器會(huì)根據(jù)字符大小自動(dòng)設(shè)置一個(gè)行高。

          第二,一個(gè)數(shù)字,比如 1.5。此數(shù)字與當(dāng)前的字符大小相乘計(jì)算得到。推薦使用。

          第三,絕對(duì)值,比如 20px,-5px。設(shè)置固定的行間距。

          在沒(méi)有設(shè)置 line-height 屬性時(shí),我們看到每一行的間距是這樣的。

          回到樣式代碼,給 p 元素聲明樣式 line-height: normal。

          我們看到效果沒(méi)有變化。

          修改 line-height 屬性值為 1。

          再來(lái)看,每個(gè)段落的行間距消失了。

          再次修改 line-height 為 10px,行與行之間疊加到了一起。

          是不是和你理解的行高不一樣呢?看來(lái),我們得需要仔細(xì)研究一下:行高到底是如何計(jì)算的。

          這是兩行中文和英文混合的文本。

          在文字頂端畫(huà)一條線,取名叫頂線。在文字底端畫(huà)一條線,取名叫底線。在文字中間畫(huà)一條線,取名叫中線,再畫(huà)一條英文的基線。上一行文字的底線,到下一行文字的頂線,他們之間的空隙稱為行距。

          實(shí)際上,line-height 設(shè)置的行高值,是兩行基線的距離。

          這里你可能會(huì)問(wèn),基線不是英文文本才有的嗎?其實(shí),不管文本里有沒(méi)有英文,基線都是一直存在的。

          了解了這個(gè)原理,你就能理解 line-height: 1,為啥沒(méi)有行距了。因?yàn)?1 乘以文字的高度,結(jié)果還是文字的高度。而文字的高度,恰好等于兩行基線之間的距離,所以行距為 0。

          word-spacing 屬性用于指定文本中單詞的間距,只對(duì)英文有效。

          給 p 元素再聲明一個(gè) word-spacing: 20px 樣式。

          我們看,單詞 no 和 fight 后面就有了 20個(gè)像素的間距。

          white-space 屬性指定了如何處理元素內(nèi)部的空白。有一個(gè)常用的值,nowrap,不管包含文本的元素寬度是多少,文本都不會(huì)換行,直到遇見(jiàn) <br> 標(biāo)簽為止。

          給 p 元素再聲明一個(gè) white-space: nowrap 樣式。

          此時(shí),每個(gè)段落都在一行顯示了。雖然我們給 p 元素聲明了 width: 200px,他也會(huì)視而不見(jiàn),繼續(xù)倔強(qiáng)的在一行顯示。

          文章配套視頻鏈接:https://www.bilibili.com/video/BV1oU4y1278g?p=63


          主站蜘蛛池模板: 亚洲av色香蕉一区二区三区| 国产一区在线mmai| 福利国产微拍广场一区视频在线| 精品一区二区三人妻视频| 色综合久久一区二区三区| 中文字幕国产一区| 国产成人综合一区精品| 久久精品一区二区三区中文字幕 | 国产精品自拍一区| 国产伦一区二区三区免费| 精品一区二区三区无码免费视频| 成人久久精品一区二区三区| 亚洲国产精品一区二区成人片国内| 亚洲日韩精品一区二区三区无码 | 亚洲天堂一区在线| 国产福利电影一区二区三区,日韩伦理电影在线福 | 国产成人精品一区二区三区无码 | 色婷婷一区二区三区四区成人网| 精品无码一区二区三区水蜜桃| 一区二区三区四区免费视频| 精品日韩一区二区三区视频| 国模吧无码一区二区三区| 亚洲熟妇AV一区二区三区宅男| 在线一区二区三区| 亚洲日韩中文字幕一区| 韩国一区二区视频| 精品深夜AV无码一区二区| 国产自产V一区二区三区C| 精品无码国产一区二区三区AV | jizz免费一区二区三区| 久久人妻无码一区二区| 亚洲一区中文字幕在线电影网| 日本高清成本人视频一区| 精品国产一区二区三区2021| 欧洲精品一区二区三区在线观看 | 国产午夜精品一区二区三区| 波多野结衣的AV一区二区三区| 午夜视频久久久久一区 | 无码人妻精品一区二区蜜桃网站 | 中文字幕一区精品| 丰满爆乳一区二区三区|