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

yizhihongxing

下面我将详细讲解“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. 变量与数据类型 JavaScript的数据类型分为基本数据类型和引用数据类型。基本数据类型包括数字、字符串、布尔值、null和undefined,引用数据类型包括对象、数组和函数。 1.1 变量的声明 在JavaScript中,通过 var、let、const 关键字声明一个变量。 var 声明的变量为函数作用域,let …

    JavaScript 2023年5月17日
    00
  • 使用bootstrapValidator插件进行动态添加表单元素并校验

    让我来为您详细讲解如何使用bootstrapValidator插件进行动态添加表单元素并校验。 1、bootstrapValidator简介 bootstrapValidator是一个基于Bootstrap的优秀表单验证插件,支持表单的实时验证和AJAX提交,提供多种验证方式,例如:必填、长度、邮箱、手机、网址等。 2、动态添加表单元素 当我们需要动态地添加…

    JavaScript 2023年5月19日
    00
  • JavaScript实现AOP详解(面向切面编程,装饰者模式)

    JavaScript实现AOP详解 什么是AOP AOP(Aspect Oriented Programming),中文译为面向切面编程,是一种编程方法论。它通过预编译方式和运行期动态代理实现程序功能的统一维护的方法。 AOP 解决的问题主要是将那些与业务无关,却为业务模块所共同调用的逻辑或责任进行封装,并分离出来,例如在不修改源代码的情况下统一添加日志记录…

    JavaScript 2023年5月27日
    00
  • js 使用ajax设置和获取自定义header信息的方法小结

    讲解“js 使用ajax设置和获取自定义header信息的方法小结”的完整攻略。如下所述: 1. 设置自定义header信息 使用Ajax在发送请求时,我们可以额外设置一些自定义的header信息,例如token,user-agent等。以下是使用Ajax设置自定义header信息的方法: var xhr = new XMLHttpRequest(); xh…

    JavaScript 2023年6月11日
    00
  • 原生js的ajax和解决跨域的jsonp(实例讲解)

    关于原生JS的AJAX和JSONP的介绍和实例讲解,我将从以下三个部分来进行详细解答。 AJAX的介绍和使用方法 AJAX全称为Asynchronous JavaScript and XML(异步的JavaScript和XML),是一种前端常用数据交换技术,能够实现页面异步刷新,避免了页面重新刷新的效果,减轻服务器对请求的压力。使用AJAX技术可以更好的优化…

    JavaScript 2023年5月27日
    00
  • JavaScript中判断整数的多种方法总结

    JavaScript中判断整数有多种方法,以下是一些经典的方法: 方法一:使用正则表达式 function isInteger(num) { return /^\d+$/.test(num); } 该方法通过正则表达式来判断一个字符串是否为整数,其中正则表达式/^\d+$/表示以数字开头并以数字结尾,中间包含一到多个数字。 示例1: console.log(…

    JavaScript 2023年5月28日
    00
  • 写一个含数字,拼音,汉字的验证码生成类

    针对“写一个含数字、拼音、汉字的验证码生成类”的任务,我会提供以下详细的攻略: 步骤一:确定需求 在开始编写代码之前,我们需要先明确生成验证码类的需求,这意味着我们需要回答以下问题: 验证码的长度是多少? 验证码包含哪些类型的字符(数字、拼音、汉字或其他字符)? 验证码生成后,是否需要对外提供获取生成的字符串的方法? 步骤二:编写代码 接下来,我们可以开始编…

    JavaScript 2023年5月19日
    00
  • js如何根据id删除数组中对象

    首先,要根据id删除数组中的对象,我们需要对该数组进行遍历,并找到该对象所在的索引位置。接下来,我们可以使用splice()函数删除该位置的对象。 具体步骤如下: 定义一个数组,包含多个对象,每个对象都有一个id属性。 let arr = [ {id: 1, name: ‘Tom’}, {id: 2, name: ‘Jerry’}, {id: 3, name…

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