JS实现的简单标签点击切换功能示例

首先来讲一下JS实现的简单标签点击切换功能示例的攻略。

1. 确定页面结构和元素

首先我们需要确定页面结构和需要被点击切换的标签元素。在示例中,我们可以使用HTML ul 和 li 标签来实现。

<ul class="tab">
  <li class="active">标签1</li>
  <li>标签2</li>
  <li>标签3</li>
</ul>

2. 使用CSS美化样式

接下来,我们可以使用CSS对标签样式进行美化,为标签添加样式的时候,可以使用:hover伪类来实现当鼠标在其上方时高亮显示的效果。

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

.tab li {
  margin-right: 20px;
  cursor: pointer;
  padding: 8px 10px;
  border-radius: 5px;
}

.tab li.active {
  background-color: #ccc;
}

3. 使用JS实现标签切换

最后一步,我们需要使用JS来实现标签的切换。我们可以通过addEventListener()方法,为每个标签元素添加click事件监听器,来实现标签的切换效果。在事件监听器中,我们可以为选中的标签添加active类,同时移除之前选中标签的active类,来实现选中标签切换。

以下是具体的代码示例,实现了点击标签进行切换的效果。

const tabs = document.querySelectorAll('.tab li')

tabs.forEach(tab => {
  tab.addEventListener('click', function() {
    const selectedTab = document.querySelector('.active')
    selectedTab.classList.remove('active')
    this.classList.add('active')
  })
})

示例1:在网页顶部实现标签点击切换

现在,我们就可以应用刚刚学到的内容,在一个具体的网站页面中,实现标签点击切换的效果。

比如,在网页的顶部导航栏中,我们可以添加一个标签,点击标签可以切换显示不同的页面内容。

<nav>
  <ul class="tabs">
    <li class="active">首页</li>
    <li>产品介绍</li>
    <li>关于我们</li>
  </ul>
</nav>

在CSS中,我们可以为标签样式添加一些动画效果,使之看起来更加美观。

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

.tabs li {
  cursor: pointer;
  margin-right: 20px;
  padding: 5px 10px;
  border-radius: 5px;
  transition: all 0.3s ease-in;
}

.tabs li.active {
  background-color: #ccc;
  transform: rotate(360deg);
}

最后,在JS代码中,我们可以使用switch语句来切换显示对应的页面内容。

const tabs = document.querySelectorAll('.tabs li')
const pages = document.querySelectorAll('.page')

tabs.forEach((tab, index) => {
  tab.addEventListener('click', function() {
    const selectedTab = document.querySelector('.tabs .active')
    selectedTab.classList.remove('active')
    this.classList.add('active')

    pages.forEach(page => {
      page.classList.remove('active')
    })

    switch (index) {
      case 0:
        document.querySelector('.page.home').classList.add('active')
        break
      case 1:
        document.querySelector('.page.products').classList.add('active')
        break
      case 2:
        document.querySelector('.page.about').classList.add('active')
        break
    }
  })
})

示例2:在产品列表页面实现标签点击切换

除了在网页的顶部导航栏中实现标签点击切换的功能,我们还可以在页面的其他位置使用标签进行切换。

比如,在产品列表页面中,我们可以添加一个标签,点击标签可以切换显示不同的产品类型的产品列表。

<div class="container">
  <ul class="tabs">
    <li class="active">全部</li>
    <li>数码产品</li>
    <li>家居用品</li>
  </ul>
  <ul class="product-list">
    <li>产品1</li>
    <li>产品2</li>
    <li>产品3</li>
    <li>产品4</li>
    <li>产品5</li>
  </ul>
</div>

在CSS中,我们可以为标签样式添加一些动画效果,以及对产品列表进行美化。

.container {
  margin: 20px auto;
}

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

.tabs li {
  cursor: pointer;
  margin-right: 20px;
  padding: 5px 10px;
  border-radius: 5px;
  transition: all 0.3s ease-in;
}

.tabs li.active {
  background-color: #ccc;
}

.product-list {
  list-style: none;
  padding: 0;
  margin: 10px 0 0;
}

.product-list li {
  border: 1px solid #eee;
  padding: 10px;
  margin-bottom: 10px;
  border-radius: 5px;
}

在JS代码中,我们需要使用一个数组来存储不同类型的产品数据,然后在标签点击时,根据标签类型来渲染对应类型的产品列表。

const tabs = document.querySelectorAll('.tabs li')
const productList = document.querySelector('.product-list')
const allProducts = [
  { name: '产品1', type: '数字产品' },
  { name: '产品2', type: '数字产品' },
  { name: '产品3', type: '家居用品' },
  { name: '产品4', type: '家居用品' },
  { name: '产品5', type: '家居用品' },
]

