旧文章从语雀迁移过来,原日期为2021-07-14

问题

当时写在写一个列表,列表每一项需要下面加下划线,最后一项不加下划线。第一时间,想到使用 :``last-child 这个伪类来实现。

当时的代码出来的 HTML 片段大致是这样的(省略号代表还有其他元素):

<div class="list-box">
<div class="list-item">...</div>
<div class="list-item">...</div>
<div class="list-item">...</div>
<!-- 最后两行是由vant的list组件添加的 -->
<div class="van-list__finished-text">沒有更多數據了</div>
<div class="van-list__placeholder"></div>
</div>

样式是这样的:

.list-item {
border-bottom: #eaeaea 1px solid;
}
.list-item:last-child {
border-bottom: 0;
}

然后一直没搞明白,为啥最后一行的底部还有下划线呢。

思考

于是我查了 last-child 的定义:

:last-child CSS 伪类 代表父元素的最后一个子元素。

这句定义的重点是元素。

然后我得到第一次的推断:只是通过 :list-item 来定位到父元素而已, :list-child 依然会在父元素上去找最后一个子元素

于是我有写了另外一个例子:

<style>
.list-box {
width: 200px;
} .list-box .list-item {
background: red;
height: 100px;
} .list-box div {
background: yellow;
height: 100px;
} .list-box .list-item:last-child {
background: green;
}
</style>
<body>
<div class="list-box">
<div class="list-item">111</div>
<div class="list-item">222</div>
<div class="list-item">333</div>
<div>沒有更多數據了</div>
</div>
</body>

结果最后一个 div 并没有变绿,所以证明我得推测是错误的。



然后我又改变了例子,把最后一个样式修改为:


.list-box div:last-child {
background: green;
}

就生效了:



那就可以得出结论了:

对于样式 selector:last-child ,要想目标元素生效:既要满足 selector 选择器,还要是当前选择器的父元素最后一个元素。

**

last-child可能你也会踩的坑的更多相关文章

  1. 小程序canvas生成二维码图片踩的坑

    1:生成临时图片,保证画布被加载以及渲染(即本身不可以 hidden 或是 上级元素不可以 hidden 或是 wx:if 隐藏等) == > 建议:因为 canvas 的组件层级(z-inde ...

  2. celery开发中踩的坑

    celery开发中踩的坑 celery连接redis 当使用redis做broker,redis连接需要密码时: BROKER_URL='redis://:xxxxx@127.0.0.1:6379/0 ...

  3. 从零开始学 Java - Spring 支持 CORS 请求踩的坑

    谁没掉进过几个大坑 记得好久之前,总能时不时在某个地方看到一些标语,往往都是上面一个伟人的头像,然后不管是不是他说的话,下面总是有看起来很政治正确且没卵用的屁话,我活到目前为止,最令我笑的肚子痛得是下 ...

  4. webuploader插件,我踩得坑

    我在目前的公司做的项目要么是原生写法去做项目,要么就是vue+webpack做项目,但是vue这部分只是用了模板template,vue其他的都没用. 有一个项目需要做上传图片的功能,老大扔给我一个插 ...

  5. 谈谈调用腾讯云【OCR-通用印刷体识别】Api踩的坑

    一.写在前面 最近做项目需要用到识别图片中文字的功能,本来用的Tesseract这个写的,不过效果不是很理想. 随后上网搜了一下OCR接口,就准备使用腾讯云.百度的OCR接口试一下效果.不过这个腾讯云 ...

  6. Asp.Net Core中使用Swagger,你不得不踩的坑

    很久不来写blog了,换了新工作后很累,很忙.每天常态化加班到21点,偶尔还会到凌晨,加班很累,但这段时间,也确实学到了不少知识,今天这篇文章和大家分享一下:Asp.Net Core中使用Swagge ...

  7. python绘图踩的坑

    踩的坑 pyecharts安装地图包 pip install echarts-countries-pypkg 报错Unknown or unsupported command 'install' 这可 ...

  8. 使用CCNode作为容器容易踩的坑

    Cocos2dx中CCNode经常作为一个父容器,里面装一些UI控件,最后组成一个复杂的自定义的UI控件,但是在使用别人的自定义控件和自己写自定义问题的时候会踩一些坑. 首先拿到一个自定义的UI控件一 ...

  9. java基础不牢固容易踩的坑

    java基础不牢固容易踩的坑 经过一年java后端代码以及对jdk源码阅读之后的总结,对java中一些基础中的容易忽略的东西写下来,给偏爱技术热爱开源的Coder们分享一下,避免在写代码中误入雷区. ...

  10. Ubuntu中安装FTP 服务器自己踩得坑

    12点多了,擦!做个码农真不容易呀! 系统:Ubuntu16.04 安装:FTP 步骤: 1.不管有没有一上来我先卸载: sudo apt-get purge vsftpd 2.再安装:sudo ap ...

随机推荐

  1. day04-MySQL常用函数01

    5.MySQL常用函数 5.1合计/统计函数 5.1.1合计函数-count count 返回行的总数 Select count(*)|count (列名) from table_name [WHER ...

  2. ETL工具Datax、sqoop、kettle 的区别

    一.Sqoop主要特点: 1.可以将关系型数据库中的数据导入到hdfs,hive,hbase等hadoop组件中,也可以将hadoop组件中的数据导入到关系型数据库中: 2.sqoop在导入导出数据时 ...

  3. Ruoyi字典源码学习

    此文章属于ruoyi项目实战系列 使用目的 什么是字典数据:具体的值(0,1,"Y","N"),对应具体的业务逻辑("男","女& ...

  4. for循环及range内置方法

    目录 while循环补充说明 流程控制之for循环 range方法 rang实战案例 作业 """ 1.先写注释(思维逻辑和想法) 2.先考虑主体功能 在考虑附加功能 & ...

  5. HTTP缺点有哪些,如何解决

    前言 大家好,我是蜗牛,在上一篇中,我们介绍了不同版本的HTTP区别和发展背景,这篇文章我们来聊聊HTTP的缺点,HTTP缺点大致总结有以下三点: 通信使用明文(不加密),内容可能会被窃听. 不验证通 ...

  6. Flink WordCount入门

    下面通过一个单词统计的案例,快速上手应用 Flink,进行流处理(Streaming)和批处理(Batch) 单词统计(批处理) 引入依赖 <!--flink核心包--> <depe ...

  7. 最全iOS 上架指南

    一.上架基本需求资料 1.苹果开发者账号(公司已有可以不用申请,需要开通开发者功能,每年 99 美元) 2.开发好的APP 二.证书 上架版本需要使用正式的证书 1.创建证书 Apple Develo ...

  8. 类视图函数 VIEW

    常用的视图函数: ListView.DetailView.UpdateView 1 ListView object_list:此属性表示对象的列表 常用场景: 1.展示数据库中信息: 2.在展示信息时 ...

  9. MongoDB - 入门指南

    组件结构 核心进程 在 MongoDB 中,核心进程主要包含了 mongod.mongos 和 mongosh 三个. 其中最主要的是 mongod 程序,其在不同的部署方案中(单机部署.副本集部署. ...

  10. IOT黑客入门篇之初探Badusb

    什么是Badusb?   BadUSB是一种使用带有恶意软件编程的USB设备的计算机安全攻击.例如,USB 闪存驱动器可以包含可编程的Intel 8051微控制器,该微控制器可以重新编程,将USB闪存 ...