用css3过渡简易实现三级菜单

简单的写了一下,没有各种阴影、圆角的修饰,供初学者一点思路。
-
搭建容器
<ul class="box"> <li><a href="">一级导航</a> <ul class="box1"> <li><a href=""> 二级导航</a> <ul class="box2"> <li>三级导航</li> <li>三级导航</li> <li>三级导航</li> <li>三级导航</li> </ul> </li> <li><a href=""> 二级导航</a> <ul class="box2"> <li>三级导航</li> <li>三级导航</li> <li>三级导航</li> <li>三级导航</li> </ul> </li> </ul> </li> </ul> -
菜单ul的样式修饰:
显示对所有li的修饰,宽、高、背景色、文字居中、行高,对一级标签的li进行左浮动,横向排列li{line-height:50px;background-color: #000;list-style: none;text-align:center;width:160px;height:50px;color: #fff;} a{text-decoration:none;color:#fff;} .box{margin:100px auto;width:862px;height:52px;} .box>li{position: relative;float:left;} -
二级三级菜单ul的样式修饰
二级菜单默认是隐藏状态,用绝对定位的方式(相对于一级菜单)将二级菜单定位在top:50px;left:0;的位置上、三级菜单也是隐藏状态,用绝对定位的方式(相对于二级菜单)将三级菜单定位在left:160;的位置上、用opacity这是透明级别为0、用transition制作一个过度显示和隐藏的效果.box1{position: absolute;top:50px;width:160px;opacity: 0;height: 0;visibility: hidden;transition:all 0.5s linear;} .box2{position: absolute;left:160px;visibility:hidden;opacity: 0;transition:all 0.5s linear;} -
当鼠标移动到一级菜单栏的时候二级菜单栏显示,移动到一级菜单栏的时候二级菜单栏显示
.box li:hover .box1{opacity:1;visibility: visible;margin:0;} .box1 li:hover .box2{opacity:1;visibility: visible;margin:0;}
5.介绍一下visibility属性
visibility 属性规定元素是否可见。即使不可见的元素也会占据页面上的空间。
| 值 | 描述 |
|---|---|
| visible | 默认值。元素是可见的。 |
| hidden | 元素是不可见的。 |
| collapse | 当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局。被行或列占据的空间会留给其他内容使用。如果此值被用在其他的元素上,会呈现为 “hidden”。 |
| inherit | 规定应该从父元素继承 visibility 属性的值。 |
因为在二级导航、三级导航中定义了绝对定位属性,不占据原来的空间,而在一级导航设置了相对定位。
绝对定位将对象从文档流中拖离出来因此不占据空间,相对定位不破坏正常的文档流顺序无论是否进行移动,元素仍然占据原来的空间。
6.完整的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
*{margin:0;padding:0;}
li{line-height:50px;background-color: #000;border:1px solid #000;list-style: none;text-align:center;width:160px;height:50px;color: #fff;}
a{text-decoration:none;color:#fff;}
.box{margin:100px auto;width:862px;height:52px;}
.box>li{position: relative;float:left;}
.box1{position: absolute;top:50px;width:160px;opacity: 0;height: 0;visibility: hidden;transition:all 0.5s linear;}
.box2{position: absolute;left:160px;visibility:hidden;opacity: 0;transition:all 0.5s linear;}
.box li:hover .box1{opacity:1;visibility: visible;margin:0;}
.box1 li:hover .box2{opacity:1;visibility: visible;margin:0;}
</style>
</head>
<body>
<ul class="box">
<li><a href="">一级导航</a>
<ul class="box1">
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
</ul>
</li>
<li><a href="">一级导航</a>
<ul class="box1">
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
</ul>
</li>
<li><a href="">一级导航</a>
<ul class="box1">
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
</ul>
</li>
<li><a href="">一级导航</a>
<ul class="box1">
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
</ul>
</li>
<li><a href="">一级导航</a>
<ul class="box1">
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
<li><a href=""> 二级导航</a>
<ul class="box2">
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
<li>三级导航</li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
这篇博客为初学者提供了使用CSS3过渡效果来简易实现三级菜单的思路。通过设置容器、菜单ul的样式,以及利用absolute定位、opacity和transition属性,实现菜单的显示与隐藏效果。同时介绍了visibility属性在布局中的作用,以及相对和绝对定位的区别。
789

被折叠的 条评论
为什么被折叠?



