当鼠标点击元素,元素的伪元素显示,如何使用js来控制伪元素呢?转载下这一篇:https://www.cnblogs.com/yangguoe/p/9185208.html,不过我的问题没有解决成功,后面采用了一个比较投机取巧的方法。先来看看问题:原本li的伪元素before是隐藏的,在li的点击事件中,点击li时,对应伪元素出现(即高亮),其他li的伪元素继续隐藏,办法:只需要准备另一个不隐藏的伪元素样式,在点击事件中设置li的类名改变,指向准备好的伪元素样式前的类名即可。
<!--html-->
<ul>
<li>
<div class="li1">
<input type="text" id="soutxt" placeholder="搜本店">
<input type="button" value="搜" id="sou">
</div>
</li>
<li class="li_com gaoliang" style="background: #fff;color: orangered;">宝贝详情</li>
<li class="li_com " >累计评论 <span>9</span></li>
<li class="li_com " >专享客服</li>
</ul>
原本隐藏的伪元素
.li_com::before{
content: '';
display: none;
width: 100%;
height: 2px;
background: #ff4401;
position: absolute;
top: 0;
left: 0;
}
下方是准备好的不隐藏的伪元素,当点击事件触发时指向该样式
.gaoliang::before{ //准备的伪元素样式,用于li高亮显示
content: '';
display: block;
width: 100%;
height: 2px;
background: #ff4401;
position: absolute;
top: 0;
left: 0;
}
//选项卡操作
var ali_com = document.querySelectorAll('.li_com'); //吸顶那部分(即标题栏)
var xuanxiang = document.querySelector('.xuanxiang');
var xuanxiangka = document.getElementsByClassName('xuanxiangka');
for(var i=0;i<ali_com.length;i++){ //节点不能用for in !!!
ali_com[i].index = i;
ali_com[i].onclick = function(){
for(var j=0;j<xuanxiangka.length;j++){//排他,当点击别处时,该处的特殊样式清除
ali_com[j].className = '';
ali_com[j].style.background = '#f6f6f6';
ali_com[j].style.color = '#383838';
xuanxiangka[j].style.display = 'none';
}
this.className = 'gaoliang'; //当点击相应的li时,添加特殊样式(这里是高亮)的类名即可,特殊样式事先写好样式,原来的样式废弃
this.style.background = '#fff';
this.style.color = 'orangered';
xuanxiangka[this.index].style.display = 'block';
}
}
第一次小记录,希望能帮到初学者~