AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

使用 CSS Columns 布局來(lái)實(shí)現(xiàn)自動(dòng)分組布局

來(lái)源: 責(zé)編: 時(shí)間:2023-10-30 17:24:51 409觀看
導(dǎo)讀最近在項(xiàng)目中碰到這樣一個(gè)布局,有一個(gè)列表,先按照 4 * 2 的正常順序排列,當(dāng)超過(guò) 8 個(gè)后,會(huì)橫向重新開(kāi)始 4 * 2 的布局,有點(diǎn)像一個(gè)個(gè)獨(dú)立的分組,然后水平排列,如下圖中序號(hào)是 dom 序列,所以其實(shí)這這樣的一個(gè)順序。很多同學(xué)可能

miX28資訊網(wǎng)——每日最新資訊28at.com

最近在項(xiàng)目中碰到這樣一個(gè)布局,有一個(gè)列表,先按照 4 * 2 的正常順序排列,當(dāng)超過(guò) 8 個(gè)后,會(huì)橫向重新開(kāi)始 4 * 2 的布局,有點(diǎn)像一個(gè)個(gè)獨(dú)立的分組,然后水平排列,如下miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

圖中序號(hào)是 dom 序列,所以其實(shí)這這樣的一個(gè)順序。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

很多同學(xué)可能會(huì)想到給子元素分組(通過(guò) JS將原數(shù)組拆分組合成一個(gè)二維數(shù)組),每 8 個(gè)套一層容器,然后水平排列就行了miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

是不是有點(diǎn)麻煩呢?miX28資訊網(wǎng)——每日最新資訊28at.com

其實(shí),無(wú)需單獨(dú)嵌套容器也能實(shí)現(xiàn)類似分組的效果,這就需要借助本文要介紹的 column 布局了,一起看看吧~miX28資訊網(wǎng)——每日最新資訊28at.com

一、簡(jiǎn)單介紹一下 columns

平時(shí)接觸較多的都是flex或者grid,但還有一個(gè)columns布局往往被忽視了。miX28資訊網(wǎng)——每日最新資訊28at.com

https://developer.mozilla.org/zh-CN/docs/Web/CSS/columnsmiX28資訊網(wǎng)——每日最新資訊28at.com

columns布局,又稱“多列”布局(或者“分欄”布局),這是一個(gè)使用場(chǎng)景比較有限,但是幾乎無(wú)法被替代的一種布局。miX28資訊網(wǎng)——每日最新資訊28at.com

使用非常簡(jiǎn)單,直接看一個(gè)例子,假設(shè)有這樣一段文本miX28資訊網(wǎng)——每日最新資訊28at.com

p{  width: 500px;}
<p>歡迎關(guān)注前端偵探,這里有一些有趣的、你可能不知道的HTML、CSS、JS小技巧技巧,比如這篇文章,如何使用 CSS columns 布局來(lái)實(shí)現(xiàn)自動(dòng)分組布局,一起看看吧</p>

默認(rèn)是這樣的。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

下面我們將段文本分成3列。miX28資訊網(wǎng)——每日最新資訊28at.com

p{  columns: 3;}

看,自動(dòng)就分成了3列。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

并且閱讀順序是從左到右,從下到下,直到整列閱讀完成,非常類似以前的報(bào)刊讀物閱讀習(xí)慣。miX28資訊網(wǎng)——每日最新資訊28at.com

除了指定列數(shù),還可以根據(jù)指定寬度自動(dòng)去計(jì)算列數(shù),比如:miX28資訊網(wǎng)——每日最新資訊28at.com

p{  columns: 100px;}

效果如下:miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

這個(gè)表示按照最小100px去分段,看最多可以分成多少列,并不是說(shuō)每列就一定是 100,應(yīng)該是大于等于 100,直到剩余空間可以再放下一列。miX28資訊網(wǎng)——每日最新資訊28at.com

那為啥設(shè)置的是100,總寬度是500,卻只分成了4列?原因是有「默認(rèn)列間距」,如果去除這個(gè)間距。miX28資訊網(wǎng)——每日最新資訊28at.com

p{  column-gap: 0px;}

這樣就剛好被分成了5列。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

看不清楚?加個(gè)分割線試試。miX28資訊網(wǎng)——每日最新資訊28at.com

p{	column-rule: 1px solid red;}

是不是剛好分成了 5 列?(注意,這里的分割線是不占空間的)。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

簡(jiǎn)單了解columns多列布局后,下面來(lái)看另外的用途。miX28資訊網(wǎng)——每日最新資訊28at.com

二、columns 實(shí)現(xiàn)橫向分組布局

可能你已經(jīng)發(fā)現(xiàn)了,上面的文本分列布局和我們文章開(kāi)頭所需要的效果非常類似,都是一列一列的,因此我們可以嘗試用columns布局來(lái)實(shí)現(xiàn)這樣的效果。miX28資訊網(wǎng)——每日最新資訊28at.com