tabs.forEach((tab, index) => {
  tab.addEventListener('click', function() {
    const selectedTab = document.querySelector('.tabs .active')
    selectedTab.classList.remove('active')
    this.classList.add('active')

    const filteredProducts = index === 0 ? allProducts : allProducts.filter(product => product.type === this.textContent)
    renderProducts(filteredProducts)
  })
})

function renderProducts(products) {
  let html = ''
  products.forEach(product => {
    html += `<li>${product.name}</li>`
  })
  productList.innerHTML = html
}

通过以上的步骤,我们就可以在产品列表页面上,添加标签进行切换不同类型的产品列表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现的简单标签点击切换功能示例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue实现图片路径转二进制文件流(binary)

    下面是详细的攻略: 如何实现图片路径转换为二进制文件流(binary)? 将图片路径转化为二进制文件流的过程,包括三个步骤:获取图片,读取图片文件二进制,将二进制数据存储起来。下面是具体步骤。 获取图片 获取图片通常需要从 input[type=file] 元素或一个图片 URL。对于 input[type=file] 元素,可通过 onchange 事件获…

    Vue 2023年5月27日
    00
  • Vue.js使用axios动态获取response里的data数据操作

    使用Vue.js配合axios获取response中的data数据的步骤如下: 安装axios npm install axios 在Vue.js中引入axios import axios from ‘axios’ 使用axios发送请求并在promise中获取数据 axios.get(‘/api/user/1’).then(response => {…

    Vue 2023年5月28日
    00
  • Vue不能检测到数据变化的几种情况说明

    Vue是一款前端框架,其特点之一就是数据驱动视图,即根据数据的变化自动更新视图。但是,在某些情况下,Vue不能检测到数据的变化,导致视图没有更新。那么Vue不能检测到数据变化的几种情况有哪些呢?本攻略将一一讲解。 直接修改数组下标无法触发更新 Vue能够监听到数组的变化,但不能监听到数组下标的变化。如果直接修改数组下标,Vue将无法检测到数据的变化,也就无法…

    Vue 2023年5月28日
    00
  • vue3中的reactive函数声明数组方式

    在Vue3中,我们可以使用reactive函数来创建响应式的数据对象和数组。其中,声明数组可以有两种方式,分别是通过Array构造函数和直接使用数组字面量。 下面,将给出完整的攻略,包含以下步骤: 导入Vue3的相关模块 创建一个普通的JavaScript数组 使用Array构造函数声明一个响应式的数组 使用数组字面量声明一个响应式的数组 实现两条示例说明 …

    Vue 2023年5月27日
    00
  • axios封装,使用拦截器统一处理接口,超详细的教程(推荐)

    axios封装,使用拦截器统一处理接口,超详细的教程 为什么需要封装、使用拦截器统一处理接口? 在实际开发中,我们经常会使用到Ajax技术,而Axios是一个比较好用的Ajax库。但是,使用 Axios 发送请求的时候,我们遇到的一些问题: 大量重复代码:每次请求都要写一堆重复的代码,如设置 headers,处理错误等。 统一处理后端返回的数据:由于每个接口…

    Vue 2023年5月28日
    00
  • Vue.js特性Scoped Slots的浅析

    Vue.js特性Scoped Slots的浅析 首先来看Scoped Slots的定义。Scoped Slots即作用域插槽,它是Vue.js提供的一种高级组件通信方式。通过Scoped Slots,父级组件可以向子级组件插入内容,而且这个插入的内容还可以访问子级组件中的数据。下面将从两个方面分别介绍Scoped Slots的使用方法和示例。 Scoped …

    Vue 2023年5月28日
    00
  • 微信小程序wepy框架笔记小结

    微信小程序wepy框架笔记小结 什么是wepy框架 wepy是一个类Vue框架的微信小程序框架,它封装了很多常见的操作,方便我们快速开发小程序,同时还支持组件化开发。 wepy框架的优点 代码结构清晰明了,易于维护 支持组件化开发,方便复用 支持ES6/7标准语法,提高开发效率 自带脚手架,快速初始化项目 wepy框架的基本使用 安装wepy npm ins…

    Vue 2023年5月27日
    00
  • vue实现两列水平时间轴的示例代码

    下面是实现“vue实现两列水平时间轴”的完整攻略: 1. 确定页面结构 首先,需要确定页面的结构和布局。在这个示例中,我们需要两列水平时间轴,因此我们可以使用一个flexbox来实现。 <div class="timeline-container"> <div class="timeline-column&qu…

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