0 写在前面

  今天用纯CSS编写了一种带有特效的导航栏,一方面巩固熟悉了导航栏的一般写法,另一方面练习了CSS3的一些新特性。

1 实现效果

  当鼠标划过时,实现了一种动态百叶窗效果。

2 实现细节

2-0 导航栏基本架构

  首先复习导航栏的基本架构,导航栏的实现,采用的是ul-li的结构,为了能够实现导航效果,可以在li内部增加一个a标签。

  实现导航栏结构的html代码如下:

  <div class="container">
<ul class="menu">
<li><a href="#">HOME</a></li>
<li><a href="#">FIRST</a>
<ul class="submenu">
<li><a href="#">one</a></li>
<li><a href="#">two</a></li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
<li><a href="#">six</a></li>
</ul>
</li>
<li><a href="#">SECOND</a>
<ul class="submenu">
<li><a href="#">one</a></li>
<li><a href="#">two</a></li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
<li><a href="#">six</a></li>
</ul>
</li>
<li><a href="#">THIRD</a>
<ul class="submenu">
<li><a href="#">one</a></li>
<li><a href="#">two</a></li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
<li><a href="#">six</a></li>
</ul>
</li>
<li><a href="#">FOURTH</a>
<ul class="submenu">
<li><a href="#">one</a></li>
<li><a href="#">two</a></li>
<li><a href="#">three</a></li>
<li><a href="#">four</a></li>
<li><a href="#">five</a></li>
<li><a href="#">six</a></li>
</ul>
</li>
<li><a href="#">OTHER</a></li>
</ul>
</div>

  页面布局和导航栏需要进行样式的初始化,包括去除body的8px,去除a标签固有样式,去除ul li的固有样式,实现水平方向的导航等。

  需要进行模式化的调整,代码如下:

 *{
margin:;
padding:; /*初始化页面*/
list-style: none; /*清除原点*/
}
body{
background: #ccc;
} .container{
margin: 30px auto; /*导航栏位置的确定上下空30px左右自适应*/
width : 70%;
} .container .menu{
height:58px;
} .menu>li{ /*只将主菜单栏水平布局,需要用>来进行选择*/
float:left; /*导航栏水平布局*/
position: relative; /*为了消除重叠效果,需要让其子元素脱离文档流absolute*/
}

  a标签的模式化调整如下:

 .menu a{
display:block; /*a标签可以覆盖整个容器范围*/
text-decoration: none; /*a标签取消下划线*/
text-align: center; /*文字水平居中*/
color:black;
padding:0 25px;
font-size: 18px;
line-height:36px; /*撑开行高*/
border-left:3px solid rgb(0,0,0,0); /*左边竖线占位(透明度0)*/
text-transform:uppercase; /*全部转成大写字母*/
}

