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控制阿拉伯数字转为中文大写示例代码
Sep 04 Javascript
纯Javascript实现Windows 8 Metro风格实现
Oct 15 Javascript
JS制作简单的三级联动
Mar 18 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
Oct 28 Javascript
js实现增加数字显示的环形进度条效果
Feb 05 Javascript
解决使用vue.js路由后失效的问题
Mar 17 Javascript
Vue修改项目启动端口号方法
Nov 07 Javascript
基于js实现逐步显示文字输出代码实例
Apr 02 Javascript
详解Vue串联过滤器的使用场景
Apr 30 Javascript
jQuery HTML css()方法与css类实例详解
May 20 jQuery
nuxt 每个页面head标签内容设置方式
Nov 05 Javascript
vue引入Excel表格插件的方法
Apr 28 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
对Session和Cookie的区分与解释
2007/03/16 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
js获取php变量的实现代码
2013/08/10 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
python_mask_array的用法
2020/02/18 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
蛋糕店的商业计划书范文
2014/01/27 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
实验室的标语
2014/06/20 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
春风化雨观后感
2015/06/11 职场文书
公司开业致辞
2015/07/29 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
入门学习Go的基本语法
2021/07/07 Golang
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers