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 json字符串到json对象转义问题

    接下来我将为您详细讲解“JavaScript JSON字符串到JSON对象转义问题”的完整攻略。 背景 在JavaScript开发中,我们通常需要对JSON字符串进行解析,将其转换为JavaScript对象。JSON字符串是一种轻量级的数据格式,在不同的场景中被广泛使用。但是在实际开发中,我们可能会遇到JSON字符串中的特殊字符不能够被正确解析的情况,这时候…

    JavaScript 2023年5月27日
    00
  • js日历控件(可精确到分钟)

    首先介绍一下JS日历控件的基础要素: HTML结构 <input type="text" id="input-time" name="time" placeholder="选择时间" readonly> CSS样式 这里我们采用了Bootstrap的样式,如果你没有引…

    JavaScript 2023年5月27日
    00
  • 基于JavaScript实现年月日三级联动

    下面我就来详细讲解一下如何基于JavaScript实现年月日三级联动。 实现原理 实现年月日三级联动主要需要三个下拉框,分别表示年、月、日。通过JavaScript动态生成年份和月份的下拉框选项,然后根据选中的年份和月份动态生成对应的日期选项。在选项变化时,页面自动根据选中内容更新显示内容。 具体实现流程如下: 定义HTML页面,包括三个下拉框,分别表示年、…

    JavaScript 2023年6月10日
    00
  • js使用对象直接量创建对象的代码

    通过使用对象直接量,我们可以方便快捷地创建JavaScript对象。在这篇攻略中,我将详细介绍如何使用对象直接量来创建对象,并提供两个示例以帮助您更好地理解。 什么是对象直接量? JavaScript对象可以通过使用对象直接量的方法来创建。对象直接量使用一对花括号 {} 来包含对象的属性和方法。下面是一个使用对象直接量创建对象的示例代码: var perso…

    JavaScript 2023年5月27日
    00
  • js与jQuery实现的兼容多浏览器Ajax请求实例

    针对“js与jQuery实现的兼容多浏览器Ajax请求实例”这一主题,我将提供以下完整攻略: 步骤1:引入jQuery库到你的项目中 使用jQuery库的最简单方式是从官网下载或链接CDN,并在你的项目中引入。以下是引入jQuery的示例代码: <!DOCTYPE html> <html> <head> <title…

    JavaScript 2023年6月11日
    00
  • 8个JavaScript中高阶函数的运用分享

    8个JavaScript中高阶函数的运用分享 什么是高阶函数 高阶函数是指接收函数作为参数和/或返回函数作为结果的函数。JavaScript中的函数是第一类对象,因此函数也可以像变量一样进行传递和操作。高阶函数是JavaScript中非常常见的编程模式,使用高阶函数可以提高代码的重用性和可读性。 具体运用 1. map() map()方法是在JavaScri…

    JavaScript 2023年5月18日
    00
  • 最全的JavaScript开发工具列表 总有一款适合你

    最全的JavaScript开发工具列表 总有一款适合你 如今,JavaScript作为一门广受欢迎的编程语言,已经成为前端开发的基础。因此,选择合适的JavaScript开发工具是非常重要的。在本篇文章中,将为大家介绍最全的JavaScript开发工具列表,帮助读者找到最适合自己的开发工具。 一、编译工具 Babel Babel是一个由JavaScript编…

    JavaScript 2023年5月18日
    00
  • JavaScript 语句之常用 for 循环详解

    JavaScript 语句之常用 for 循环详解 for 循环是 JavaScript 中最基本的循环结构之一,它可以让我们重复执行一个代码块多次,非常的灵活、简单易懂。在本文中,我们将详细讲解 for 循环的语法、用法以及示例说明。 for 循环的语法 for 循环的语法如下: for (初始化表达式; 条件表达式; 循环后操作表达式) { // 循环代…

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