2-1 导航栏渐变背景色

  在这个练习中,我学习使用了一种可以实现渐变色的方案 linear-gradient(#from,#to)

 .menu li{
min-width: 140px; /*设置最小宽度撑开宽度*/
background: linear-gradient(#3d3838,#999999); /*渐变色*/
} .menu li:hover{
background: linear-gradient(#111111,#424242);
}

2-2  3D动画效果绘制

  为了实现动画的3D效果,需要为元素设置一个景深(perspective),也就是元素将对于观察者的距离。

  另外要用到CSS3中的一个3D旋转效果transform:rotate3d(x,y,z,n deg);前三个参数表示绕x,y,z轴旋转,具体绕某一轴旋转,则将该参数置1反之置0,最后一个参数为旋转角度,单位为deg。

  同时,我们还可以调整初始旋转坐标轴的位置 transform-origin:x y; 这两个参数分别表示x y轴初始的偏移位置。

  为了实现旋转的动画,我们需要通过transform:rotate3d给出一个初始状态,一个结束状态,并添加一个过渡transition。即可实现旋转效果。

 .menu li:hover>a{  /*需要选择其直属子元素,而不是全部的a标签子元素*/
color:white;
border-left:3px solid white; /*显示左边小竖线*/
} .submenu{
position:absolute; /*脱离文档流,定位相对于父级第一个有定位的元素*/
left:;
top:100%; /*相对于父级li最底部进行定位*/
perspective:1000px; /*设置景深*/
max-height:; /*默认情况下需要将其隐藏,行高缩小至0*/
z-index:;
} .submenu li{
visibility:hidden; /*这是为了避免仍有元素占位,鼠标划过下方空白区域时会触发的bug*/
transform: rotate3d(1,0,0,90deg); /*3d旋转效果,绕x轴旋转,90°*/
transition: all 0.5s; /*过渡动画,选择all属性,过渡时间为0.5s*/ } .menu>li:hover .submenu{
max-height: 999px;
z-index:;
} .menu>li:hover .submenu li{
visibility: visible; /*调成可见*/
transform: rotate3d(0,0,0,0deg); /*实现3d旋转效果,绕x轴旋转,从90°变化到0°*/
}

2-3 子元素选择器与动画延迟的应用

  在这里我们为了实现百叶窗效果,可以通过子元素选择器nth-child(n),来选择导航栏中不同的项进行旋转

  通过动画延迟transition-delay,来为不同子元素设置旋转间隔。

  另外为了美化效果,在导航栏左上角上加一个圆角效果,用first-child进行选择。

  代码如下:

 .container .menu>li:first-child{
border-radius: 5px 0 0 0;
}
.submenu li:nth-child(1){
transition-delay:;
}
.submenu li:nth-child(2){
transition-delay: 100ms;
}
.submenu li:nth-child(3){
transition-delay: 200ms;
}
.submenu li:nth-child(4){
transition-delay: 300ms;
}
.submenu li:nth-child(5){
transition-delay: 400ms;
}
.submenu li:nth-child(6){
transition-delay: 500ms;
}

3 总结  

  本次通过编写导航栏特效,在复习导航栏基本写法的同时,练习了一些CSS3的特性:

  • 景深:perspective

  • 3D旋转动画特效:

    • transform:rotate3d(0,1,0,45deg);
    • 参数分别为绕x,y,z轴旋转,初始角度。
  • 渐变色效果:linear-gradient(#color1,#color2);

  • 动画延迟:transition-delay

CSS实现动画特效导航栏的更多相关文章

  1. css制作最简单导航栏

    css制作最简单导航栏

  2. 如何使用css、布局横向导航栏

    使用css布局横向导航栏,css应用给网页样式的方式,就相当于,给人怎么去穿上衣服,不同的衣服有不同的穿法,这里我们使用的是内联式.在这里 我们可以适当的把值调的大一点,这样我们就可以很容易的对比. ...

  3. 在CSS中定义【导航栏】超链接样式

    1.案例css代码 <style> .divcss5 a:link{ color:#F00}/* 链接默认为红色 */ .divcss5 a:hover{ color:#000}/* 鼠标 ...

  4. 简单两步使用css控制div下导航栏ul居中显示

    第一步:父层设置文本居中属性 ul{ text-align:center; } 第二步:li设置内联样式 li{ display:inline; } PS 只需以上两步就可以实现导航栏居中显示了,但为 ...

  5. 通过html和css做出下拉导航栏的效果

    通过观察了百度的首页,对于更多产品一栏,觉得可以不涉及JS便可写出下拉导航栏的效果 1.先设计出大体的框架 <div class="nav"> <ul> & ...

  6. css制作简单的导航栏

    //css代码 #menu{ height: 65px; width:100%; background-color: rgba(0, 0, 0, 0.5);}#menu ul{ list-style: ...

  7. CSS案例1(导航栏)

    文本的装饰 text-decoration 通常我们用于给链接修改装饰效果 使用技巧:在一行内的盒子内,我们设定行高等于盒子的高度,就可以使文字垂直居中. <head> <meta ...

  8. css实现手机端导航栏左右滑动

    <html> <head> <meta charset="utf-8"> <meta name="viewport" ...

  9. 通栏导航栏的制作,综合使用CSS属性,代码不超过30行

    这篇文章,小编带领大家一同做一个利用CSS技术实现的导航栏.通过这个导航栏的制作,希望大家能够对前几篇文章中学习到的CSS属性能有一个整体的认识,并能够达到灵活运用的程度. 承接文章:灵活控制块级元素 ...

随机推荐

  1. Easyui 修改|新增jquery-easyui icon图标

    修改|新增jquery-easyui icon图标 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 修改配置文件 打开jquery-easyui-1.5.3\ ...

  2. 小米8 探索版 屏幕指纹版超简单卡刷开发版获取Root权限的教程

    小米的手机不同手机型号通常情况下miui官网都提供两个不同的系统,分别是稳定版和开发版,稳定版没有提供ROOT超级权限管理,开发版中就开启了ROOT超级权限,在很多工作的时候我们需要使用的一些功能强大 ...

  3. Android程序员的Flutter学习笔记

    作为忠实与较资深的Android汪, 最近抽出了一些时间研究了一下Google的亲儿子Flutter, 尚属皮毛, 只能算是个简单的记录吧. Google自2017年第一次提出Flutter, 到20 ...

  4. c#高级编程_第10版 云盘地址

    下载地址 链接:https://pan.baidu.com/s/1u8PcY4RJhRB1yfm-2XaTEQ 密码:159z

  5. 【原】Java学习笔记022 - 字符串

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 字符串 // 定义 ...

  6. LNMP时,出现502 Bad Gateway的错误提示

    因为工作需要,要在ubuntu中安装LNMP环境,在这里,php是最新版本php7.1.一切都进展得很顺利,安装完成后,在浏览器中输入http://127.0.0.1/info.php,出现了502 ...

  7. WPF中在MVVM模式下,后台绑定ListCollectionView事件触发问题

    问题:WPF中MVVM模式下 ListView绑定ListCollectionView时,CurrentChanged无法触发 解决方案: 初期方案:利用ListView的SelectionChang ...

  8. 《精通Spring+4.x++企业应用开发实战》读后感

    引言 还记得大三时上培训班的是时候,当时的培训老师说自己是本地讲解spring最好的讲师,但是后来等我实习了看了<Spring 3.x 企业应用开发实战>以及后续版本<精通Sprin ...

  9. tian

    上次后来没继续在微信上聊,是因为快过年了,想趁那段时间结合年假做点东西.接下来阳历三四月份就受美国制裁.结果接下来制裁.fang. 16年的那次主要是生气,在一块儿 另外经济上也有问题. 我也想过不再 ...

  10. VS 附加到进程 加载“附加进程”弹窗很慢

    最近遇到一个问题,点击Ctrl + Alt + P 附加到进程的时候,弹出下图弹窗“附加到进程”很慢. 找了很多原因,后来发现,是因为少安装了一个插件,安装后,弹窗的耗时明显少了. 下载    Win ...