假設(shè)html是這樣的。miX28資訊網(wǎng)——每日最新資訊28at.com

<div class="wrap">  <div class="list">    <div class="item">1</div>    <div class="item">2</div>    <div class="item">3</div>    <div class="item">4</div>    <div class="item">5</div>    <div class="item">6</div>    <div class="item">7</div>    <div class="item">8</div>    <div class="item">9</div>    <div class="item">10</div>    <div class="item">11</div>    <div class="item">12</div>    <div class="item">13</div>    <div class="item">14</div>  </div></div>

這里多了一層wrap是用來(lái)做滾動(dòng)容器的,簡(jiǎn)單修飾一下。miX28資訊網(wǎng)——每日最新資訊28at.com

.wrap{  display: flex;  width: 400px;  overflow: auto;  outline: 1px dashed #9747FF;}.item{  display: inline-flex;  width: 80px;  margin: 10px;  aspect-ratio: 1/1;  background: #FFE8A3;  color: #333;  font-size: 30px;  border-radius: 10px;  align-items: center;  justify-content: center;}

效果如下,很正常的一個(gè)布局。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在,我們希望縱向高度是固定的,然后橫向滾動(dòng),先加一個(gè)高度試試。miX28資訊網(wǎng)——每日最新資訊28at.com

.list{  height: 200px;}

這樣就變成了縱向滾動(dòng)的布局了。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

那么,如何讓它橫向分欄并且滾動(dòng)呢?其實(shí)非常簡(jiǎn)單,只需要添加一行。miX28資訊網(wǎng)——每日最新資訊28at.com

.list{  height: 200px;  column-width: 400px;}

設(shè)置分欄寬度為滾動(dòng)容器寬度之后,就自動(dòng)將整個(gè)列表分成多組了,相當(dāng)于每個(gè)滾動(dòng)屏幕作為一組,從左到右排列,由于空間不足,所以可以橫向滾動(dòng)。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

是不是非常神奇??jī)H需一個(gè)屬性就實(shí)現(xiàn)了縱向滾動(dòng)到橫向滾動(dòng)的切換。miX28資訊網(wǎng)——每日最新資訊28at.com

三、借助 scroll-snap 實(shí)現(xiàn)輪播效果

通常碰到這種橫向滾動(dòng)的效果,你可能會(huì)想到一個(gè)swiper組件,也就是那種一屏一屏切換的效果,沒(méi)錯(cuò),我們這里也可以借助scroll-snap輕易實(shí)現(xiàn)。miX28資訊網(wǎng)——每日最新資訊28at.com

關(guān)于scroll-snap,網(wǎng)上教程非常多,MDN 官網(wǎng)也有非常清晰的 demo,如果不熟悉的可以先去了解一下:https://developer.mozilla.org/zh-CN/docs/Web/CSS/scroll-snap-type。miX28資訊網(wǎng)——每日最新資訊28at.com

這里就不詳細(xì)介紹了。miX28資訊網(wǎng)——每日最新資訊28at.com

回到這里,由于整個(gè)列表下面只有一層子元素,好像并沒(méi)有辦法區(qū)分每一屏的臨界點(diǎn)。其實(shí)不然,可以想一下,這里每一屏有 8 個(gè)元素,也就是第1、9、17...個(gè)分別是每一屏的第一個(gè)元素,是不是可以以這些元素為標(biāo)識(shí)(吸附對(duì)象)呢?miX28資訊網(wǎng)——每日最新資訊28at.com

首先要在滾動(dòng)容器下定義一下。miX28資訊網(wǎng)——每日最新資訊28at.com

.wrap{  scroll-snap-type: x mandatory;}

然后給第1、9、17...個(gè)元素添加吸附對(duì)象,這里可以用nth-child選擇器。miX28資訊網(wǎng)——每日最新資訊28at.com

.item:nth-child(8n+1){  scroll-snap-align: start;}

效果如下(為了區(qū)分,把每一屏的第一個(gè)元素背景做了高亮)。miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

還可以多添加點(diǎn)元素,多切幾屏看看效果:miX28資訊網(wǎng)——每日最新資訊28at.com

miX28資訊網(wǎng)——每日最新資訊28at.com

完整代碼可以參考:miX28資訊網(wǎng)——每日最新資訊28at.com

  • CSS columns (juejin.cn)[1]
  • CSS column (codepen.io)[2]

四、CSS 實(shí)現(xiàn)的優(yōu)勢(shì)和總結(jié)

