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 相关文章推荐
JQuery AJAX提交中文乱码的解决方案
Jul 02 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
Jan 10 Javascript
js判断数组key是否存在(不用循环)的简单实例
Aug 03 Javascript
仿iframe效果Aajx文件上传实例
Nov 18 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
May 17 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
May 25 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 Javascript
vue-cli3跨域配置的简单方法
Sep 06 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
JS继承实现方法及优缺点详解
Sep 02 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
php 操作调试的方法
2012/07/12 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
常用的js方法合集
2017/03/10 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
python回调函数的使用方法
2014/01/23 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
django中media媒体路径设置的步骤
2019/11/15 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
金融专业个人求职信范文
2013/11/28 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
大学生毕业个人总结
2015/02/15 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
旅游安全责任协议书
2016/03/22 职场文书
导游词之河北邯郸
2019/09/12 职场文书
vue自定义右键菜单之全局实现
2022/04/09 Vue.js