搜尋
首頁web前端html教學談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

開本系列,討論一些有趣的 CSS 題目,拋開實用性而言,一些題目為了拓寬一下解決問題的思路,此外,涉及一些容易忽視的 CSS 細節。

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

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

談一些有趣的CSS題目(一)-- 左邊豎條的實作方法

談談一些有趣的CSS題目(二)-- 從條紋邊框的實現談盒子模型

談一些有趣的CSS題目(三)-- 層疊順序與堆疊上下文知多少

談一些有趣的CSS題目(四)-- 從倒影說起,談談 CSS 繼承 inherit

談一些有趣的CSS題目(五)-- 單行居中,兩行居左,超過兩行省略

所有題目總結在我的 Github 。

 

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

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

談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

法一:display:flex

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

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

 

法二:借助偽元素及 text-align:談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

定義如下 HTML 樣式:

<div class="container">
    <div class="談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題">
        <i>1</i>
        <i>2</i>
        <i>3</i>
        <i>4</i>
        <i>5</i>
    </div>
</div>

我們知道,有個 text-align:談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 可以實現兩端對齊文字效果。

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

text-align:談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 表示文字向兩側對齊。

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

.談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題{
  text-align: 談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題;
}

.談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}

结果如下:

談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

 

Demo戳我

没有得到意料之中的结果,并没有实现所谓的两端对齐,查找原因,在 W3C 找到这样一段解释:

最后一个水平对齐属性是 談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題,它会带来自己的一些问题。CSS 中没有说明如何处理连字符,因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则,而是干脆不提这个问题。

额,我看完上面一大段解释还是没明白上面意思,再继续查证,才找到原因:

虽然 text-align:談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 属性是全兼容的,但是要使用它实现两端对齐,需要注意在模块之间添加[空格/换行符/制表符]才能起作用。

也就是说每一个 1 间隙,至少需要有一个空格或者换行或者制表符才行。

好的,我们尝试一下更新一下 HTML 结构,采用同样的 CSS:

<div class="container">
    <div class="談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題">
        <i>1</i>

        <i>2</i>

        <i>3</i>

        <i>4</i>

        <i>5</i>

    </div>
</div>

尝试给每一块中间添加一个换行符,结果如下:

談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

Demo戳我

啊哦,还是不行啊。

再寻找原因,原来是出在最后一个元素上面,然后我找到了 text-align-last 这个属性,text-align-last属性规定如何对齐文本的最后一行,并且 text-align-last 属性只有在 text-align 属性设置为 談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 时才起作用。

尝试给容器添加 text-align-last:談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

.談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題{
  text-align: 談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題;
  text-align-last: 談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題; // 新增这一行
}

.談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}

发现终于可以了,实现了談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題:

o_談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題2

Demo戳我

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

談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

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

上面说了要使用 text-align:談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 实现多列布局,要配合 text-align-last ,但是它的兼容性又不好,真的没办法了么,其实还是有的,使用伪元素配合,不需要 text-align-last 属性。

我们给 class="談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題" 的 div 添加一个伪元素:

.談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題{
  text-align: 談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題;
}

.談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 i{
  width:24px;
  line-height:24px;
  display:inline-block;
  text-align:center;
  border-radius:50%;
}

.談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題:after {
  content: "";
  display: inline-block;
  position: relative;
  width: 100%;
}

去掉了 text-align-last: 談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題 了,增加一個偽元素,效果如下:

o_談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題2

Demo戳我,任意列數均勻版面

透過給偽元素 :after 設定 inline-block 設定寬度 100% ,而配合容器的均勻再配合幾句 hack 程式碼,可以實現相容到 IE6+ ,最重要的是程式碼不長,很好理解。

最終實現題目初始所示:

談談一些有趣的CSS題目(六)-- 全相容的多列均勻佈局問題

Demo戳我,任意列數均勻版面

 

此方法初見於這篇文章,得到原博主同意寫入了本系列,非常值得一看:

    別想太多了,只不過是兩端對齊而已
  •  

所有題目總結在我的 Github ,發到博客希望得到更多的交流。

到此本文結束,如果還有什麼疑問或建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML的目的:啟用Web瀏覽器可以顯示內容HTML的目的:啟用Web瀏覽器可以顯示內容May 03, 2025 am 12:03 AM

HTML的核心目的在於讓瀏覽器理解並展示網頁內容。 1.HTML通過標籤定義網頁結構和內容,如、到、等。 2.HTML5增強了多媒體支持,引入了和標籤。 3.HTML提供了表單元素,支持用戶交互。 4.優化HTML代碼可提升網頁性能,如減少HTTP請求和壓縮HTML。

為什麼HTML標籤對Web開發很重要?為什麼HTML標籤對Web開發很重要?May 02, 2025 am 12:03 AM

htmltagsareessentialforwebdevelopmentastheyandendenhancewebpages.1)semantictagsimproveaccessibilityandseo.2)semanteLayOut,語義和互動性。 3)poseriblesibilityandseoandseo.3)poseriblesoftagscanoftagscanoftagscanoptagscanoptimizeperefeneandimizeanDenSuroceRecRoscRoss-BrowserCrowserCercerComercompatibility。

說明將一致的編碼樣式用於HTML標籤和屬性的重要性。說明將一致的編碼樣式用於HTML標籤和屬性的重要性。May 01, 2025 am 12:01 AM

一致的HTML編碼風格很重要,因為它提高了代碼的可讀性、可維護性和效率。 1)使用小寫標籤和屬性,2)保持一致的縮進,3)選擇並堅持使用單引號或雙引號,4)避免在項目中混合使用不同風格,5)利用自動化工具如Prettier或ESLint來確保風格的一致性。

如何在 Bootstrap 4 中實現多項目輪播?如何在 Bootstrap 4 中實現多項目輪播?Apr 30, 2025 pm 03:24 PM

在Bootstrap4中實現多項目輪播的解決方案在Bootstrap4中實現多項目輪播並不是一件簡單的事情。雖然Bootstrap...

deepseek官網是如何實現鼠標滾動事件穿透效果的?deepseek官網是如何實現鼠標滾動事件穿透效果的?Apr 30, 2025 pm 03:21 PM

如何實現鼠標滾動事件穿透效果?在我們瀏覽網頁時,經常會遇到一些特別的交互設計。比如在deepseek官網上,�...

HTML 視頻的播放控件樣式怎麼修改HTML 視頻的播放控件樣式怎麼修改Apr 30, 2025 pm 03:18 PM

無法直接通過CSS修改HTML視頻的默認播放控件樣式。 1.使用JavaScript創建自定義控件。 2.通過CSS美化這些控件。 3.考慮兼容性、用戶體驗和性能,使用庫如Video.js或Plyr可簡化過程。

在手機上使用原生select會帶來哪些問題?在手機上使用原生select會帶來哪些問題?Apr 30, 2025 pm 03:15 PM

在手機上使用原生select的潛在問題在開發移動端應用時,我們常常會遇到選擇框的需求。通常情況下,開發者傾...

在手機上使用原生select的弊端是什麼?在手機上使用原生select的弊端是什麼?Apr 30, 2025 pm 03:12 PM

在手機上使用原生select的弊端是什麼?在移動設備上開發應用時,選擇合適的UI組件是非常重要的。許多開發者�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境