js实现简洁的滑动门菜单(选项卡)效果代码

下面我将详细讲解“js实现简洁的滑动门菜单(选项卡)效果代码”的完整攻略。

一、需求分析

我们需要实现一个简洁的滑动门菜单效果,点击菜单选项时,显示对应的内容区域,同时将当前选项高亮显示。具体实现步骤如下:

  1. 定义html结构,包含菜单选项和对应的内容区域。
  2. 使用CSS设置菜单选项和内容区域的布局样式,使其呈现滑动门效果。
  3. 使用JavaScript实现点击事件,控制对应内容区域的显示和当前选项的高亮。

二、代码实现

接下来,我将分两个示例进行代码实现说明。

示例1

1. HTML结构

<div class="menu">
  <ul>
    <li class="active">选项1</li>
    <li>选项2</li>
    <li>选项3</li>
  </ul>
  <div class="content active">内容1</div>
  <div class="content">内容2</div>
  <div class="content">内容3</div>
</div>

2. CSS样式

.menu {
  display: flex;
  flex-direction: column;
  align-items: center;
}

ul {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 0;
}

li {
  padding: 10px;
  cursor: pointer;
  margin: 10px;
  border: 1px solid #333;
}

.content {
  padding: 20px;
  display: none;
}

.active {
  background-color: #333;
  color: #fff;
}

li.active {
  color: #fff;
}

3. JavaScript实现

function toggleMenu(index) {
  const contents = document.querySelectorAll('.content');
  const items = document.querySelectorAll('li');

  [...contents].forEach(content => {
    content.classList.remove('active');
    content.style.display = 'none';
  })

  [...items].forEach(item => {
    item.classList.remove('active');
  })

  contents[index].classList.add('active');
  contents[index].style.display = 'block';

  items[index].classList.add('active');
}

const items = document.querySelectorAll('li');
[...items].forEach((item, index) => {
  item.addEventListener('click', () => {
    toggleMenu(index);
  })
})

示例2

1. HTML结构

<div class="menu">
  <ul>
    <li class="active">选项1</li>
    <li>选项2</li>
    <li>选项3</li>
  </ul>
  <div class="slider"></div>
  <div class="content active">内容1</div>
  <div class="content">内容2</div>
  <div class="content">内容3</div>
</div>

2. CSS样式

.menu {
  position: relative;
  min-height: 100px;
}

ul {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 0;
}

li {
  padding: 10px;
  cursor: pointer;
  margin: 10px;
  border: 1px solid #333;
  z-index: 1;
}

.slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 80px;
  height: 100%;
  background-color: #333;
  z-index: -1;
  transition: 0.3s ease;
}

.content {
  padding: 20px;
  display: none;
  z-index: -1;
  position: absolute;
  top: 0;
  left: 0;
}

.active {
  background-color: #333;
  color: #fff;
  z-index: 10;
}

li.active ~ .slide {
  transform: translateX(calc(100% / 3 * (1 - var(--index))));
}

3. JavaScript实现

const items = document.querySelectorAll('li');
const slide = document.querySelector('.slide');
const contents = document.querySelectorAll('.content');

[...items].forEach((item, index) => {
  item.addEventListener('click', () => {
    slide.style.setProperty('--index', index);
    [...items].forEach(item => {
      item.classList.remove('active');
    })
    [...contents].forEach(content => {
      content.classList.remove('active');
    })
    item.classList.add('active');
    contents[index].classList.add('active');
  })
})

三、总结

以上就是实现简洁的滑动门菜单效果的完整攻略和两个示例代码实现。要注意的是,在实现过程中,需要灵活运用HTML、CSS和JavaScript等技术,同时要注意代码的可读性和可维护性。希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现简洁的滑动门菜单(选项卡)效果代码 - Python技术站

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

