CSS計數(shù)器實現(xiàn)九宮格提示超出數(shù)量(轉(zhuǎn)載)

本篇文章給大家介紹一下使用純CSS實現(xiàn)九宮格提示超出數(shù)量僵芹。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所助谐宙。

image

經(jīng)常在某些 app 中看到這樣的九宮格設(shè)計。當(dāng)縮略圖不足 9 張時界弧,正常排列凡蜻,當(dāng)超過 9 張時,會提示還剩多少張垢箕,如下:

1.jpg

如何使用純 CSS 實現(xiàn)這一效果呢划栓?一起來看看吧

一、九宮格布局

布局就很簡單了条获,一個很普通的九宮格布局忠荞,這里使用 grid

<ul class="list">
  <li class="item"></li>
  <li class="item"></li>
  <li class="item"></li>
    ...
</ul>

這里正方形可以用aspect-ratio簡易實現(xiàn),對應(yīng)的 CSS 如下

.list{
  position: relative;
  display: grid;
  width: 300px;
  margin: auto;
  grid-template-columns: repeat(3,1fr);
  list-style: none;
  padding: 0;
  gap: 2px;
}
.item{
  aspect-ratio: 1;/*寬高比1:1*/
}

效果如下

2.jpg

那么帅掘,如何實現(xiàn)在超過9張時自動提示剩余張數(shù)呢委煤?接著往下看

二、CSS 計數(shù)器

提到序列修档,自然會想到 CSS 計數(shù)器碧绞,現(xiàn)在我們加上計數(shù)器

.list{
  /*...*/
  counter-reset: count; /*初始化*/
}

然后在每一個 .item顯示數(shù)字,可以用到偽元素::after

.item{
  counter-increment: count;
}
.item::after{
  content: counter(count);
  /*其他樣式*/
  display: grid;
  height: 100%;
  place-content: center;
  font-size: 30px;
  color: #fff;
}

這樣可以得到如下效果

3.jpg

數(shù)字是顯示出來了吱窝,不過現(xiàn)在還有兩個問題:

  • 數(shù)量超過9個時讥邻,不會隱藏超過的圖片

  • 這個數(shù)字不是超出圖片的數(shù)量,而是總數(shù)

三院峡、 隱藏超出的圖片

這個其實非常容易兴使,由于數(shù)量是固定的,只需要利用選擇器nth-child配合~就能實現(xiàn)

.item:nth-child(9)~.item{
  /*選擇第9個以后的元素*/
  visibility: hidden;
}
4.jpg

這個地方是通過 visibility: hidden隱藏超過的圖片撕予,原因是該屬性不會影響計數(shù)器的計算鲫惶,如果使用display:none則會跳過計數(shù)

四、 統(tǒng)計超過的數(shù)量

目前由于是從第1個開始計數(shù)实抡,所以最后統(tǒng)計的是整個列表的數(shù)量欠母,但是我們可以指定從第10個才開始計數(shù)欢策,會得到什么效果呢?為了方便演示赏淌,暫時把隱藏打開

.item{
  /*counter-increment: count;*/
}
.item:nth-child(9)~.item{
  /*從第10個開始計數(shù)*/
  counter-increment: count;
}
.item:nth-child(9)~.item::after{
  content: counter(count);
}
5.jpg

可以看到踩寇,從第10個開始計數(shù)后,最后一個數(shù)字就表示還剩余多少張

現(xiàn)在把最后一張放在右下角就行了(絕對定位)六水,最后一張可以用.item:nth-child(9)~.item:last-child來選擇俺孙,表示第9張后面的最后一張圖片,實現(xiàn)如下

.item:nth-child(9)~.item{
  position: absolute;
  width: calc(100% / 3 - 1px);
  counter-increment: count;
  visibility: hidden;
  right: 0;
  bottom: 0;
}
.item:nth-child(9)~.item:last-child::after{
  visibility: visible;
  background-color: rgba(0,0,0,.2);
}

