前端常见bug系列1:容易被误解的:last-child 和 :first-child

用某个选择器过滤出来一个元素集合,当我们想选中最后一个元素的时候,是不是很容易想到:last-child?比如,有下面一段CSS和HTML片段:

<style>
        .section{
            margin-bottom: 50px;
        }

        .section1-item:last-child{
            color: blue;
        }
</style>
<section class="section section1">
        <header>header</header>
        <p class="section1-item card">111</p>
        <p class="section1-item card">222</p>
        <p class="section1-item card">333</p>
        <p class="section1-item card">444</p>
        <footer>footer</footer>
</section>

本来是想选中<p class="section1-item card">444</p>给它设置颜色为蓝色的,结果什么也没有发生。为什么?

查看W3C的相关介绍

The :last-child pseudo-class represents an element that is the last child of some other element.

someselecttor:last-chid 所表示的是,如果someselecttor所选中的某个节点恰好是其父元素的最后一个直接子节点,那么该选择器生效。而不是表示someselecttor选中的节点集合的最后一个。

同理,我们马上可以想到,:first-child是不是也有类似问题?添加一句样式.section1-item:last-child{ color: red; }到上面的例子中一试就知道,问题果然存在。

someselecttor:first-chid 所表示的是如果someselecttor所选中的某个节点恰好是其父元素的第一个直接子节点,那么该选择器生效。

时间: 2024-12-20 22:18:59

前端常见bug系列1:容易被误解的:last-child 和 :first-child的相关文章

前端常见bug系列4: JavaScript中忘记类型转换所导致的条件判断错误举例

一.忘记类型转换的小数比较错误 举个例子,我们要进行一个字符串型的小数的比较:'8.8'>'8.7',结果自然是true. 那么'8.8'>'8.10'呢?结果仍然是true,但愿你没有将它误以为是8.8>8.10. 二.忘记类型转换的版本号比较错误 类似上面的问题,在进行版本号比较时,一样存在.比如,我们这么比较'8.8.1'>'8.10.1',结果就是错误的.合理的比较方法应该是将两个待比较的版本号按'.'作为分隔符进行拆分,并将每一位转换成数字,然后按位比较. 三.字符串型的

前端常见bug系列3:&lt;input type=&quot;text&quot;&gt;中emoji表情与文字并存时表情被截掉一部分

比如,有这个一个demo页面: <head> <meta charset="UTF-8"> <meta name="format-detection" content="telephone=no, address=no, email=no, time=no"> <meta name="viewport" content="width=device-width,user-sca

前端常见bug系列2::last-of-type 和 :first-of-type的误用

上一篇中曾提到,someselecttor:last-chid 所表示的并不是someselecttor选中的节点集合的最后一个.那么,怎么达到这个效果呢?对,可以用:last-of-type.来个例子试试看吧! <style> .section{ margin-bottom: 50px; } .section1-item:last-of-type{ color: green; } </style> <section class="section section1&

前端常见兼容性问题系列1:丢失的CSS补间动画

[前言] 有人说,前端开发的过程常常就是一个不断"入坑"和"出坑"的.这句话道出了前端开发中的磕磕绊绊以及相伴而来的成长.遗憾的是,这些成长大都只存储在工程师的脑海里,日复一日的,相信总有不少人花掉昂贵的时间在重复解决着同样的"坑". Stack Overflow是我们查找一些常见bug解决办法的好帮手,但我们每天也遇到各式各样的新问题以及有一定独特性的问题.若能花一点精力将自己遇到的问题.思考过程.解决方案.延伸感悟等记录下来,让经验更具延续性

Web项目添加Maven支持后的常见bug和错误

最近,对现有的Web项目添加Maven支持,结果出现了好多的bug,只好google查找原因,在此记录下 ,给自己和他人一个方便: 1.Maven命令执行失败,却没有出错信息  --> 可重新执行一次! 2.BaseConst.java:[1,0] 非法字符:\65279  --> 使用 notepad++ 工具打开之后,发现该文件格式为 UTF-8 (含BOM)格式,如下图: 开发常见bug"> 改为"UTF-8 无 BOM格式编码"即可. 分析:有可能是

C语言内存分配管理常见bug

标准C库提供了4个内存管理函数:malloc.calloc.realloc和free. bug1 调用free释放p指向的内存块之后,p就是一个悬挂指针--指向逻辑上不存在的内存的指针.如果引用这个悬挂指针,会导致不可预见的错误. ElemType* p = (ElemType*)malloc(sizeof(ElemType) * NUM); ... free(p);// p = NULL; ... *p = "..."; bug2 释放空闲内存,破坏内存管理函数所用的数据结构. El

JavaScript lodash常见用法系列小结_javascript技巧

lodash一开始是Underscore.js库的一个fork,因为和其他(Underscore.js的)贡献者意见相左.John-David Dalton的最初目标,是提供更多"一致的跨浏览器行为--,并改善性能".之后,该项目在现有成功的基础之上取得了更大的成果,并于一月份发布了3.0版本. 下面给大家说下javascript lodash知识,具体详情如下所示: 1 _.compact用法 _.compact([0, 1, false, 2, '', 3,'mm']); var

前端常见兼容问题系列5:¥符号在部分Android APP的WebView中不见了

问题再现 ¥符号在涉及到售卖的页面再常见不过了.但是,测试中居然发现,华为荣耀6 plus(系统4.4.2)上,某APP中该符号不见了,所有用到该符号的地方均成了空白(如图1所示). (图1) 而实际上,我所期望的效果如图2所示: (图2) 分析过程 莫非是编码不对?首先,来看一下我是怎么实现¥这个符号的--用的是CSS,形如 .price:before{ content:'\A5'; display:block; font-size:12px; } 的伪元素. 发现这个问题之后,我尝试把它直接

前端常见兼容问题系列3:永远置于顶层的video

上一篇我们把消失的video找了出来.这一篇我们接着在video上面遮盖一个层,以方便放置一些内容.于是,我们这么做: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="format-detection" content="telephone=no, address=no, email