jQuery+CSS实现一个侧滑导航菜单代码

下面是详细的jQuery+CSS实现一个侧滑导航菜单代码攻略:

一、思路梳理

实现一个侧滑导航菜单,需要满足以下需求:

  1. 需要一个触发菜单显示隐藏的开关按钮。
  2. 点击开关按钮时,侧滑菜单从左侧滑出。
  3. 点击开关按钮时,页面内容需要向右移动。
  4. 点击侧滑菜单上的链接时,需要关闭菜单。

因此,可以考虑使用jQuery实现菜单的显示和隐藏,使用CSS实现菜单的样式和动画效果。

二、示例代码

1. HTML布局

首先,需要在HTML中添加导航菜单和触发开关按钮的相关结构。

<body>
  <div class="menu-container">
    <div class="nav-menu">
      <ul>
        <li><a href="#">首页</a></li>
        <li><a href="#">产品中心</a></li>
        <li><a href="#">新闻中心</a></li>
        <li><a href="#">服务支持</a></li>
        <li><a href="#">关于我们</a></li>
      </ul>
    </div>
    <div class="menu-toggle">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </div>
  <div class="page-container">
    <!-- 页面内容 -->
  </div>
</body>

其中,.menu-container是整个侧滑菜单容器,.nav-menu是菜单的内容,.menu-toggle是开关按钮。

2. CSS样式

接下来需要添加CSS样式,实现菜单的样式和动画效果。

/* 导航菜单容器 */
.menu-container {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  overflow: hidden;
}

/* 菜单内容 */
.nav-menu {
  position: absolute;
  top: 0;
  left: -300px;
  width: 300px;
  height: 100%;
  background-color: #fff;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
  transition: all 0.3s ease-in-out;
  z-index: 999;
}

/* 开关按钮 */
.menu-toggle {
  position: fixed;
  top: 20px;
  left: 20px;
  width: 40px;
  height: 40px;
  cursor: pointer;
  z-index: 999;
}

.menu-toggle span {
  display: block;
  width: 100%;
  height: 2px;
  background-color: #000;
  margin-top: 8px;
  transition: all 0.3s ease-in-out;
}

.menu-toggle span:first-child {
  transform: translateY(-6px);
}

.menu-toggle span:last-child {
  transform: translateY(6px);
}

/* 页面内容 */
.page-container {
  position: relative;
  left: 0;
  transition: all 0.3s ease-in-out;
}

3. JavaScript代码

最后,需要添加jQuery代码,实现菜单的显示和隐藏,以及页面内容的移动效果。

$(function() {
  // 点击开关按钮显示或隐藏菜单
  $('.menu-toggle').click(function() {
    $('.nav-menu').toggleClass('show');
    $('.page-container').toggleClass('shift');
  });

  // 点击链接关闭菜单
  $('.nav-menu a').click(function() {
    $('.nav-menu').removeClass('show');
    $('.page-container').removeClass('shift');
  });
});

完成以上这些代码后,我们就可以得到一个简单的侧滑导航菜单了。

三、示例说明

下面将介绍两个使用示例:

示例一

针对于不同的屏幕尺寸,我们需要针对不同的设备进行响应式布局,即在小屏幕设备上,可以在点击开关按钮后菜单充满全屏,且菜单内容全部可见,在大屏幕设备上,菜单可以自动收拢起来。

<body>
  <header>
    <nav>
      <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Services</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </nav>
    <div class="menu-toggle">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </header>
  <div class="page-container">
    <!-- 页面内容 -->
  </div>
</body>
body {
  margin: 0;
  padding: 0;
}

header {
  background-color: #333;
  position: sticky;
  top: 0;
  z-index: 1;
}

nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px;
}

nav ul {
  display: none;
  position: absolute;
  top: 60px;
  left: 0;
  width: 100%;
  background-color: #333;
}

nav ul li {
  display: block;
  text-align: center;
  padding: 10px;
  border-bottom: 1px solid #666;
}

nav ul li:last-child {
  border: none;
}

nav ul li a {
  color: #fff;
}

.nav-show {
  display: block;
}

.page-container {
  padding: 10px;
}
$(document).ready(function() {
  $('.menu-toggle').click(function() {
    $('nav ul').toggleClass('nav-show');
  });
});

示例二

当我们需要在菜单栏中添加下拉菜单时,可以参照以下示例代码。

<body>
  <header>
    <nav>
      <ul>
        <li><a href="#">Home</a></li>
        <li>
          <a href="#">About</a>
          <ul>
            <li><a href="#">Mission</a></li>
            <li><a href="#">Vision</a></li>
          </ul>
        </li>
        <li><a href="#">Services</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </nav>
    <div class="menu-toggle">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </header>
  <div class="page-container">
    <!-- 页面内容 -->
  </div>
</body>
body {
  margin: 0;
  padding: 0;
}

header {
  background-color: #333;
  position: sticky;
  top: 0;
}