相关文章

  • JavaScript定义类或函数的几种方式小结

    JavaScript 定义类或函数的几种方式有很多,可以根据不同需要来选择。下面将详细介绍常见的几种方式。 1. 使用函数定义 定义一个函数,并且在函数内创建一个对象,最后将这个对象返回,就可以创建一个类。 示例代码如下: function Person(name, age) { this.name = name; this.age = age; } Per…

    JavaScript 2023年5月27日
    00
  • ImageZoom 图片放大镜效果(多功能扩展篇)

    ImageZoom是一款非常实用的图片放大镜效果插件,通过该插件可以实现图片放大、缩小、滑动等操作,增强了用户的交互体验。本篇攻略将从多个方面对ImageZoom进行扩展并实例演示,具体如下: 安装 首先,我们需要在页面中引入ImageZoom的相关文件。可以通过cdnjs或unpkg等CDN包管理工具引入ImageZoom的css和js文件。 <he…

    JavaScript 2023年6月10日
    00
  • jquery获取URL中参数解决中文乱码问题的两种方法

    接下来我将详细讲解“jquery获取URL中参数解决中文乱码问题的两种方法”的完整攻略。 问题描述 由于中国所有的编码都是基于 Unicode,因此 UTF-8 编码也经过传递被应用在了 URL 地址中。而浏览器在向服务器传递请求的时候,会自动将请求参数进行编码(包括中文),所以在 URL 中看起来是一堆乱码,而我们在使用 jQuery 获取 URL 中的参…

    JavaScript 2023年5月19日
    00
  • JavaScript本地储存:localStorage、sessionStorage、cookie的使用

    JavaScript本地储存:localStorage、sessionStorage、cookie的使用 什么是本地储存? 在网站开发中,需要将一些数据临时储存起来。本地储存技术就是把数据储存在客户端浏览器中,这样就可以避免跨页面、跨域、跨浏览器的问题,提高网站的性能和用户体验。本地储存技术通常包括localStorage、sessionStorage和Co…

    JavaScript 2023年6月10日
    00
  • js读取cookie方法总结

    JS 读取 Cookie 方法总结 什么是 Cookie? Cookie 是一种存储在用户计算机上的小文件,包含了与某个网站相关的用户信息。浏览器每次向服务器发送请求时,会将 Cookie 信息附加在 HTTP 请求头部中,服务器端可以通过从头部解析得到的 Cookie 信息来判断用户状态并作出相应的响应。 如何读取 Cookie? 以下是几种常用的 JS …

    JavaScript 2023年6月11日
    00
  • 几个比较实用的JavaScript 测试及效验工具

    接下来我将向你介绍几个比较实用的 JavaScript 测试及效验工具,包括单元测试工具 Jest、代码质量工具 ESLint、以及文档生成工具 JSDoc,并且会附上相应的示例说明。 Jest:JavaScript 测试框架 Jest 是由 Facebook 开发推出的一款 JavaScript 测试框架,它可以用于执行单元测试、集成测试和端到端测试,可以…

    JavaScript 2023年5月27日
    00
  • 谷歌浏览器调试JavaScript小技巧

    谷歌浏览器调试JavaScript小技巧完整攻略 一、什么是调试JavaScript 调试JavaScript指的是通过开发工具在浏览器中检查代码并处理错误的过程。调试JavaScript的好处是可以快速找到问题和更容易地理解代码。在开发过程中,调试工具经常使用,可以帮助开发人员更快地检测问题并提高代码的质量。 二、如何在谷歌浏览器中使用调试工具 为了使用谷…

    JavaScript 2023年6月11日
    00
  • js实现星星闪特效

    首先介绍一下实现星星闪特效的基本思路,整个流程分为以下几步: 随机生成 N 个星星的位置和大小 再随机为每个星星设置一个动画延迟时间 使用 CSS3 动画为每个星星设置闪烁效果 可以通过 js 实现控制整个星空的暂停和继续 接下来,我将逐步详细讲解。 1. 随机生成 N 个星星的位置和大小 首先需要使用 js 随机生成一组星星的位置和大小,这可以使用循环来实…

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