css中:last-child不生效的解决方法


Posted in HTML / CSS onAugust 05, 2022

在产品需求中,总有对第一个或者最后一个同类元素进行特殊的样式处理。

如果使用js来判断哪个是第一个、最后一个也并不是不可以。
但是,完全属于css的管理范围为什么要去使用js呢?

css选择器出场!

下面仅展示:last-child效果

1.期望效果

代码展示:

<template>
  <div class="root-container">
    <div class="father">
      <div class="child" v-for="item in 10" :key="item">
        一共10个元素,我是第{{item}}个
        <template v-if="item== 10">(css控制我的颜色)</template>
      </div>
    </div>
  </div>
</template>
<style lang='scss' scoped>
.father {
  width: 500px;
  border: 1px solid #b2b6b6;
  text-align: center;
  .child {
    padding: 10px 0;
    &:last-child {
      color: red;
    }
  }
}
</style>

展示的效果也和期望中的一样,最后一个元素文字为红色

css中:last-child不生效的解决方法

2. 非期望效果

但有时候:last-child实现的却和想象中的 不太一样!!!!
代码如下:

<template>
  <div class="root-container">
    <div class="father">
      <div class="child" v-for="item in 10" :key="item">
        一共10个元素,我是第{{item}}个
        <template v-if="item== 10">(css控制我的颜色)</template>
      </div>
      <p>我是多余的元素</p>
    </div>
  </div>
</template>
<style lang='scss' scoped>
.father {
  width: 500px;
  border: 1px solid #b2b6b6;
  text-align: center;
  .child {
    padding: 10px 0;
    &:last-child {
      color: red;
    }
  }
}
</style>

看代码也可以看出来,仅仅是多了一个p标签,明明把:last-child是设置给了.child,但是需要的效果却没有了。

css中:last-child不生效的解决方法

3. 分析问题

为什么:last-child没有起作用?

3.1 el:last-child 的匹配规则

1.查找 el 选择器匹配元素的所有同级元素(siblings)

2.在同级元素中查找最后一个元素

3.检验最后一个元素是否与选择器 el 匹配

期望中的效果实现了,是因为el:last-child匹配到的最后一个元素也是.child
非期望效果出现,是因为el:last-child匹配到的最后一个元素也是p标签而不是.child

4. 解决办法

方法1、
:last-child在其父元素内没有其它的标签,即让其父元素仅包含该种类型标签

方法2、
使用其它标签选择器:last-of-type
具体使用规则 :last-of-type — MDN

css中:last-child不生效的解决方法

到此这篇关于css中:last-child不生效的解决方法的文章就介绍到这了,更多相关css :last-child不生效内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
css3实现信纸/同学录效果的示例代码
Dec 11 HTML / CSS
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
Aug 15 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
Aug 25 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
Jan 12 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
Jan 17 HTML / CSS
CSS3 实现童年的纸飞机
May 05 HTML / CSS
Html5剪切板功能的实现代码
Jun 29 HTML / CSS
HTML5中5个简单实用的API
Apr 28 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
Dec 06 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
Dec 08 HTML / CSS
HTML5拖拽文件上传的示例代码
Mar 04 HTML / CSS
CSS的class与id常用的命名规则
May 18 HTML / CSS
CSS浮动引起的高度塌陷问题
Aug 05 #HTML / CSS
使用CSS实现六边形的图片效果
Aug 05 #HTML / CSS
el-form每行显示两列底部按钮居中效果的实现
Aug 05 #HTML / CSS
纯CSS打字动画的实现示例
Aug 05 #HTML / CSS
新的CSS 伪类函数 :is() 和 :where()示例详解
前端使用svg图片改色实现示例
Jul 23 #HTML / CSS
详解flex:1什么意思
Jul 23 #HTML / CSS
You might like
PHP mail()函数使用及配置方法
2014/01/14 PHP
PHP调用.NET的WebService 简单实例
2015/03/27 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
详解Vue之事件处理
2020/07/10 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python标准库shutil用法实例详解
2018/08/13 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
应届生.NET方向面试题
2015/05/23 面试题
策划主管的工作职责
2013/11/24 职场文书
教师求职信范文分享
2013/12/27 职场文书
安全教育实施方案
2014/03/02 职场文书
小学老师寄语大全
2014/04/04 职场文书
超市商业计划书
2014/05/04 职场文书
审计班子对照检查材料
2014/08/27 职场文书
门球健将观后感
2015/06/16 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android