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

yizhihongxing

下面是详细的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日

相关文章

  • javascript 简单抽屉效果的实现代码

    JavaScript 简单抽屉效果,指的是当用户点击某个按钮或者元素时,让一个层次结构的一部分向上或向下展开或收起,制造出一种抽屉效果。实现这种效果需要用到 JavaScript 的基本 DOM 操作和 CSS 属性的处理。 实现步骤 1.HTML和CSS代码编写 首先,需要在 HTML 中定义一个包含展开和收起内容的容器。在这个容器内,需要有一个按钮或者元…

    css 2023年6月10日
    00
  • 分享自己用JS做的扫雷小游戏

    分享JS扫雷小游戏攻略 开发环境 编辑器:推荐使用VS Code 开发语言:HTML、CSS、JS 功能介绍 扫雷小游戏是一款休闲游戏,玩家需要在一定的时间限制内寻找出雷区,标记符号和方格来获取得分。游戏通过Bomb单元格来代表有雷的位置,并通过数字单元格来指示周围的雷数。 游戏规则 玩家需在固定时间内寻找所有雷的位置 点击标记按钮时,该单元格上会出现一个小…

    css 2023年6月9日
    00
  • 用js实现的自定义的对话框的实现代码

    此处提供实现自定义对话框的基本思路和代码示例。请注意,这只是一个示例,具体的实现过程可能因具体需求而异。 基本思路 要实现自定义对话框,需要用HTML、CSS和JavaScript实现一个弹出框,并将其放置在网页中需要的位置。以下是其基本思路: HTML中,先定义一个包含弹出框内容的div; CSS中,为这个div添加样式,使其从默认隐藏状态变为弹出框; J…

    css 2023年6月11日
    00
  • CSS3自定义滚动条样式的示例代码

    实现自定义滚动条样式,我们可以利用CSS3的伪元素选择器::-webkit-scrollbar和::-webkit-scrollbar-thumb来设置自定义样式。 以下是具体实现步骤: 首先,我们需要针对Webkit浏览器(如Chrome、Safari等)设置样式,因为其他浏览器对这些属性的支持不一致。 /* 针对Webkit浏览器设置样式 */ ::-w…

    css 2023年6月11日
    00
  • 详解CSS(层叠样式表)渐进增强

    CSS(层叠样式表)是一种用于描述网页样式的语言,可以用于控制网页的布局、颜色、字体等方面。渐进增强是一种设计理念,即在设计网页时,应该先考虑基本功能的实现,然后再逐步增加高级功能。以下是关于详解CSS(层叠样式表)渐进增强的完整攻略。 步骤一:基本样式 首先,需要定义网页的基本样式,包括布局、颜色、字体等方面。以下是一个示例: body { font-fa…

    css 2023年5月18日
    00
  • CSS中em的正确打开方式详解

    CSS中em的正确打开方式详解 什么是em? em是一个相对单位,它的大小取决于其所处的元素的字体大小。一般情况下,1em等同于元素的字体大小。 em的使用场景 父元素字体大小改变时,子元素的大小也会相应改变 在相对单位的情况下,可以灵活地根据浏览器缩放或者用户使用的设备的不同,自适应调整元素的大小 em的一些应用场景 设置行高 body { font-si…

    css 2023年6月10日
    00
  • 小三角的做法与使用

    小三角的做法与使用攻略 什么是小三角? 小三角(也叫三角括号)是一种在Markdown文本中表示代码块的语法结构,它由“`和“`组成,其中第一个三角括号后面可接语言类型,如下所示: print("Hello world!") 在上述代码块中,小三角括号的语言类型为Python,表示这里的代码是Python语言编写的。如果没有指定语言类…

    css 2023年6月9日
    00
  • 探索webpack模块及webpack3新特性

    探索webpack模块及webpack3新特性 Webpack 是什么? Webpack 是一个前端工具,用于打包(package) JavaScript 模块文件。 Webpack 有以下优点: 可以处理模块化代码和包含其他文件类型的文件 可以将代码按照优化级别分离打包,使应用加载更快 可以添加各种插件,增强功能 可以使用 webpack-dev-serv…

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