解决hover时给使用了hover的元素的伪元素添加样式的问题

在前端开发中,遇到一个需求,需要在li标签hover时在其左侧添加border-left,但会导致文字右移。通过给li添加伪元素:after并使用position定位,实现了文字位置不变的效果。关键在于将伪元素定位到li的左边,并设置100%高度,同时在hover状态下为伪元素添加样式时,需直接紧接伪元素名称,而非加空格。
摘要由CSDN通过智能技术生成

在上周的一个需求里面,需要给一个ul下的每一个li标签,当鼠标移动到li标签的时候,给这个li标签的左侧加一个border-left的边框。如下图

但是实际上我们看到,当一个li标签处于hover状态的时候,我们给这个li标签增加了一个border-left,结果发现li标签里面的文字被往右边顶了,这是因为border-left的宽度跟整个li标签的宽度是一个整体,假设hover前li标签的宽度是100,那么hover后,就应该是border-left的宽度加上剩下的宽度,所以我们看到的就是文字向右跑了。
那么我想要实现的效果即使加上border-left,文字也在原来的位子保持不变。也就是下面这种效果

现在我们看到,上下两个li标签的文字是对齐的了,即使border-left出现了,文字也不会往右边跑了。

接下来说一下实现思路,
1.因为是给li添加一个border-left,但直接在hover的时候添加border-left就会将文字顶开

2.所以给li标签添加一个伪元素:after,并且让该元素使用position定位,脱离文档流,这样就跟文字不在同一层了,因此文字不会被顶开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值