• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 浅谈CSS如何实现九宫格提示超出数量

浅谈CSS如何实现九宫格提示超出数量

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了CSS实现九宫格,九宫格超出数量等相关知识,希望对您有所帮助

本篇文章给大家介绍一下使用纯CSS实现九宫格提示超出数量。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。


浅谈CSS如何实现九宫格提示超出数量


经常在某些 app 中看到这样的九宫格设计。当缩略图不足 9 张时,正常排列,当超过 9 张时,会提示还剩多少张,如下:


60ec7b607ba62.png


如何使用纯 CSS 实现这一效果呢?一起来看看吧

一、九宫格布局

布局就很简单了,一个很普通的九宫格布局,这里使用 grid

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

这里正方形可以用aspect-ratio简易实现,对应的 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*/}

效果如下


60ec7bb63c3ab.png

那么,如何实现在超过9张时自动提示剩余张数呢?接着往下看

二、CSS 计数器

提到序列,自然会想到 CSS 计数器,现在我们加上计数器

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

然后在每一个 .item显示数字,可以用到伪元素::after

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

这样可以得到如下效果

60ec7c0b5e466.png

数字是显示出来了,不过现在还有两个问题:

数量超过9个时,不会隐藏超过的图片

这个数字不是超出图片的数量,而是总数


三、 隐藏超出的图片

这个其实非常容易,由于数量是固定的,只需要利用选择器 nth-child 配合~就能实现

.item:nth-child(9)~.item{    /*选择第9个以后的元素*/    visibility: hidden;}

60ec7c4c7faec.png

这个地方是通过 visibility: hidden隐藏超过的图片,原因是该属性不会影响计数器的计算,如果使用display:none则会跳过计数

四、 统计超过的数量

目前由于是从第1个开始计数,所以最后统计的是整个列表的数量,但是我们可以指定从第10个才开始计数,会得到什么效果呢?为了方便演示,暂时把隐藏打开

.item{    /*counter-increment: count;*/}.item:nth-child(9)~.item{    /*从第10个开始计数*/    counter-increment: count;}.item:nth-child(9)~.item::after{    content: counter(count);}

60ec7c8b14e72.png

可以看到,从第10个开始计数后,最后一个数字就表示还剩余多少张

现在把最后一张放在右下角就行了(绝对定位),最后一张可以用 .item:nth-child(9)~.item:last-child 来选择,表示第9张后面的最后一张图片,实现如下

.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);}

这样就实现了纯 CSS 自动提示剩余图片的效果,演示如下

6.gif

这里的 add 和 remove 是演示动态修改节点数量,与交互逻辑无关

完整代码可访问 list-counter (codepen.io)

五、其他初始化方式

在上一种实现方式中,我们是手动指定从第 10 个元素开始计数的

.item:nth-child(9)~.item{    /*从第10个开始计数*/    counter-increment: count;}

其实,还有一种方式也值得一试,那就是直接指定计数器的初始值,默认为0,现在改为 -9 就可以了,实现如下

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

60ec7d389eb3a.png

不一样的初始化思路,剩下的就和之前一样的逻辑了,完整代码可访问 list-counter-reset (codepen.io)

六、总结和说明

这个案例到这里就结束了,一个低成本的 CSS 小技巧,虽然不多,但是非常实用,尤其是选择器的运用,说不定将来哪次就会用上了。CSS 计数器可以说是非常灵活和强大了,仔细挖掘应该还能实现更多实用的效果,这里总结一下:

九宫格布局如果不考虑兼容性优先使用 grid 布局

自适应正方形可以使用 aspect-ratio 实现

遇到和序列有关的布局,优先考虑 CSS 计数器

灵活运用 CSS 选择器,nth-child(n)和 ~ 可以组合选择第 n 个以后的元素

可以指定从第 n 个元素开始计数

可以指定计数器的初始值

CSS 计数器没有兼容性问题,可以放心使用


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈CSS如何实现九宫格提示超出数量

相关文章

  • 2022-04-29Photoshop设计金属颓废效果的海报标题字
  • 2022-04-29微信小程序反编译提取源代码方法
  • 2022-04-29Illustrator制作超有质感立体矢量LOGO
  • 2022-04-29uniapp怎么实现小程序页面的自由拖拽功能
  • 2022-04-29Photoshop制作细腻光滑的黄金艺术字教程
  • 2022-04-29Thinkphp3.2 畅言评论回推接口制作
  • 2022-04-29WordPress子分类页面使用父分类页面模板
  • 2022-04-29织梦系统“模块管理”里面的“模块列表”显示
  • 2022-04-29PS制作金属字教程
  • 2022-04-29CSS3怎么实现动画结束不消失效果

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Photoshop打造超酷的火焰图形
    • 帝国CMS7.5使用TAGSID实现伪静态调用方法
    • uniapp上如何实现安卓app微信登录功能(操作流程总结)
    • 网站链接健康检查需要做的十件事情
    • CentOS7如何使用yum安装PHP7.3
    • 遇到的uni-app的坑(uni-easyinput清空值,datetimerange置空)
    • Photoshop制作破碎玻璃字体效果教程
    • CDR设计制作漂亮婚庆字体
    • PS制作质感的立体字
    • Photoshop绘制逼真的毛线衣图标教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有