CSS实现导航栏下划线跟随

举报
khz 发表于 2020/07/05 23:51:40 2020/07/05
【摘要】 前言学习了 CSS 选择器之后,我们会对选择器有个大致的认识,通过所学的知识,来实现导航栏下划线的跟随效果开始首先,我们先看效果图,如何使用 CSS 完成以下的结果呢?思考首先,要完成以上的动画效果,我们需要将 html 布局完成,然后我们知道,动画的效果是当我们从导航的左侧到右侧时,下划线从左往右移动。同理,当我们从导航的右侧到左侧时,下划线从右往左移动布局在这里使用列表布局1234567...

前言

学习了 CSS 选择器之后,我们会对选择器有个大致的认识,通过所学的知识,来实现导航栏下划线的跟随效果

开始

首先,我们先看效果图,如何使用 CSS 完成以下的结果呢?

思考

首先,要完成以上的动画效果,我们需要将 html 布局完成,然后我们知道,动画的效果是当我们从导航的左侧到右侧时,下划线从左往右移动。同理,当我们从导航的右侧到左侧时,下划线从右往左移动。

布局

在这里使用列表布局

一开始,我们给他一个 border-bottom,

它是这样的

当然,我们一开始并不需要显示,所以以上代码可以不用管它

实现

这里我们借助伪元素,通过对伪元素的 width 以及left 的控制,实现动画的显示与隐藏和位置的改变,

实现的效果是这样的:

我们会发现当从第一个到第二个的时候,下划线手绘的方向不正确,所以我们需要将下划线的初始位置设置为 left:100%.

image.png

这样的话,下划线收回的时候是这样的:

可以发现,第一个 li 的方向是正确了,但是第二个 li 下划线的移动方向又错误了。

修正

所以,我们需要使用一种方法,可以帮助我们更改下划线的移动方向。这个时候,可以借助 ~ 选择符。
通过这个选择符我们可以改变当前hover下li之后的所有 li 的 left 值以此来改变下划线的方向。

这样,我们的效果就完成了,可以看到下划线随着方向的改变而改变。


结尾

虽然大致的效果已经实现了,但第一个li元素的左移还是有点小问题(暂时没想到解决方法)


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。