博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tab 切换下划线跟随实现
阅读量:7038 次
发布时间:2019-06-28

本文共 1211 字,大约阅读时间需要 4 分钟。

图片描述

  • HTML 结构如下:
  • 不可思议的CSS
  • 导航栏
  • 光标小下划线跟随
  • PURE CSS
  • Nav Underline
  • 导航栏目的 li 的宽度是不固定的
  • 当从导航的左侧 li 移向右侧 li,下划线从左往右移动。同理,当从导航的右侧 li 移向左侧 li,下划线从右往左移动。

设计思路 :

  1. 利用绝对定位,将 li 的伪元素的宽度设置为 0
  2. 在 hover 的时候,宽度从 width: 0 -> width: 100%
  3. 左移左出,右移右出 :

    • 将下划线的 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')})

参考资料

转载地址:http://ezfal.baihongyu.com/

你可能感兴趣的文章
一文盘点MWC 2019所有5G设备和研发进展
查看>>
有赞电商云应用框架设计
查看>>
敏捷方法在测试计划中的应用
查看>>
基于微服务,打造共享开发平台
查看>>
5G一周热闻:中国5G芯片关键材料获突破,华为首款折叠屏手机亮相
查看>>
架构师2月刊发布:解读Android、高效运维、API设计方法论
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
Facebook广告平台遭遇8小时服务中断,或对黑色星期五购物节造成影响
查看>>
聚焦IBM大数据分析在中国落地
查看>>
Java 20年:历史与未来
查看>>
Google、Microsoft和Mozilla敦促网站运维人员更换SHA–1认证
查看>>
Apache ServiceComb(incubating) 第一个版本发布
查看>>
Rust 1.0发布一周年,发展回顾与总结
查看>>
远程连接MySql报错解决办法(2003)(1130)
查看>>
央视在世界杯高清直播中占了C位 它是怎么做到的?
查看>>
博睿CTO孟曦东:如何监控真实用户访问体验
查看>>
彻底与高通谈崩?苹果被爆计划自研5G调制解调器
查看>>
FreeWheel前后端分离改造实践
查看>>
Linus 发文宣布Linux Kernel 5.0 正式发布
查看>>
投简历申请数据科学岗石沉大海?这些秘密别人不会告诉你
查看>>