js动态控制伪类样式(通过css变量)

js动态控制伪类样式

简述

在部分场景中,我们通常需要在动态的修改伪类元素的样式,本文通过案例介绍了一个解决方案:
css变量 + js修改具体元素的style对象中的属性

代码

点击链接在codepen中查看效果
https://codepen.io/PorcoRosso/pen/BaMMeNb

Html

<h1 class="title">👋 Hello World!</h1>
<h1 class="title pseudoClass">👋 Hello World!</h1>

Css

:root {
  --bg-color : #000;
  --font-color : #FFF000;
}
.title {
  background-color : var(--bg-color);
  font-size : 4vw;
  color : #FFF
}
.pseudoClass:after {
  content : 'test';
  margin-left : 50px;
  background-color : var(--bg-color);
  color : var(--font-color);
}

Js

/**
 * tips:修改对应元素的style对象属性,不会影响其他元素
 * tips: 该元素(包括其中的伪类)所有使用该变量的样式都会收到影响
 */
var colorArr = ['AAA','BBB','CCC','DDD','EEE','FFF'];
function changeBeforColor(){
  var element = document.querySelector('.pseudoClass');
  var currentTime = new Date();
  var i = currentTime.getSeconds() % 10;
  i = '' + i + i + i;
  var newColor = '#'+i;
  var fontColorIndex = currentTime.getSeconds() % 6;
  var newFontColor = '#'+colorArr[fontColorIndex]+i;
  element.style.setProperty('--bg-color',newColor)
  element.style.setProperty('--font-color',newFontColor)
  setTimeout(()=>{
    changeBeforColor();
  },1000);
}
changeBeforColor()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值