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 相关文章推荐
js 鼠标点击事件及其它捕获
Jun 04 Javascript
javascript 面向对象思想 附源码
Jul 07 Javascript
javascript 自动填写表单的实现方法
Apr 09 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
Nov 22 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
Jan 06 Javascript
jQuery将表单序列化成一个Object对象的实例
Nov 29 Javascript
详解vue-cli 构建Vue项目遇到的坑
Aug 30 Javascript
详解react服务端渲染(同构)的方法
Sep 21 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
浅析vue插槽和作用域插槽的理解
Apr 22 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
Nov 06 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
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
实例解析Array和String方法
2016/12/14 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
js实现小星星游戏
2020/03/23 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
Python循环结构的应用场景详解
2019/07/11 Python
django迁移文件migrations的实现
2020/03/31 Python
Python 代码调试技巧示例代码
2020/08/11 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
Internal修饰符有什么含义
2013/07/10 面试题
幼师求职自荐信范文
2014/01/26 职场文书
代理商会议邀请函
2014/01/27 职场文书
预备党员承诺书
2014/03/25 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
人生遥控器观后感
2015/06/11 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript