目錄
6、全相容的多列均勻佈局問題" >6、全相容的多列均勻佈局問題
法一:display:flex" >法一:display:flex
 
法二:以偽元素及 #text-align:justify" >法二:以偽元素及 #text-align:justify
首頁 web前端 css教學 CSS全相容的多列均勻佈局問題解決方法

CSS全相容的多列均勻佈局問題解決方法

Mar 24, 2017 am 10:42 AM
css

解題不考慮相容性,題目天馬行空,想到什麼說什麼,如果解題中有你感覺到生僻的 CSS 屬性,趕緊去補習一下吧。

會不斷更新,不斷更新,不斷更新,重要的事情說三次。

6、全相容的多列均勻佈局問題

#如何實現下列這種多列均勻佈局(圖中直線為了展示容器寬度,不算在內):

CSS全相容的多列均勻佈局問題解決方法

法一:display:flex

#CSS3 彈性盒子(Flexible Box 或Flexbox),是一種佈局方式,當頁面需要適應不同的螢幕大小以及裝置類型時,它依然能確保元素擁有更恰當的排布行為。

當然 flex 佈局應用於行動端不錯,PC 端需要全相容的話,相容性不夠,此處略過不談。

 

法二:以偽元素及 #text-align:justify

##定義如下HTML 樣式:


<p class="container">
    <p class="justify">
        <i>1</i>
        <i>2</i>
        <i>3</i>
        <i>4</i>
        <i>5</i>
    </p>
</p>
登入後複製

我們知道,有個text-align:justify 可以實現兩端對齊文字效果。

text-align CSS屬性定義行內內容(例如文字)如何相對它的區塊父元素對齊。 text-align 不控制區塊元素自己的對齊,只控制它的行內內容的對齊。

text-align:justify 表示文字向兩側對齊。

一開始我猜測使用它可以實現,採用如下CSS :

##

.justify{
  text-align: justify;
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}
登入後複製

結果如下:

CSS全相容的多列均勻佈局問題解決方法

Demo戳我

沒有得到意料之中的結果,並沒有實現所謂的兩端對齊,查找原因,在 W3C 找到這樣一段解釋:

最後一個水平對齊屬性是 

justify,它會帶來自己的一些問題。 CSS 中沒有說明如何處理連字符,因為不同的語言有不同的連字符規則。規範沒有嘗試去調和這樣一些很可能不完備的規則,而是乾脆不提這個問題。

額,我看完上面一大段解釋還是沒懂上面意思,再繼續查證,才找到原因:

#雖然 

text-align:justify

 屬性是全相容的,但是要使用它實現兩端對齊,需要注意在模組之間添加[空格/換行符/製表符]才能起作用。

也就是說每一個 1

 間隙,至少需要有一個空格或換行或製表符才行。 ############好的,我們試試更新 ###HTML### 結構,採用同樣的CSS:###############
<p class="container">
    <p class="justify">
        <i>1</i>

        <i>2</i>

        <i>3</i>

        <i>4</i>

        <i>5</i>

    </p>
</p>
登入後複製
######嘗試在每一塊中間加上一個換行符,結果如下:######

CSS全相容的多列均勻佈局問題解決方法

啊哦,还是不行啊。

再寻找原因,原来是出在最后一个元素上面,然后我找到了 text-align-last 这个属性,text-align-last属性规定如何对齐文本的最后一行,并且 text-align-last 属性只有在 text-align 属性设置为 justify 时才起作用。

尝试给容器添加 text-align-last:justify


.justify{
  text-align: justify;
  text-align-last: justify; // 新增这一行
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}
登入後複製

发现终于可以了,实现了多列均匀布局:

CSS全相容的多列均勻佈局問題解決方法

结束了?没有,查看一下 text-align-last 的兼容性:

CSS全相容的多列均勻佈局問題解決方法

但是一看兼容性,惨不忍睹,只有 IE8+ 和 最新的 chrome 支持 text-align-last 属性,也就是说,如果你不是在使用 IE8+ 或者 最新版的 chrome 观看本文,上面 Demo 里的打开的 codePen 例子还是没有均匀分布。

上面说了要使用 text-align:justify 实现多列布局,要配合 text-align-last ,但是它的兼容性又不好,真的没办法了么,其实还是有的,使用伪元素配合,不需要 text-align-last 属性。

我们给 class="justify"p 添加一个伪元素:


.justify{
  text-align: justify;
}

.justify i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}

.justify:after {
  content: "";
  display: inline-block;
  position: relative;
  width: 100%;
}
登入後複製

去掉了 text-align-last: justify 了,增加一个伪元素,效果如下:

CSS全相容的多列均勻佈局問題解決方法

通过给伪元素 :after 设置 inline-block 设置宽度 100% ,配合容器的 text-align: justify 就可以轻松实现多列均匀布局了。再多配合几句 hack 代码,可以实现兼容到 IE6+ ,最重要的是代码不长,很好理解。

那么为什么使用了 :after 伪元素之后就可以实现对齐了呢?

原因在于 justify 只有在存在第二行的情况下,第一行才两端对齐,所以在这里,我们需要制造一个假的第二行,而 :after 伪元素正好再适合不过。

最终实现题目初始所示:

CSS全相容的多列均勻佈局問題解決方法

以上是CSS全相容的多列均勻佈局問題解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

bootstrap按鈕怎麼用 bootstrap按鈕怎麼用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

bootstrap怎麼插入圖片 bootstrap怎麼插入圖片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

bootstrap怎麼寫分割線 bootstrap怎麼寫分割線 Apr 07, 2025 pm 03:12 PM

創建 Bootstrap 分割線有兩種方法:使用 標籤,可創建水平分割線。使用 CSS border 屬性,可創建自定義樣式的分割線。

bootstrap怎麼調整大小 bootstrap怎麼調整大小 Apr 07, 2025 pm 03:18 PM

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

bootstrap怎麼設置框架 bootstrap怎麼設置框架 Apr 07, 2025 pm 03:27 PM

要設置 Bootstrap 框架,需要按照以下步驟:1. 通過 CDN 引用 Bootstrap 文件;2. 下載文件並將其託管在自己的服務器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根據需要編譯 Sass/Less;5. 導入定製文件(可選)。設置完成後,即可使用 Bootstrap 的網格系統、組件和样式創建響應式網站和應用程序。

bootstrap怎麼看日期 bootstrap怎麼看日期 Apr 07, 2025 pm 03:03 PM

答案:可以使用 Bootstrap 的日期選擇器組件在頁面中查看日期。步驟:引入 Bootstrap 框架。在 HTML 中創建日期選擇器輸入框。 Bootstrap 將自動為選擇器添加樣式。使用 JavaScript 獲取選定的日期。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

bootstrap日期怎麼驗證 bootstrap日期怎麼驗證 Apr 07, 2025 pm 03:06 PM

在 Bootstrap 中驗證日期,需遵循以下步驟:引入必需的腳本和样式;初始化日期選擇器組件;設置 data-bv-date 屬性以啟用驗證;配置驗證規則(如日期格式、錯誤消息等);集成 Bootstrap 驗證框架,並在表單提交時自動驗證日期輸入。

See all articles