美文网首页
js无法获取伪类的详解

js无法获取伪类的详解

作者: 代艳霞 | 来源:发表于2019-07-15 22:41 被阅读0次

今天在修改别人的项目的时候,有个逻辑是:点击某个元素进行其他样式的切换,然后我习惯性的用jQuery来进行元素的选取,但是失败了,因为需要点击的元素是个伪类after,但是我不知道为什么会选取失败,之前页面没有遇到过类似的问题,于是查了相关文档,再根据自己以前对浏览器渲染原理的理解,我首先猜测可能js操作DOM而这些伪类虽然可以设置样式,但是不一定存在DOM树上,所以无法获取,为此我开始自己的测试,想找到最终的原因以免以后再遇到类似的问题无法解决。

  1. 首先给元素设置伪类样式,如下图:
设置伪类
  1. 然后进行伪类以及伪元素的获取,结果如下图
获取伪类及伪元素

看到这个结果,更让我纳闷了,同样是伪类的写法,为什么first-child可以获取到元素而after却不可以,然后我有看了js的原理,再想起之前看的浏览器的渲染原理的流程图,最终得出了自己的结论:

js是操作DOM的,也就是元素首先要存在于DOM树上,js才可以获取,显然 first-child显然是存在于DOM上的,所以可以获取到;
after它并不存在于DOM,那既然它不存在DOM,又为什么可以设置样式呢?
这就需要我们了解一下浏览器渲染的流程图了,如下:

浏览器渲染流程图

此图很好的解释了我的疑问, after之所以可以设置样式,是因为它存在于 CSSOM,而浏览器最终展示给用户的页面是 DOMCSSOM共同组成了 Render Tree,一个控制样式,一个来控制结构。一个小小的问题,记录一下,因为它让我对 jscss有了更深的理解。

相关文章

  • js无法获取伪类的详解

    今天在修改别人的项目的时候,有个逻辑是:点击某个元素进行其他样式的切换,然后我习惯性的用jQuery来进行元素的选...

  • 2018-05-27

    这周主要研究了CSS的伪类和伪元素,所谓的伪元素就是你无法用JS获取到这个伪元素,或者增删改,可以用它完成视觉上的...

  • 伪类

    before、after伪类详解

  • 如何用js改变伪元素样式

    通常设置伪元素的样式直接用CSS很方便 可是有时候想用js动态的去改变伪元素的样式,但是js获取不到伪元素,这就很...

  • 【css】常用样式

    伪类样式获取父类变量值 解决连续图片的间距

  • call,apply,bind的实际应用

    call,apply,bind详解传送门 求数组中的最大和最小值 将伪数组转化为数组 js中的伪数组(例如通过do...

  • 前端学习Day10

    伪类选择器和伪类元素 伪类专门用于表示元素的某种状态,比如访问过的超链接,获取焦点的文本框 当我们需要为元素的某种...

  • 伪类与伪元素详解

    伪类: 伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的.比如说,当用户...

  • CSS伪类的详解

    既然说到伪类,这里就用足够的代码给表现一下他们的神奇用法。从简单到复杂,可以清晰的看清到伪类的诸多使用方法,对于有...

  • js的类详解

    Javascript从当初的一个“弹窗语言”,一步步发展成为现在前后端通吃的庞然大物。javascript的受欢迎...

网友评论

      本文标题:js无法获取伪类的详解

      本文链接:https://www.haomeiwen.com/subject/xgfakctx.html