CSS3 二级导航菜单的制作的示例


Posted in HTML / CSS onApril 02, 2018

如果想要实现网页的二级导航,我们可以使用JS技术,动态的显示和隐藏二级菜单,当然也可以使用CSS技术来实现。并且这里推荐使用CSS,因为其效率更高,更流畅。这里将介绍二级菜单的动态显示与隐藏。

1 结构

一般导航的主体我们主要是使用ul li标签

<body>
    <header>
        <!-- 一级导航开始 -->
        <nav>
            <ul class="menu">
                <li>
                    <a href="#">首页</a>
                </li>
                <li>
                    <a href="#">产品</a>
                    <!-- 二级导航开始 -->
                    <ul class="submenu">
                        <li><a href="#">小程序</a></li>
                        <li><a href="#">微信</a></li>
                        <li><a href="#">企业站</a></li>
                    </ul>
                    <!-- 二级导航结束 -->
                </li>
                <li>
                    <a href="#">服务</a>
                    <!-- 二级导航开始 -->
                    <ul class="submenu">
                        <li><a href="#">技术支持</a></li>
                        <li><a href="#">产品外包</a></li>
                    </ul>
                    <!-- 二级导航结束 -->
                </li>
                <li><a href="#">关于我们</a></li>
                <li><a href="#">人才招聘</a></li>
            </ul>
        </nav>
        <!-- 一级导航结束 -->
    </header>
</body>

2 布局

导航的布局,由于子元素要随着父元素,所以对二级菜单选取定位布局。要想让多个li在一行中显示,那么就需要让li进行浮动。

body{margin: 0; font-size: 14px; color: #666}
        ul,ol{margin: 0;padding: 0; list-style: none;}
        a {text-decoration: none; color: #666;}
        /*一级导航*/
        /*背景色*/
        ul.menu,ul.submenu {
            background-color: #ededed;
        }
        /*一级导航浮动*/
        ul.menu::after {
            content: '';
            display: block;
            clear: both;
        }
        ul.menu > li {
            float: left;
            width: 120px;
            line-height: 3em;
            height: 3em;
            text-align: center;
            cursor:pointer;
        }
    
        /*二级导航项分割线*/
        ul.submenu {
            /*默认隐藏*/
            display: none;
        }
        ul.submenu > li {
            border-bottom: 1px solid #fff;
        }
        
        /*内容区*/
        .content {
            min-height: 800px;
            background-color: #fff;
        }

3. 二级菜单显示特效

光标放到导航上,当前元素背景色变深,字体颜色变淡。

如果有二级菜单,显示二级菜单

为了实现上述两个特效,我们可以利用伪类选择器(:hover)来捕捉光标悬浮的操作。并且使用伪类选择器(:hover)来选择到当前菜单对应的二级菜单

利用如下CSS可以快速实现该特效。

/*选中特效*/
        ul.menu > li:hover {
            background-color: #666;
        }
        ul.menu > li:hover > a {
            color: #fff;
        }
        ul.menu > li:hover > ul.submenu {
            display: block;
        }

4. 动画

上述代码中二级菜单的显示是瞬间的。能否提供一个缓慢动画过渡的效果,当然也是没问题。这里需要使用animation来进行动画的配置,那么动画帧可以自己写或者是寻求第三方代码库(animate.css)的支持。这里我将使用透明度来实现这个淡入效果

/*动画帧*/
        @keyframes fade {
            from {
                opacity: 0;
            }
            to {
                opacity: 1;
            }
        }
        /*基础动画样式*/
        .animated {
            animation-duration: 1s;
            animation-fill-mode: both;
        }
        .fadeIn {
            animation-name: fade;
            animation-direction: normal;
        }

动画定义好后,可以直接将动画样式引用到ul.submenu上,注意,如果使用的是animate.css,那么上述步骤将省略,直接用其提供好的动画样式即可。

 

<!-- 二级导航开始 -->
        <ul class="submenu animated fadeIn">
            <li><a href="#">小程序</a></li>
            <li><a href="#">微信</a></li>
            <li><a href="#">企业站</a></li>
        </ul>
        <!-- 二级导航结束 -->

CSS3 二级导航菜单的制作的示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
网页布局中CSS样式无效的十个重要原因详解
Aug 10 HTML / CSS
css实例教程 一款纯css3实现的超炫动画背画特效
Nov 05 HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
Dec 06 HTML / CSS
纯css3制作煽动翅膀的蝴蝶的示例
Apr 23 HTML / CSS
css3中flex布局宽度不生效的解决
Dec 09 HTML / CSS
HTML5 canvas实现雪花飘落特效
Mar 08 HTML / CSS
HTML5 Canvas 起步(2) - 路径
May 12 HTML / CSS
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
Dec 13 HTML / CSS
html5中地理位置定位api接口开发应用小结
Jan 04 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
Dec 15 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
Apr 20 HTML / CSS
css之clearfix的用法深入理解(必看篇)
May 21 HTML / CSS
CSS3实现全景图特效示例代码
Mar 26 #HTML / CSS
css3新单位vw、vh的使用教程
Mar 23 #HTML / CSS
巧用CSS3的calc()宽度计算做响应模式布局的方法
Mar 22 #HTML / CSS
利用css3径向渐变做一张优惠券的示例
Mar 22 #HTML / CSS
css3 边框、背景、文本效果的实现代码
Mar 21 #HTML / CSS
利用CSS3 动画 绘画 圆形动态时钟
Mar 20 #HTML / CSS
css3 矩阵的使用详解
Mar 20 #HTML / CSS
You might like
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
一个简单的js动画效果代码
2010/07/20 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
Angular4学习笔记router的简单使用
2018/03/30 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
pandas重新生成索引的方法
2018/11/06 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
白酒业务员岗位职责
2013/12/27 职场文书
房屋出租委托书格式
2014/09/23 职场文书
服务员岗位职责
2015/02/03 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python