js怎么控制伪元素?间接控制的小办法

当鼠标点击元素,元素的伪元素显示,如何使用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';
        }  
    }

第一次小记录,希望能帮到初学者~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值