我的编程空间,编程开发者的网络收藏夹
学习永远不晚

CSS怎么实现九宫格提示超出数量

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

CSS怎么实现九宫格提示超出数量

这篇文章主要介绍“CSS怎么实现九宫格提示超出数量”,在日常操作中,相信很多人在CSS怎么实现九宫格提示超出数量问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS怎么实现九宫格提示超出数量”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

CSS怎么实现九宫格提示超出数量

如何使用纯 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;
}

效果如下

CSS怎么实现九宫格提示超出数量

那么,如何实现在超过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;
}

这样可以得到如下效果

CSS怎么实现九宫格提示超出数量

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

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

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

三、 隐藏超出的图片

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

.item:nth-child(9)~.item{
  
  visibility: hidden;
}

CSS怎么实现九宫格提示超出数量

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

四、 统计超过的数量

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

.item{
  
}
.item:nth-child(9)~.item{
  
  counter-increment: count;
}
.item:nth-child(9)~.item::after{
  content: counter(count);
}

CSS怎么实现九宫格提示超出数量

可以看到,从第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 自动提示剩余图片的效果,演示如下

CSS怎么实现九宫格提示超出数量

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

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

五、其他初始化方式

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

.item:nth-child(9)~.item{
  
  counter-increment: count;
}

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

.list{
  
  counter-reset: count -9; 
}

CSS怎么实现九宫格提示超出数量

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

六、总结和说明

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

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

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

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

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

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

  • 可以指定计数器的初始值

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

到此,关于“CSS怎么实现九宫格提示超出数量”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

CSS怎么实现九宫格提示超出数量

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用css怎么实现超出两行显示省略

本篇文章为大家展示了使用css怎么实现超出两行显示省略,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。css实现超出两行显示省略的方法:首先创建一个HTML示例文件;然后在body中定义好文字内容;最
2023-06-14

css怎么实现超出三行则只显示一行

css实现超出三行则只显示一行的方法:1、打开相应的HTML文件;2、通过给文本标签设置css属性为“.text_singlerow {display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}”实现单行显示即可。
2023-05-14

怎么用css实现超出显示省略号效果

CSS中的超出省略是指当一个元素内的文本超出了其容器的宽度或高度时,通过CSS的属性设置来以省略号的形式来显示该文本内容的一种方式。一般情况下,文本溢出时浏览器会自动将文本换到下一行进行显示。但是在某些情况下,特别是在移动端或者响应式设计中,我们希望将文本内容显示在一行内,并在文本超出容器宽度时以省略号的形式进行显示。而CSS中的超出省略属性就可以帮我们实现这一效果。这里介绍一
2023-05-14

CSS怎么实现超出隐藏显示省略号效果

CSS超出隐藏显示省略号在网页排版中,我们经常需要限制某些元素的宽度或高度,当宽度或高度超过限制时,如何展示文本内容是一件很重要的事。通常,我们可以使用CSS中的超出隐藏(overflow:hidden)属性来限制元素内容的显示。但是,在内容被隐藏的情况下,可能会有一些重要信息被省略掉,这对于用户来说是不友好的。所以,我们需要使用CSS的省略号选项,来让用户知道文本内容被省略了
2023-05-14

css怎么实现超出部分显示省略号效果

在网页设计中,经常会遇到文字超出容器的情况。如果不处理,这不仅会破坏页面的美感,还会影响网页的可读性。那么,如何处理文字超出容器的情况呢?一种解决方法是使用CSS的文字超出部分显示省略号的属性。一、CSS中的“text-overflow”属性在CSS中,有一个名为“text-overflow”的属性可以实现文字超出部分显示省略号的效果。它可以应用于块级元素或行内块级元素,用于控
2023-05-14

编程热搜

目录