js如何控制css伪元素内容(before,after)

原文: js如何控制css伪元素内容(before,after)

js如何控制css伪元素(before,after)

@(CSS 笔记)[伪元素|css3]
曾经遇到的问题,在对抗UC浏览器屏蔽须要把内容输出到css 伪元素中输出。有个疑问如何用js控制它。因而在segmentfault提问,以下是对问题的整理:css

如何用js控制css伪类afterhtml

简单粗暴的方式:

简单粗暴的方式,直接在html中添加样式覆盖掉以前样式规则css3

<style>
	p:after{content:'我是后缀'}
</style>
<p>正文内容</p>

<script>
var css=function(t,s){
    s=document.createElement('style');
    s.innerText=t;
    document.body.appendChild(s);
};

document.onclick=function(){
    css('p:after{content:\'修改一下\'}');
};
</script>

进化版

这样写了功能实现了,优雅欠佳,做为进化版,其实就是用class名来重写样式,segmentfault

p:after{content:'我是后缀'}
p.change{content:'我是修改过的后缀'}

只要在须要的时候,给p标签添加change这个class就能够实现替换的目的。原理和第一个没什么区别。这样写的好处是,改变起来更优雅灵活,用class作了个钩子。浏览器

再进化版

上个版本已经解决了切换的问题,若是有更多能够不断的切换class,可是想下这种方式也仍是有点笨重,由于可能要写不少css,若是是想换的内容是不肯定的,须要用变量来处理呢?这时候,可能会想到用 第一种方法就能够了,可是第一种方式真的不是很优雅。还有什么方式呢?
在css中,伪元素的content是能读取到data属性的。
也就是说咱们能够这样写cssapp

p:after {
	content: attr(data-content);
}

在进化版是第二版的变种,post

css文件this

p.change:after {
	content: attr(data-content);
}

js文件url

$(this).addClass('change').attr('data-content', content);

这样你就能够随意改动了。.net

不是终极版的终极版

最后一种方法是由bumfod提供方法很hack了,遍历了全部的css文档,找到伪元素,而后更改,有兴趣的同窗能够尝试下
http://jsfiddle.net/s3fv8e5v/4/

相关文章
相关标签/搜索