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学习笔记-详解in运算符
Sep 13 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
28个常用JavaScript方法集锦
Jan 14 Javascript
探索angularjs+requirejs全面实现按需加载的套路
Feb 26 Javascript
基于javascript html5实现多文件上传
Mar 03 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
详解React项目中碰到的IE问题
Mar 14 Javascript
在vue中实现echarts随窗体变化
Jul 27 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 Javascript
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
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
网络资源
2006/10/09 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
Python将主机名转换为IP地址的方法
2019/08/14 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
Python单链表原理与实现方法详解
2020/02/22 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
.NET程序员的几道面试题
2012/06/01 面试题
一道Delphi上机题
2012/06/04 面试题
高中政治教学反思
2014/01/18 职场文书
十一酒店活动方案
2014/02/20 职场文书
春节请假条
2014/04/11 职场文书
Python基础知识学习之类的继承
2021/05/31 Python