這樣就實現(xiàn)了純 CSS 自動提示剩余圖片的效果掷贾,演示如下

6.gif

這里的 addremove 是演示動態(tài)修改節(jié)點數(shù)量睛榄,與交互邏輯無關(guān)

完整代碼可訪問 list-counter (codepen.io)

五、其他初始化方式

在上一種實現(xiàn)方式中想帅,我們是手動指定從第 10 個元素開始計數(shù)的

.item:nth-child(9)~.item{
  /*從第10個開始計數(shù)*/
  counter-increment: count;
}

其實场靴,還有一種方式也值得一試,那就是直接指定計數(shù)器的初始值港准,默認(rèn)為0旨剥,現(xiàn)在改為 -9 就可以了,實現(xiàn)如下

.list{
  /*...*/
  counter-reset: count -9; /*初始化為-9*/
}
7.jpg

不一樣的初始化思路浅缸,剩下的就和之前一樣的邏輯了轨帜,完整代碼可訪問 list-counter-reset (codepen.io)

六、總結(jié)和說明

這個案例到這里就結(jié)束了衩椒,一個低成本的 CSS 小技巧蚌父,雖然不多,但是非常實用烟具,尤其是選擇器的運(yùn)用梢什,說不定將來哪次就會用上了。CSS 計數(shù)器可以說是非常靈活和強(qiáng)大了朝聋,仔細(xì)挖掘應(yīng)該還能實現(xiàn)更多實用的效果,這里總結(jié)一下:

  • 九宮格布局如果不考慮兼容性優(yōu)先使用 grid 布局

  • 自適應(yīng)正方形可以使用 aspect-ratio 實現(xiàn)

  • 遇到和序列有關(guān)的布局囤躁,優(yōu)先考慮 CSS 計數(shù)器

  • 靈活運(yùn)用 CSS 選擇器冀痕,nth-child(n)~ 可以組合選擇第 n 個以后的元素

  • 可以指定從第 n 個元素開始計數(shù)

  • 可以指定計數(shù)器的初始值

  • CSS 計數(shù)器沒有兼容性問題,可以放心使用

本文轉(zhuǎn)載自:https://www.php.cn/css-tutorial-479690.html

更多編程相關(guān)知識狸演,請訪問:編程入門Q陨摺!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宵距,一起剝皮案震驚了整個濱河市腊尚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌满哪,老刑警劉巖婿斥,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劝篷,死亡現(xiàn)場離奇詭異,居然都是意外死亡民宿,警方通過查閱死者的電腦和手機(jī)娇妓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門故慈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顽照,“玉大人,你說我怎么就攤上這事臼氨≈救海” “怎么了着绷?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锌云。 經(jīng)常有香客問我蓬戚,道長,這世上最難降的妖魔是什么宾抓? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任子漩,我火速辦了婚禮,結(jié)果婚禮上石洗,老公的妹妹穿的比我還像新娘幢泼。我一直安慰自己,他們只是感情好讲衫,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布缕棵。 她就那樣靜靜地躺著,像睡著了一般涉兽。 火紅的嫁衣襯著肌膚如雪招驴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天枷畏,我揣著相機(jī)與錄音别厘,去河邊找鬼。 笑死拥诡,一個胖子當(dāng)著我的面吹牛触趴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渴肉,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼冗懦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仇祭?” 一聲冷哼從身側(cè)響起披蕉,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后没讲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體眯娱,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年食零,在試婚紗的時候發(fā)現(xiàn)自己被綠了困乒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡贰谣,死狀恐怖娜搂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吱抚,我是刑警寧澤百宇,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站秘豹,受9級特大地震影響携御,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜既绕,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一啄刹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凄贩,春花似錦誓军、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椒丧,卻和暖如春壹甥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壶熏。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工句柠, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人久橙。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓俄占,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淆衷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容