相對(duì)于傳統(tǒng)的 JS實(shí)現(xiàn)來(lái)說(shuō),有哪些好處呢?miX28資訊網(wǎng)——每日最新資訊28at.com

  • 少了一層嵌套容器,業(yè)務(wù)邏輯會(huì)根據(jù)干凈。
  • 自適應(yīng)強(qiáng),可以根據(jù)需求選擇固定列數(shù)或者固定寬度,JS往往只能根據(jù)數(shù)量去分組。
  • 不會(huì)報(bào)錯(cuò),想想看,JS中的數(shù)組經(jīng)常會(huì)出現(xiàn)xxx.slice is not function這樣的錯(cuò)誤,輕則警告,總則整個(gè)頁(yè)面白屏。
  • 布局足夠靈活,想橫向滾動(dòng)就橫向滾動(dòng),想縱向滾動(dòng)就縱向滾動(dòng),而JS方式往往還需要改變數(shù)組形態(tài)。

有這么多好處還不趕緊用起來(lái)?下面再來(lái)回顧一下columns布局。miX28資訊網(wǎng)——每日最新資訊28at.com

  • columns布局,又稱“多列”布局(或者“分欄”布局),可以將默認(rèn)的文本流輕易分成多欄,非常類似以前的報(bào)刊讀物排版。
  • column可以通過(guò)寬度(column-width)去自動(dòng)分割,或者通過(guò)指定數(shù)量(column-count)將布局分成多少欄。
  • column-gap可以設(shè)置分欄之間的空隙,默認(rèn)是有間隔的。
  • column-rule可以設(shè)置分隔線,這種分割線是不占據(jù)空間的。
  • columns布局使用場(chǎng)景比較有限,但是幾乎無(wú)法被替代。

多想象一下,其實(shí)可以有更多的使用場(chǎng)景,雖然本來(lái)并不是做這個(gè)事情的。miX28資訊網(wǎng)——每日最新資訊28at.com

[1]CSS columns (juejin.cn): https://code.juejin.cn/pen/7293927297596260379。miX28資訊網(wǎng)——每日最新資訊28at.com

[2]CSS column (codepen.io): https://codepen.io/xboxyan/pen/RwvPLEM。miX28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-15891-0.html使用 CSS Columns 布局來(lái)實(shí)現(xiàn)自動(dòng)分組布局

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Java中未正確關(guān)閉文件、數(shù)據(jù)庫(kù)連接或網(wǎng)絡(luò)連接,造成資源泄漏

下一篇: 你知道嗎?Django QuerySet 的這些實(shí)用技巧,你一定要會(huì)!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場(chǎng)的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號(hào)為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號(hào)的橫向折疊屏,而是跟別的廠商一樣采用了較為常見(jiàn)的
  • 6月iOS設(shè)備性能榜:M2穩(wěn)居榜首 A系列只能等一手3nm來(lái)救

    沒(méi)有新品發(fā)布,自然iOS設(shè)備性能榜的上榜設(shè)備就沒(méi)有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動(dòng),畢竟蘋果新品的發(fā)布節(jié)奏就是這樣的,一年下來(lái)也就幾個(gè)移動(dòng)端新品,不會(huì)像安卓廠商,一
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現(xiàn)已正式出爐,冠軍是來(lái)自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 2023年,我眼中的字節(jié)跳動(dòng)

    此時(shí)此刻(2023年7月),字節(jié)跳動(dòng)從未上市,也從未公布過(guò)任何官方的上市計(jì)劃;但是這并不妨礙它成為中國(guó)最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強(qiáng)勢(shì)崛起,到2018年的&ldquo;頭騰
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬(wàn)

    來(lái)源 | 電商在線文|易琬玉編輯|斯問(wèn)受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、&ldquo;Ringdoll戒之人形&rdquo;淘寶店鋪有關(guān)外貌的評(píng)價(jià),黃山已經(jīng)聽(tīng)累了。生于1985年的他,哪
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁(yè)&ldquo;充值中心&rdquo;入口上線了本機(jī)生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 新電商三兄弟,“抖快紅”成團(tuán)!

    來(lái)源:價(jià)值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書組成的&ldquo;新電商三兄弟&rdquo;成為業(yè)內(nèi)一股不可忽視的勢(shì)力,給阿里、京東、拼多多帶去了巨大壓
  • 支持aptX Lossless無(wú)損傳輸 iQOO TWS 1賽道版發(fā)布限時(shí)優(yōu)惠價(jià)369元

    2023年7月4日,“無(wú)損音質(zhì),聲動(dòng)人心”iQOO TWS 1正式發(fā)布,支持aptX Lossless無(wú)損傳輸,限時(shí)優(yōu)惠價(jià)369元。iQOO TWS 1耳機(jī)率先支持端到端aptX Lossless無(wú)
  • 英特爾Xe-HP項(xiàng)目終止,將專注Xe-HPC/HPG系列顯卡

    據(jù)10 月 31 日消息報(bào)道,英特爾高級(jí)副總裁兼加速計(jì)算系統(tǒng)和圖形事業(yè)部總經(jīng)理 表示,Xe-HP“ Arctic Sound” 系列服務(wù)器 GPU 已經(jīng)應(yīng)用于 oneAPI devcloud 云服
Top