JavaScript实现修改伪类样式


Posted in Javascript onNovember 27, 2017

项目中时常会需要用到使用JavaScript来动态控制为元素(:before,:after)的样式,但是我们都知道JavaScript或jQuery并没有伪类选择器。这里总结一下几种常见的方法。

HTML

<p class="red">Hi, this is a plain-old, sad-looking paragraph tag.</p>

CSS

.red::before {
content: 'red';
color: red;
}

 

方法一

使用JavaScript或者jQuery切换<p>元素的类名,修改样式。

.green::before {
content: 'green';
color: green;
}
$('p').removeClass('red').addClass('green');

 

 

方法二

在已存在的<style>中动态插入新样式。

document.styleSheets[0].addRule('.red::before','color: green');
document.styleSheets[0].insertRule('.red::before { color: green }', 0);

 

方法三

创建一份新的样式表,并使用JavaScript或jQuery将其插入到<head>中

// Create a new style tag
var style = document.createElement("style");

// Append the style tag to head
document.head.appendChild(style);

// Grab the stylesheet object
sheet = style.sheet

// Use addRule or insertRule to inject styles
sheet.addRule('.red::before','color: green');
sheet.insertRule('.red::before { color: green }', 0);

 

jQuery

$('<style>.red::before{color:green}</style>').appendTo('head');

 

方法四

使用HTML5的data-属性,在属性中使用attr()动态修改。

<p class="red" data-attr="red">Hi, this is plain-old, sad-looking paragraph tag.</p>
.red::before {
content: attr(data-attr);
color: red;
}
$('.red').attr('data-attr', 'green');

以上就是我们为大家整理的四种方法,如果大家有更好的方法,可以在下方的留言区讨论。

Javascript 相关文章推荐
javascript十个最常用的自定义函数(中文版)
Sep 07 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
详细介绍8款超实用JavaScript框架
Oct 25 Javascript
浅谈js中对象的使用
Aug 11 Javascript
BootStrap入门教程(一)之可视化布局
Sep 19 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 Javascript
vue 移动端记录页面浏览位置的方法
Mar 11 Javascript
如何在vue中使用jointjs过程解析
May 29 Javascript
vue3.0 加载json的方法(非ajax)
Oct 26 Javascript
Vue.js搭建移动端购物车界面
Jun 28 #Javascript
Vue实现购物车场景下的应用
Nov 27 #Javascript
javascript字体颜色控件的开发 JS实现字体控制
Nov 27 #Javascript
vue购物车插件编写代码
Nov 27 #Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 #Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
Nov 27 #Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 #Javascript
You might like
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
PHP钩子实现方法解析
2019/05/21 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
Hibernate持久层技术
2013/12/16 面试题
师范生自荐信范文
2013/10/06 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
工程资料员岗位职责
2014/03/10 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
公务员年度考核评语
2014/12/31 职场文书
地陪导游欢迎词
2015/01/26 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书