前端开发css实战:使用css制作网页中的多级菜单

  在日常工作中,大家都会遇到一些显示隐藏类菜单,比如页头导航、二维码显示隐藏、文本提示等等......而这些效果都是可以使用纯css实现的(而且非常简单),使用css的优势显而易见,它可以使页面中的javascript变得更少。

  实现逻辑:

        核心:hover伪类控制子元素的显示隐藏,添加css3动画;  (没错就是这样简单)

        :hover伪类,适用于当用户指向一个元素时,例如用户的鼠标指向一个段落p。当用户鼠标离开元素时,恢复元素原有的样式显示

  实现代码:

   

<style type="text/css">
*{margin: 0; padding: 0;}
    ul{ list-style: none; }
    a{text-decoration: none;}
    
        .nav{ height: 50px;
            font-size: 14px;
             background-color:#0081C2;
         }
        .nav ul{ width: 90%; margin: 0 auto;}
        .nav ul li{
            display: inline-block;
            width: 15%; height:50px;
            text-align: center; line-height: 45px;
            position: relative;
            }
/*menu相对li定位 并默认隐藏*/
 .menu{ position: absolute;
                left: 0; top:50px;
                width: 100%; background-color: #005580;
                line-height: 33px;
                display: none;  
            }
        .menu p{ width: 100%; height: 35px;}
        .menu p a:hover{ color: #dfdfdf;}
        .nav ul li a{display: block;
                    width: 100%;  height: 100%;
                    color: #ffffff; text-align: center;
                }
  /*当li鼠标hover时显示*/
        .nav ul li:hover{ background-color: #00007D;}
        .nav ul li:hover .menu{ display: block;}
       
</style> <div class="nav">
<ul>
<li>
<a href="#">菜单选项一</a>
<div class="menu">
<p><a href="#">二级菜单1</a></p>
<p><a href="#">二级菜单2</a></p>
<p><a href="#">二级菜单3</a></p>
<p><a href="#">二级菜单4</a></p>
</div>
</li>
<li>
<a href="#">菜单选项二</a>
<div class="menu">
<p><a href="#">二级菜单1</a></p>
<p><a href="#">二级菜单2</a></p>
<p><a href="#">二级菜单3</a></p>
<p><a href="#">二级菜单4</a></p>
</div>
</li>
<li><a href="#">菜单选项三</a></li>
<li><a href="#">菜单选项四</a></li>
<li><a href="#">菜单选项五</a></li>
<li><a href="#">菜单选项六</a></li>
</ul>
</div>

效果:


来看看实现的思路:

  

.nav ul li:hover{ background-color: #00007D;}
.nav ul li:hover .menu{ display: block;}

 

这就是核心;也就是这两行css搞定了一个竖向的二级菜单,当li元素hover鼠标移上的时候将menu显示,如果我们需要给它添加一个动画效果,可以使用css3来搞定

  

.menu{ position: absolute;
left:;
width: 100%; background-color: #005580;
line-height: 33px;
z-index: -1; transition: all 500ms;    //添加一个500ms的css3动画效果
top: -200px;
opacity:;
} .nav ul li:hover .menu{ top: 50px;opacity: 1;}    //hover时改变他它的top与透明度

下面博主也给出javascript的写法,这种写法用在需要从服务端获取较多数据的情况下,通过ajax异步获取菜单数据,所以必须用到javascript事件控制二级菜单;

    .nav ul li.active{ background-color: #00007D;}
.nav ul li.active .menu{top: 50px;opacity:;}
$(".nav>ul>li").hover(function(){    //hover事件
  
   ....其他代码
$(this).siblings("li").removeClass("active");
$(this).addClass("active");    //激活状态 显示menu
},function(){
$(".nav>ul>li").removeClass("active");
});

最后总结:

    css的伪类hover可以做出很多更有趣的效果。

    当可以使用css解决一个效果的时候,应该尽量使用css解决,已减少javascript性能开销

 

------------------------------------合理规划你的学习路线,是成功的不二法门----------------------------------------

前端开发css实战:使用css制作网页中的多级菜单的更多相关文章

  1. 用grunt搭建自动化的web前端开发环境实战教程(详细步骤)

    用grunt搭建自动化的web前端开发环境实战教程(详细步骤) jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用!前端自动化, ...

  2. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...

  3. [转载]Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    http://brackets.io/ Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维 ...

  4. 前端开发之-------------合理利用CSS的权重----------------

    什么是CSS的权重?对于前端工程师来说,这是一个很基础的问题,如果前端工程师没有深刻理解这个概念,则很难写出高质量的CSS代码. 那么到底什么是CSS的权重呢?我们又怎么来进行判定CSS的权重呢? 讨 ...

  5. 前端开发【第二篇: css】

    css概述 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS ...

  6. 利用CSS的@font-face属性 在网页中嵌入字体

    字体使用是网页设计中不可或缺的一部分.网页是文字的载体,我们希望在网页中使用某一特定字体,但是该字体并非主流操作系统的内置字体,这样用户在浏览页面的时候就有可能看不到真实的设计. 美工设计师最常做的办 ...

  7. 网页字体在Frontpage2000制作网页中的讲解

    运用HTML,我们可以对字体的大小及字形进行简单的修改,但要进行统一地控制.创建特殊效果,就必须要用到CSS.它能让您更有效地控制网页外观,并可以扩充精确指定网页元素位置,外观以及创建特殊效果的能力. ...

  8. css实战#用css画一个中国结

    大家好!今天跟大家分享一个用 css 画中国结的教程.最终效果如下: 大家如果感兴趣可以参考我的源码:gitHub地址 首先,我们定义好画中国结需要的结构: <div class="k ...

  9. css3制作网页中常见的小箭头

    /* css3三角形(向上 ▲) */ div.arrow-up { width:0px; height:0px; border-left:5px solid transparent;  /* 右透明 ...

随机推荐

  1. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

  2. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  3. 卸载oracle之后,如何清除注册表

    之前卸载了oracle,今天偶然间发现,在服务和应用程序里面,还残存着之前的oracle服务.原来,还需要去清理下注册表. 在开始菜单的这个框里面 输入regedit,进入注册表.找到这个目录 HKE ...

  4. javascript函数

    array.sort(function(a, b){ return a -b ; } )   把数组 array 按照从小到大排序. [11, 22, 586, 10, -58, 86].sort(f ...

  5. ABAP实现屏幕自己刷新和跳转功能

    ABAP开发工程中,有时候需要让跳转出的屏幕自动实现跳转和刷新的功能,该功能的实现需要在屏幕PBO 里面调用相应的事件执行. 关键代码为: SET TITLEBAR ' 屏幕自动程序'. IF g_c ...

  6. 树莓派3B的食用方法-1(装系统 网线ssh连接)

    首先要有一个树莓派3B , 在某宝买就行, 这东西基本上找到假货都难,另外国产和英国也没什么差别,差不多哪个便宜买哪个就行. 不要买店家的套餐,一个是配的东西有些不需要,有的质量也不好. 提示:除了G ...

  7. 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构

    前两篇体验了 QEMU 和经过 KVM 加速的 QEMU,并体验了第三方虚拟机管理工具 virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能.这一篇,我来剖析一下 Vi ...

  8. 新编码神器Atom使用纪要

    Atom是 Github 专门为程序员推出的一个跨平台文本编辑器.她很大程度上继承了SublimeText的美,而又不仅如此.有费了蛮大力气总结了一篇关于SublimeText文章: 如何优雅地使用S ...

  9. BIRCH聚类算法原理

    在K-Means聚类算法原理中,我们讲到了K-Means和Mini Batch K-Means的聚类原理.这里我们再来看看另外一种常见的聚类算法BIRCH.BIRCH算法比较适合于数据量大,类别数K也 ...

  10. 计算机程序的思维逻辑 (48) - 剖析ArrayDeque

    前面我们介绍了队列Queue的两个实现类LinkedList和PriorityQueue,LinkedList还实现了双端队列接口Deque,Java容器类中还有一个双端队列的实现类ArrayDequ ...