js怎么动态控制伪元素(更改样式、隐藏等)
js控制伪元素
- 1.通过attr()改变伪元素的值
- 2.覆盖原有样式
- (1)css优先级覆盖
- (2)更改class类名覆盖
- (3)内联样式表覆盖
大家应该知道js是不能直接控制伪元素的,所以总结了俩方法。下面是未改变前的代码和实现效果。
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.box{width: 300px;height: 200px;border: 5px solid black;margin: 100px auto;}.box:before{content: '阿花';color: red;font-size: 24px;}</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
1.通过attr()改变伪元素的值
伪元素通过attr()来获取标签自定义属性的值。这个方法的缺点就是只能改变伪元素的值,而不能改变伪元素的属性。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="style.css"><style>.box{width: 300px;height: 200px;border: 5px solid black;margin: 100px auto;}.box:before{content: attr(dataBefore);color: red;font-size: 24px;}</style>
</head>
<body>
<div class="box" dataBefore="阿花"></div>
<script>
var box=document.querySelector('.box');
box.setAttribute('dataBefore','谢谢你');//第二个值为‘’就是伪元素隐藏效果
</script>
</body>
</html>
2.覆盖原有样式
这个方法能更改伪元素的值和样式,缺点就是会造成部分css多余代码,设置content:’ ’ 就可以实现伪元素隐藏效果,当然你也可以设置opacity=0或者display=none都行,看需求
(1)css优先级覆盖
为父元素添加一个新的class类名。后面类名的优先级会高于前面的,将前面的样式覆盖
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.box{width: 300px;height: 200px;border: 5px solid black;margin: 100px auto;}.box:before{content: '阿花';color: red;font-size: 24px;}.skate:before{/*提前写在css样式表里,js添加完skate类名后便会覆盖前面box的样式*/content: '谢谢你';color: blue;font-size: 24px;}</style>
</head>
<body>
<div class="box"></div>
<script>var box=document.querySelector('.box');box.classList.add('skate');//添加classname skate
</script>
</body>
</html>
(2)更改class类名覆盖
在css中写好新类名的样式,通过js修改类名,之前的样式就会失效(可以看一下和上一个方法其实没什么太大区别)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.box{width: 300px;height: 200px;border: 5px solid black;margin: 100px auto;}.box:before{content: '阿花';color: red;font-size: 24px;}.skate{width: 300px;height: 200px;border: 5px solid black;margin: 100px auto;}.skate:before{content: '谢谢你';color: blue;font-size: 24px;}</style>
</head>
<body>
<div class="box"></div>
<script>var box=document.querySelector('.box');box.className='skate';//更改classname为skate
</script>
</body>
</html>
(3)内联样式表覆盖
这个适用的前提是你的css写在了外部样式表中,用js动态添加一个内联样式,内联样式优先级大于外部样式,外部样式就会失效;
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="style.css">
</head>
<body>
<div class="box"></div>
<script>var style=document.createElement('style');//创建一个<style>标签var change=document.createTextNode('.box:before{content:"谢谢你";color:blue;}')//更改后伪元素的样式style.appendChild(change);//把样式添加到style标签里document.body.appendChild(style);//把内联样式表添加到html中
</script>
</body>
</html>
js执行的结果就相当于在head头部前面添加了一个style的内联样式表
js怎么动态控制伪元素(更改样式、隐藏等)相关推荐
- html中伪元素怎么更改图片,如何改变css伪元素的样式
本篇文章介绍了如何改变css伪元素样式的方法,希望对学习前端css的朋友有帮助! 一.CSS伪元素 CSS 伪元素用于向某些选择器设置特殊效果. 伪元素的用法如下:selector:pseudo-el ...
- 如何修改css伪元素的样式
首先说一下变成思想,众所周知,css伪元素是不可以修改的,首先你查找他的元素就很困难,不知道怎么查找的可以看一下我的另一篇原生js查看css伪元素属性,那么我们应该怎么修改呢 . 其实换一种思维事情就 ...
- JS DOM获取标签/元素style样式
JS DOM获取标签/元素style样式 文章目录 JS DOM获取标签/元素style样式 .style getComputedStyle() .style 只能获取行内样式,不能获取style标签 ...
- 学习整理fabric.js更换画布文字元素字体样式
学习整理fabric.js更换画布文字元素字体样式 原图 效果图 实现代码 index.html script.js 生成本地图 原图 效果图 实现代码 index.html <!DOCTYPE ...
- JS操作CSS伪元素
参考链接: segmentfault MDN CSSStyleSheet QQ群闲逛,看到有人说js不能操作css的伪元素样式, 之前没有遇到过应用场景,我当时想到的就是操作通过操作class来控制样 ...
- [JS 分析] 汽_车_之_家 JS 生成 CSS 伪元素 hs_kw44_configUS::before
0.参考 https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-elements https://developer.mozilla.org/ ...
- html改元素怎么保存,是否可以在NW.js中保存html元素更改?
我正在开发一个简单的应用程序,允许用户上传图像和视频,同时这样做会自动为上传并包装的每个内容生成 .每个上传的图片都保留在前一个特别风格化的图片旁边. 我想要的是每次上传后(图片或视频),即使我关闭我 ...
- js修改伪元素的属性、styleSheets获取样式表,Failed to read the 'cssRules' property from 'CSSStyleSheet' Cannot acces
登录验证中的判断逻辑 1.提示输入用户,输入8 - 16位密码2.检验输入用户名和密码是否正确 用户名不允许空格,任何字符数字都行,不允许为空 密码8-16位,不允许空格 ,小于8位给出提示 密码必须 ...
- 如何用js改变伪元素样式
通常设置伪元素的样式直接用CSS很方便 .test:after{content:'';display:block;width:100%;height:100%;background:red; } 可是 ...
最新文章
- Oracle to_char格式化函数
- [bzoj2186]沙拉公主的困惑
- MacOS运行多个实例
- java mail 503_邮件配置报503错误,发送失败
- python内建函数(不完全)
- 全球最大的免费暗网托管服务商 DH 再度被黑关闭
- 另类的缓存技术(存储数据)
- Mac 10.12安装迅雷2.7.2
- You can format your XML in the 'standard' Android way...
- Treeview的文件目录配置
- group by 深入总结
- 如何学习ERP系统并从事相关职业?
- 新浪云HTML播放音乐,音乐播放器-html代码
- Linux系统安装Mediawiki
- 数据结构--算术表达式求值
- [JZOJ3337] 【NOI2013模拟】wyl8899的TLE
- win10 更新1803版本后删除自带微软拼音的方法
- 悉尼大学COMP5216Assignment2课业解析
- python代替按键精灵 游戏内失灵_按键精灵是如何做到不被程序屏蔽的?python34中如何将命令行传递给python脚 节流参数转换为unicode字符串...
- Kaggle注册方法,解决人机验证问题
热门文章
- 主线程中的Looper.loop()死循环为什么不会导致ANR?
- 雷达辐射源调制信号仿真
- [人工智能-深度学习-17]:神经网络基础 - 优化算法的本质是盲人探路或迷雾探险
- 利用Python来制作网易阴阳师的游戏脚本,爆肝是不可能爆肝的
- Day4---D3:法律问题,合同和电子举证
- Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录
- jzoj4646. 【NOI2016模拟7.16】建造记者站
- oneinstack安装java_Ubuntu 16.04安装OneinStack以及配置java开发环境
- 川大972 | 《管理信息系统》考研知识点(含第七版更新)
- Unity学习笔记--自定义文件的处理:Scripted Importers的简单使用