使用JavaScript修改伪类样式的方法

前言

项目中时常会需要用到使用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>

Javascript:

// 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‘);

原文地址:https://www.cnblogs.com/kunmomo/p/12358005.html

时间: 2024-08-02 13:48:06

使用JavaScript修改伪类样式的方法的相关文章

用JS修改伪类/元素的样式

在不能修改HTML和CSS的前提下,如果要用JS修改伪类可以这样做: 原本的代码: <style> li:before{content:"·"} </style> <ul> <li>日曜日</li> <li>月曜日</li> <li>火曜日</li> <li>水曜日</li> <li>木曜日</li> <li>金曜日&l

动态修改 dom 元素的伪类样式

最近写代码,需要修改伪类的 content 属性,不想定义两个样式进行切换,而是直接通过 js 进行修改. html 中的伪类(如 a:hover / a:link / class::before / clss::after 等),因为不是 dom 元素,所以 不能直接通过 js 修改其属性,虽然可以通过 切换 dom 元素的 css 样式名进行修改,但是这样就比较复杂了. 参考了一个 帖子 然后进行了一些修改,大概思路如下: 这里使用  windows 8 的工程,js 代码直接写在 defa

js修改伪类before边框颜色

在touch中,我们常用的1px边方案就是通过伪类+transform的scale来缩放伪类元素,达到1像素边的方案. 但是在实际的项目中,经常会存在希望通过后台配置来控制前端样式的展示,例如通过配置来实现边框颜色的修改.此时需要动态的使用js动态的修改before的style属性. 常见的方法有 动态创建style标签,然后生成新类名的伪类样式来覆盖原有的样式 伪代码如下: var color = '#9e9e9e' var style = document.createElement('st

CSS中的背景、雪碧图、超链接的伪类样式

一.背景 1.背景颜色 background-color: red; 2.背景图片 background-image: url("../../img/l1.png"); 3.图片填充 background-repeat: no-repeat;(有这三个常用的属性值: no-repeat.repeat-x.repeat-y) 4.背景图片大小 background-size:100% 100%: cover(覆盖):(先让图片水平填满容器)图片等比例缩放,直到最小部分填满容器有可能会出现

CSS基础知识之背景图片样式属性、雪碧图、列表导航栏、超链接的伪类样式、盒子模型、overflow、圆角弧度

目录: 背景图片样式属性 雪碧图 列表导航栏 超链接的伪类样式 盒子模型. overflow. 圆角弧度 背景图片样式属性: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> #imgContainer { border: 20px dotted yellow; padding: 50px; height: 400p

web前端入门到实战:JavaScript中尺寸类样式

一:鼠标尺寸类样式 都要事件对象的配合 Tip:注意与浏览器及元素尺寸分开,鼠标类尺寸样式都是X,Y,浏览器及元素的各项尺寸时Height,Width 1:检测相对于浏览器的位置:event.clientX/event.clientY client:整个浏览器的可视区域,当点击鼠标的时候,鼠标事件发生的位置距离浏览器可视区域的左边和上边的距离 clientX:鼠标事件发生的位置距离浏览器可视区域的左边的距离 clientY:鼠标事件发生的位置距离浏览器可视区域的上边的距离 2:检测相对于屏幕的位

js修改伪类元素样式

<style type="text/css"> .htmlbox_close::before, .htmlbox_close::after { content: ''; position: absolute; height: 2px; top: 4%; width: 3%; left: 2%; margin-top: -1px; background: #51aed9; height: 1.1%; } .htmlbox_close::before { -webkit-tra

javascript获取非行间样式的方法(可以兼容各个浏览器)

实例: HTML: <div id='div1'></div> CSS: #div1{width:200px; height:200px; background:red;} //我们使用currentStyle和getComputedStyle来获取div元素的样式 //我们就单说一下getComputedStyle怎么使用吧!getComputedStyle有两个参数,其中第一个参数指的是你要获取哪个元素的样式,而第二个参数则是一个垃圾,你可以往里面放任何东西,包括你的名字都是可

js修改伪类的值

css文件 p.change:after { content: attr(data-content); } js文件 $(this).addClass('change').attr('data-content', content);