美文网首页让前端飞前端开发
如何用js改变伪元素的样式?

如何用js改变伪元素的样式?

作者: littleyu | 来源:发表于2019-05-17 14:04 被阅读5次

    在工作偶尔会遇到改变伪元素样式的场景,虽然也有很多解决方法,
    但是这个方法能让你像操作正常元素一样操作伪元素样式

    function ruleSelector(selector) {
      function uni(selector) {
        return selector.replace(/::/g, ':')
      }
      // es6
      return Array.from(document.styleSheets).reduce((a,b) => {
        return a.concat(Array.from(b.cssRules))
      }, []).filter(x => {
        return uni(x.selectorText) === uni(selector);
      })
      // es5
      // return Array.prototype.filter.call(Array.prototype.concat.apply([], Array.prototype.map.call(document.styleSheets, function (x) {
      //   return Array.prototype.slice.call(x.cssRules);
      // })), function (x) {
      //   return uni(x.selectorText) === uni(selector);
      // });
    }
    
    var toggle = false,
      pseudo = ruleSelector("ref::before").slice(-1);
    
    document.querySelector("article").onclick = function () {
      pseudo.forEach(function (rule) {
        if (toggle = !toggle)
          rule.style.color = "red";
        else
          rule.style.color = "black";
      });
    }
    

    相关文章

      网友评论

        本文标题:如何用js改变伪元素的样式?

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