纯css实现Magicline Navigation(下划线动画导航菜单)

看别人网站的时候,看到一种导航菜单的动画,觉得很有意思,就仔细研究起来。
目前见过的动画有三种:水平下划线动画导航、水平背景动画导航、垂直动画导航,他们实现思路都是一样的,都是依赖 css3的同级通用选择器 "~" 。
自己实现了一遍,本文简要记录实现的思想。
大家可以先看看最后实现的效果:Demo点我
实现思路
HTML 结构
HTML结构没有特殊,就是 ul -> li:
<ul class="a">
<li class="n1"><a href="#">Navigator A</a></li>
<li class="n2"><a href="#">Navigator B</a></li>
<li class="n3 selected"><a href="#">Navigator C</a></li>
<li class="n4"><a href="#">Navigator D</a></li>
<li class="quebec"> </li>
</ul>
最后一个li空着,留着后面有用。
CSS 布局
实现基本样式,不多解释:
li {
list-style: none outside;
position: relative;
z-index: 1;
float: left;
padding: 0 0 0 0;
}
li a {
position: relative;
top: 5px;
display: block;
margin: 0 0;
border-bottom: 5px solid transparent;
padding: 10px 0;
text-align: center;
text-decoration: none;
}
.selected a {
border-bottom: 5px solid #cfd0d0;
color: #340e56;
}
实现导航下划线
下面实现动画部分。
下方紫色滚动条是通过,刚才留着的最后一个li元素实现。
.quebec {
position: absolute;
bottom: -5px;
left: 0;
z-index: 3;
margin: 0;
border: 0;
width: 5px;
height: 5px;
padding: 0;
overflow: hidden;
text-indent: -9999em;
background: #511d7f;
-webkit-transition-property: left, width;
-moz-transition-property: left, width;
-ms-transition-property: left, width;
-o-transition-property: left, width;
transition-property: left, width;
-webkit-transition-duration: .5s;
-moz-transition-duration: .5s;
-ms-transition-duration: .5s;
-o-transition-duration: .5s;
transition-duration: .5s;
}
通过绝对定位,把最后一个 li.quebec 定位到导航下方,设置宽度高度。设置 transition,当我们改变 left, width的时候就能实现动画。
动起来
当hover到导航上面的时候,li.quebec 就定位left到其下面。实现这个效果的是css3的同级通用选择器 “~”
比如 A ~ B 匹配的是 任何在A元素之后的同级B元素。
.n1:hover ~ li.quebec { left: 0; width: 95px; }
.n2:hover ~ li.quebec { left: 100px; width: 95px; }
.n3:hover ~ li.quebec { left: 192px; width: 95px; }
.n4:hover ~ li.quebec { left: 285px; width: 95px; }
这里就完成了一个 纯css的下划线动画导航。 最后的效果:Demo查看
扩展
当我们会实现水平的下划线动画导航后,实现 背景移动动画导航 思路也是一样,不过是li.quebec高度宽度的变化,背景透明度的变化。
垂直的动画导航 亦是如此,改变 li.quebec 的高度宽度,通过 translateY 控制其在垂直方向的位置。
为了效果更炫一点,我们还可以在hover不同li的时候,改变li.quebec的颜色、背景、透明度等。
纯css实现Magicline Navigation(下划线动画导航菜单)的更多相关文章
- 纯CSS 3D翻转一个面(翻转导航菜单 立方体)
在做练习的时候学到css的翻转导航菜单,原代码有点让人头疼,通过对其css的参数一点点研究了其实现过程. 这里推荐大家研究这个3D翻转动画的代码. 我的github:swarz,欢迎给老弟我++星星 ...
- 纯CSS实现点击事件展现隐藏div菜单列表/元素切换
在写移动端导航的时候经常用到点击按钮出现/隐藏导航条的情况,最常见的方法当然还是前端框架直接调用,省心省力,不易出错:当然还有使用纯JS实现的小代码段.我这里整理了纯CSS实现方式,给需要的人和给自己 ...
- 一款基jquery超炫的动画导航菜单
今天给大家分享一款基jquery超炫的动画导航菜单.这款导航菜单,初始时页面中间一个按钮,单击按钮,菜单从左侧飞入页中.再次单击按钮,导航飞入左侧消息.动画效果很非常炫.一起看下效果图: 在线预览 ...
- jq倾斜的动画导航菜单
效果预览网址:http://keleyi.com/keleyi/phtml/jqmenu/index.htm 支持IE.Chrome.火狐等浏览器 完整源代码,保存到HTML文件打开也可查看效果: & ...
- jquery倾斜的动画导航菜单
1. [代码]完整源代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...
- 一款jquery编写图文下拉二级导航菜单特效
一款jquery编写图文下拉二级导航菜单特效,效果非常简洁大气,很不错的一款jquery导航菜单特效. 这款jquery特效适用于很多的个人和门户网站. 适用浏览器:IE8.360.FireFox.C ...
- css删除线,下划线等
<style> .p1 { text-decoration:overline; //上划线 } .p2 { text-decoration:line-through; //删除线 } . ...
- css给文字加下划线
语法:linear-gradient(direction, color-stop 1, color-stop 2,……) 简单用法:background-image: linear-gradient( ...
- 通过css3实现的动画导航菜单代码
用css3样式实现的滑动导航菜单,html代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" &quo ...
随机推荐
- 1 TensorFlow入门笔记之基础架构
------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...
- android adb devices offline的解决办法
在做Android开发时经常出现android adb devices offline,解决办法如下: 1 重启adb服务 adb kill-server adb start-server linux ...
- Spring框架学习之IOC(一)
Spring框架学习之IOC(一) 先前粗浅地学过Spring框架,但当时忙于考试及后期实习未将其记录,于是趁着最近还有几天的空闲时间,将其稍微整理一下,以备后期查看. Spring相关知识 spri ...
- windows下线程库的使用
下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可) http://sourceware.org/pthreads-win32 ...
- Centos/ubuntu配置SVN服务
Centos安装svn yum -y install subversion ubuntu安装svn apt-get install subversion Centos配置svn root@hello: ...
- CentOS6、7优化脚本完美版
#!/bin/bash SysVer=`cat /etc/redhat-release | awk -F'release' '{print $2}' | awk -F'[ .]+' '{print $ ...
- 堆与堆排序、Top k 问题
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先讲解下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树. 二叉堆满 ...
- share point CSOM 客户端模式 创建 list
/// <summary> /// 创建新的列表 list /// </summary> /// <param name="web"></ ...
- 分布式技术 webapi
webapi可以返回json.xml类型的数据,对于数据的增.删.改.成,提供对应的资源操作,按照请求的类型进行相应的处理,主要包括 Get(查).Post(增).Put(改).Delete(删),这 ...
- mysql官网下载链接——绿色版&安装版
windows64位5.5.60安装版 https://downloads.mysql.com/archives/get/file/mysql-5.5.60-winx64.msi windows64位 ...