android切换tabde下划线,tab 切换下划线跟随实现

bVbg4wM?w=699&h=91

HTML 结构如下:

  • 不可思议的CSS
  • 导航栏
  • 光标小下划线跟随
  • PURE CSS
  • Nav Underline

导航栏目的 li 的宽度是不固定的

当从导航的左侧 li 移向右侧 li,下划线从左往右移动。同理,当从导航的右侧 li 移向左侧 li,下划线从右往左移动。

设计思路 :

利用绝对定位,将 li 的伪元素的宽度设置为 0

在 hover 的时候,宽度从 width: 0 -> width: 100%

左移左出,右移右出 :

将下划线的 left 偏移量初始位置设置为 left: 100%

当鼠标 hover 的时候, left 偏移量设置为 0

使用 ~ 选择符,改变当前选择元素 之后 所有元素的行为 :

在不改变当前 hover 的 li 的下划线移动方式,而改变它下一个 li 的下划线的移动方式,

对于当前 hover 的 li ,其对应伪元素的下划线的定位是 left: 100%,而对于 li:hover ~li::before,它们的定位是 left: 0。

神奇的 ~ 选择符

所以,我们迫切需要一种方法,能够不改变当前 hover 的 li 的下划线移动方式却能改变它下一个 li 的下划线的移动方式(好绕口)。

没错了,这里我们可以借助 ~ 选择符,完成这个艰难的使命,也是这个例子中,最最重要的一环。

对于当前 hover 的 li ,其对应伪元素的下划线的定位是 left: 100%,而对于 li:hover ~ li::before,它们的定位是 left: 0。CSS 代码大致如下:

li::before {

content: "";

position: absolute;

top: 0;

left: 100%;

width: 0;

height: 100%;

border-bottom: 2px solid #000;

transition: 0.2s all linear;

}

li:hover::before {

width: 100%;

left: 0;

}

li:hover ~ li::before {

left: 0;

}

点击 tab 跟随

结合 js 使用 active 类即可实现 点击 tab 跟随

.active ~ li::before {

left: 0;

}

.active::before {

width: 100%;

left: 0;

top: 0;

}

// 使用 jquery

$('li').on('click', function () {

$(this).addClass('active').siblings().removeClass('active')

})

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值