nav ul {
  display: flex;
  justify-content: space-between;
  align-items: center;
  list-style: none;
  padding: 10px;
  margin: 0;
}

nav ul li {
  position: relative;
}

nav ul li ul {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  width: 200px;
  padding: 0;
  margin: 0;
  background-color: #333;
}

nav ul li ul li {
  display: block;
  text-align: center;
  padding: 10px;
  border-bottom: 1px solid #666;
}

nav ul li ul li:last-child {
  border: none;
}

nav ul li ul li a {
  color: #fff;
}

nav ul li:hover ul {
  display: block;
}

nav ul li a {
  color: #fff;
  text-decoration: none;
}

.nav-show {
  display: block;
}

.page-container {
  padding: 10px;
}
$(document).ready(function() {
  $('.menu-toggle').click(function() {
    $('nav ul').toggleClass('nav-show');
  });
});

以上两个示例可以在页面中实现一个有下拉菜单、响应式的侧滑导航菜单。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery+CSS实现一个侧滑导航菜单代码 - Python技术站

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

相关文章

  • 纯CSS实现鼠标悬停显示图片效果的实例分享

    下面是“纯CSS实现鼠标悬停显示图片效果的实例分享”的完整攻略: 1.需求分析 我们需要实现当鼠标悬停在某个元素上时,显示相关的图片。 2.准备工作 首先我们需要准备好一些图片资源,把它们准备好。假设我们有以下三张图片:apple.jpg、banana.jpg、cherry.jpg。 3.实现过程 一个比较简单的实现方式是通过伪类:hover来实现。我们可以…

    css 2023年6月10日
    00
  • 深入解析动态加载css的实现方法

    深入解析动态加载CSS的实现方法需要以下步骤: 1. 创建动态插入CSS的函数 我们可以通过JS动态创建 标签,并将其插入到文档头部,从而实现CSS的动态加载。下面是一个实现动态插入CSS的函数: function dynamicLoadCss(cssUrl) { const link = document.createElement(‘link’); li…

    css 2023年6月9日
    00
  • 漂亮的Django Markdown富文本app插件的实现

    一、Django Markdown富文本app插件的实现 安装django-markdown-deux 要实现Django Markdown富文本app插件,首先需要安装一个Markdown库,这里我们使用django-markdown-deux库。可以通过命令行在虚拟环境中安装: pip install django-markdown-deux 配置set…

    css 2023年6月10日
    00
  • jQuery实现的淡入淡出图片轮播效果示例

    下面我来详细讲解如何实现“jQuery实现的淡入淡出图片轮播效果示例”这个任务。 任务概述 在这个任务中,我们将用 jQuery 实现一个图片轮播的效果。图片会以淡入淡出的方式进行切换。用户还可以通过向左/向右箭头控制轮播的方向,并且鼠标悬停在图片上时,轮播效果会暂停。 实现步骤 首先,我们需要编写 HTML 和 CSS,来展示轮播的图片和箭头。HTML代码…

    css 2023年6月11日
    00
  • Firefox中A元素包含Select时点击Select不能选择option bug

    “Firefox中A元素包含Select时点击Select不能选择option bug”攻略 问题描述 在 Firefox 浏览器中,当一个 a 标签元素包含一个 select 元素时,点击 select 元素不能够弹出下拉选项框,但是点击 select 元素旁边的空白区域却可以触发弹出下拉选项框。 解决方案 方案一:使用 onclick 事件替代 href…

    css 2023年6月11日
    00
  • Vue屏幕自适应三种实现方法详解

    大家好,今天我将为大家讲解一篇名为“Vue屏幕自适应三种实现方法详解”的文章,以下是本文的完整攻略: 1. 什么是屏幕自适应 屏幕自适应是指网站页面可以在不同分辨率的设备上自动缩放和布局,以达到更好的用户体验。 2. Vue屏幕自适应三种实现方法 本文介绍了三种Vue实现屏幕自适应的方法: 2.1 使用百分比布局 在Vue组件的template中使用百分比布…

    css 2023年6月10日
    00
  • 使用 CSS Paint API 动态创建与分辨率无关的可变背景效果

    使用 CSS Paint API 可以动态创建与分辨率无关的可变背景效果。步骤如下: 第一步:安装 CSS Paint Api 支持 CSS Paint API 是一个比较新的标准,目前只有部分浏览器支持,需要在 CSS 中通过 -webkit-paint 或 -moz-paint 属性来标明。具体地,在 CSS 中添加 -webkit-paint 标明支持…

    css 2023年6月9日
    00
  • 基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)

    下面是关于“基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)”的完整攻略。 什么是jQuery+HttpHandler图片裁剪? jQuery+HttpHandler图片裁剪是一种基于jQuery和HttpHandler实现的图片剪裁效果,适用于论坛、SNS等网站的用户上传图像时进行裁剪操作。 实现原理 使用jQuery插…

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