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 相关文章推荐
css3 background属性调整增强介绍
Dec 18 HTML / CSS
利用CSS3的transition属性实现滑动效果
Aug 05 HTML / CSS
CSS3的calc()做响应模式布局的实现方法
Sep 06 HTML / CSS
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
Nov 16 HTML / CSS
基于HTML5的WebSocket的实例代码
Aug 15 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
Mar 05 HTML / CSS
html5 canvas绘制放射性渐变色效果
Jan 04 HTML / CSS
html5 web本地存储将取代我们的cookie
Dec 26 HTML / CSS
Html5页面二次分享的实现
Jul 30 HTML / CSS
HTML5自定义视频播放器源码
Jan 06 HTML / CSS
HTML5超文本标记语言的实现方法
Sep 24 HTML / CSS
HTML5实现移动端点击翻牌功能
Oct 23 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
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
js动态引入的四种方法
2018/05/05 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
原生js实现密码强度验证功能
2020/03/18 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
Python3 Random模块代码详解
2017/12/04 Python
Django实现基于类的分页功能
2019/10/31 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
yy司仪主持词
2014/03/22 职场文书
本科生就业推荐信
2014/05/19 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
python代码实现扫码关注公众号登录的实战
2021/11/01 Python