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 相关文章推荐
实现只能输入数字的input不用replace方法
Sep 12 Javascript
jQuery插件scroll实现无缝滚动效果
Apr 27 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
Jul 29 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
Aug 25 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
Bootstrap进度条实现代码解析
Mar 07 Javascript
AngularJS表单验证功能
Oct 19 Javascript
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
vue1.0和vue2.0的watch监听事件写法详解
Sep 11 Javascript
node.js中express模块创建服务器和http模块客户端发请求
Mar 06 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
react antd表格中渲染一张或多张图片的实例
Oct 28 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
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
javascript中的几个运算符
2007/06/29 Javascript
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
Vue.js移动端左滑删除组件的实现代码
2017/09/08 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
selenium自动化测试入门实战
2020/12/21 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
介绍一下Linux中的链接
2016/06/05 面试题
发展部经理职责规定
2014/02/22 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP