Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码

yizhihongxing

以下是详细讲解“Html+Css+Jquery实现左侧滑动拉伸导航菜单栏”的完整攻略:

一、基本思路

实现左侧滑动拉伸导航菜单栏的基本思路是:使用HTML、CSS和jQuery等技术实现页面布局和交互效果,具体步骤如下:

  1. 使用HTML实现页面结构,包括页头和页脚、左侧导航菜单和主内容区域等。

  2. 使用CSS实现页面布局效果,包括三栏布局和导航菜单的样式等。

  3. 使用jQuery实现导航菜单的交互效果,包括导航菜单的滑动展开和收缩、主内容区域的宽度变化等。

二、示例说明

下面我们分别介绍两个示例,帮助读者更好地理解“Html+Css+Jquery实现左侧滑动拉伸导航菜单栏”的实现过程。

示例一

这是一个较为简单的示例,实现了左侧导航菜单的展开和收缩、主内容区域的宽度变化等效果。示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>左侧滑动拉伸导航菜单栏示例</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            height:100%;
            overflow:hidden;
            font-family: "Microsoft YaHei", sans-serif;
        }
        .container{
            height:100%;
            display:flex;
        }
        .nav{
            width:120px;
            height:100%;
            background-color: #f4f4f4;
            overflow:hidden;
            position:relative;
        }
        .nav .menu{
            position:absolute;
            top:50%;
            width:120px;
            margin-top:-75px;
        }
        .nav .menu a{
            display:block;
            width:120px;
            height:50px;
            padding:10px;
            border-bottom:1px solid #e1e1e1;
            color:#4d4d4d;
            font-size:16px;
            line-height:30px;
            text-align:center;
            text-decoration:none;
            background-color:#f4f4f4;
        }
        .nav .menu a.active{
            background-color:#ffffff;
            font-weight:bold;
            color:#29a3a3;
        }
        .main{
            height:100%;
            flex:1;
            background-color:#ffffff;
            overflow:hidden;
            position:relative;
        }
        .main .header{
            height:50px;
            line-height:50px;
            background-color:#f4f4f4;
            text-align:center;
            font-size:16px;
            border-bottom:1px dashed #e1e1e1;
        }
        .main .content{
            height:100%;
            padding:20px;
            text-align:center;
            font-size:50px;
        }
        .main .resize{
            width:5px;
            height:100%;
            background-color:#f4f4f4;
            position:absolute;
            top:0;
            right:-2px;
            cursor:col-resize;
            z-index:1;
        }
    </style>
    <script src="jquery.min.js"></script>
    <script>
        $(function () {
            $(".menu a").click(function () {
                $(".menu a").removeClass("active");
                $(this).addClass("active");
            });
            var flag=true;
            $(".resize").mousedown(function () {
                flag=false;
                $(document).mousemove(function (event) {
                    if(flag==false){
                        var x=event.pageX;
                        $(".nav").css("width",x);
                        $(".main").css("left",x);
                    }
                })
            });
            $(document).mouseup(function () {
                flag=true;
                $(document).unbind("mousemove");
            })
        });
    </script>
</head>
<body>
<div class="container">
    <div class="nav">
        <div class="menu">
            <a href="#" class="active">菜单一</a>
            <a href="#">菜单二</a>
            <a href="#">菜单三</a>
            <a href="#">菜单四</a>
            <a href="#">菜单五</a>
            <a href="#">菜单六</a>
            <a href="#">菜单七</a>
            <a href="#">菜单八</a>
            <a href="#">菜单九</a>
            <a href="#">菜单十</a>
        </div>
        <div class="resize"></div>
    </div>
    <div class="main">
        <div class="header">左侧滑动拉伸导航菜单栏示例</div>
        <div class="content">这是主要内容区域</div>
    </div>
</div>
</body>
</html>

在这个示例中,我们使用flex布局实现了三栏布局(容器div.container包含左侧导航菜单div.nav和主内容区域div.main),其中左侧导航菜单div.nav中包含一个div.menu和一个div.resize,分别用于展示菜单列表和实现左侧菜单区域的拖拽效果。具体实现过程如下:

  1. 设置body和.container元素的height为100%,让网页占据整个浏览器客户端区域。

  2. 使用flex布局使得.container元素的子元素div.nav和div.main各占据整个可用空间(即左侧导航菜单和主内容区域的宽度比为1:2)。

  3. 对于左侧导航菜单div.nav,首先设置宽度为120px,其次将内部菜单列表div.menu absolute定位,并设置top为50%使其在导航菜单区域垂直居中,其余样式的设置均为对内部菜单列表div.menu中的每个菜单项a元素进行的。

  4. 主内容区域div.main中的元素布局比较简单,只有头部div.header和内容区域div.content,其中头部设置了相应的样式来实现下边框的虚线效果。

  5. 左侧导航菜单区域的拖拽效果实现是通过绑定mousemove事件来对左侧导航菜单和主内容区域的宽度进行调整的,具体实现过程中,我们使用了一个flag变量来判断当前是否处于拖拽状态,以及利用unbind函数来解除鼠标松开事件的绑定。

示例二

这是一个稍微复杂一些的示例,主要增加了左侧导航菜单栏中悬浮菜单区域的动态展示效果。示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>左侧滑动拉伸导航菜单栏示例</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src="jquery.min.js"></script>
    <script>
        $(function () {
            $(".menu-list>li>a").click(function () {
                var submenu=$(this).siblings(".submenu");
                if(submenu.is(":visible")){
                    submenu.hide(300);
                    $(this).removeClass("open");
                }else{
                    submenu.show(300);
                    $(this).addClass("open");
                }
            });
            var flag=true;
            $(".resize").mousedown(function () {
                flag=false;
                $(document).mousemove(function (event) {
                    if(flag==false){
                        var x=event.pageX;
                        $(".nav").css("width",x);
                        $(".main").css("left",x);
                    }
                })
            });
            $(document).mouseup(function () {
                flag=true;
                $(document).unbind("mousemove");
            })
        });
    </script>
</head>
<body>
<div class="container">
    <div class="nav">
        <div class="menu-list">
            <li>
                <a class="menu-item" href="#">
                    <i class="iconfont">&#xe60a;</i><span>模板</span>
                    <span class="arrow"></span>
                </a>
                <div class="submenu">
                    <a href="#">模板一</a>
                    <a href="#">模板二</a>
                    <a href="#">模板三</a>
                    <a href="#">模板四</a>
                </div>
            </li>
            <li>
                <a class="menu-item" href="#">
                    <i class="iconfont">&#xe60a;</i><span>组件</span>
                    <span class="arrow"></span>
                </a>
                <div class="submenu">
                    <a href="#">组件一</a>
                    <a href="#">组件二</a>
                    <a href="#">组件三</a>
                    <a href="#">组件四</a>
                </div>
            </li>
            <li>
                <a class="menu-item" href="#">
                    <i class="iconfont">&#xe60a;</i><span>插件</span>
                    <span class="arrow"></span>
                </a>
                <div class="submenu">
                    <a href="#">插件一</a>
                    <a href="#">插件二</a>
                    <a href="#">插件三</a>
                    <a href="#">插件四</a>
                </div>
            </li>
        </div>
        <div class="resize"></div>
    </div>
    <div class="main">
        <div class="header">左侧滑动拉伸导航菜单栏示例</div>
        <div class="content">这是主要内容区域</div>
    </div>
</div>
</body>
</html>

在这个示例中,我们仍然使用flex布局实现了三栏布局,其中左侧导航菜单div.nav中包含了一个ul元素和一个div.resize,ul中的每个li元素是一个悬浮菜单项,其下方包含了一个隐藏的div子元素.submenu,当li元素被点击时,通过判断子元素的显示状态来进行动态切换。具体实现过程如下:

  1. 左侧导航菜单栏的样式使用了阿里图标库中的图标,通过对一些css样式的调整,使得整个菜单区域更加美观。

  2. 对于左侧导航菜单栏中的每个菜单项,通过设置一个arrow元素,可以在事件触发时动态切换其方向。

  3. 在左侧导航菜单栏中添加了一个resize元素,通过对resize元素绑定鼠标拖拽事件,来实现左侧导航菜单栏动态拉伸和收缩的展现效果。

  4. 在左侧导航菜单栏的悬浮菜单区域的动态展示效果中,我们使用了jQuery中的show()和hide()函数,动态切换子元素的显示状态,并通过addClass()和removeClass()函数来动态切换图标方向。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • 谷歌浏览器怎么去掉默认焦点边框(input边框)?

    要去掉谷歌浏览器默认的焦点边框(input边框),可以通过CSS样式来进行设置,具体的步骤如下: Step 1:为input元素设置CSS样式 input:focus { outline: none; } 在上面的CSS样式中,我们设置了当input元素获得焦点时,将其默认的焦点边框样式设置为none。这样,当用户在输入框中输入内容时,就不会被默认的边框样式…

    css 2023年6月10日
    00
  • JavaScript do while使用方法

    JavaScript中do while语句是一种循环语句,它会重复执行一段代码块,直到指定条件不再满足为止。与while语句不同,首先会执行一次循环体的代码,然后才会进行条件判断。因此,do while语句至少会执行一次。 语法: do { // 循环体代码 } while (condition); 循环体代码:要执行的代码块,包含在花括号内。 condit…

    Web开发基础 2023年3月30日
    00
  • 微信小程序实现时间预约功能

    微信小程序实现时间预约功能攻略 一、背景 微信小程序可以在微信中无需下载安装即可使用的一种应用,很受用户欢迎。实现时间预约功能,可以让用户在线提交预约需求,从而提高用户体验。 二、实现步骤 本攻略中,我们以微信开发者工具为例,演示如何实现时间预约功能。 2.1 创建页面 首先,在微信开发者工具中创建一个新页面,页面名称为「appointment」。 2.2 …

    css 2023年6月10日
    00
  • CSS实现页面九宫格布局的简单示范

    前言: 九宫格布局是一种常见的页面布局方式,可以用于展示产品、图片等内容。本文将介绍如何使用CSS实现页面九宫格布局的简单示范,希望能对网页设计和开发有所帮助。 一、HTML结构 首先,需要在HTML中创建一个父元素,九宫格的格子使用子元素实现,如下所示: <div class="grid-container"> <di…

    css 2023年6月11日
    00
  • 16进制颜色代码(完全)

    16进制颜色代码(完全)攻略 什么是16进制颜色代码? 16进制颜色代码是一种用16进制表示红、绿、蓝三原色的值的代码,常用于Web开发和设计中设置颜色。 16进制颜色代码的格式 每个16进制颜色代码包括一个井号 “#” 和6位十六进制数,每两位代表一个色值,分别用0-9和A-F表示,如#FF0000表示红色。这6位十六进制数分别对应红、绿、蓝三原色的值,取…

    css 2023年6月9日
    00
  • css 层叠与z-index的示例代码

    我们来详细讲解一下 CSS 层叠与 z-index 的示例代码。首先,需要了解一些基本概念: CSS 层叠(Cascade),是指同时存在多个 CSS 规则时,根据一定的优先级来决定应用哪条规则的流程。 z-index 属性用于控制堆叠顺序,数值越大的元素越在上面。 接下来,我们来看两个示例: 示例1 HTML 代码: <div class=&quot…

    css 2023年6月10日
    00
  • css一些不常见但很有用的属性操作大全

    好的!下面我将为您详细讲解CSS一些不常见但很有用的属性操作大全。 一、CSS常用单位中的em、rem和vh、vw 1. em和rem em是相对长度单位,它依赖于所在元素的字体大小。 rem也是相对长度单位,但是相对于根元素(html元素)的字体大小。 具体使用: /*先定义body的font-size*/ body { font-size: 16px; …

    css 2023年6月9日
    00
  • 使用CSS3实现选项卡切换的方法

    使用CSS3实现选项卡切换是一种常见的网页交互形式,可以为用户提供更好的页面使用体验。下面是实现选项卡切换的完整攻略: 1. HTML结构 选项卡切换的实现离不开HTML结构的设计。常见的选项卡切换结构如下: <div class="tab-container"> <div class="tab-header&…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部