首页 web前端 js教程 如何使用 JavaScript 实现选项卡内容的手指滑动切换效果同时限制在容器内?

如何使用 JavaScript 实现选项卡内容的手指滑动切换效果同时限制在容器内?

Oct 20, 2023 am 11:31 AM
选项卡 javascript实现 手指滑动切换效果 容器内限制

如何使用 JavaScript 实现选项卡内容的手指滑动切换效果同时限制在容器内?

如何使用 JavaScript 实现选项卡内容的手指滑动切换效果同时限制在容器内?

选项卡是一种常见的网页布局,可以在相同区域中切换显示不同的内容。相比传统的点击切换方式,手指滑动切换效果在移动设备上更加友好和直观。本文将介绍如何使用 JavaScript 实现选项卡内容的手指滑动切换效果,并限制在容器内。

首先,我们需要一个 HTML 结构来承载选项卡内容。假设我们的选项卡有三个标签,每个标签对应一个内容区域,HTML 结构可以如下所示:

<div class="container">
  <div class="tabs">
    <div class="tab" id="tab1">标签1</div>
    <div class="tab" id="tab2">标签2</div>
    <div class="tab" id="tab3">标签3</div>
  </div>
  <div class="content">
    <div class="panel" id="panel1">内容1</div>
    <div class="panel" id="panel2">内容2</div>
    <div class="panel" id="panel3">内容3</div>
  </div>
</div>
登录后复制

上述代码中,.tabs 是用来承载选项卡标签,.content 是用来承载选项卡内容,.tab.panel 是具体的选项卡标签和内容。.tabs 是用来承载选项卡标签,.content 是用来承载选项卡内容,.tab.panel 是具体的选项卡标签和内容。

接下来,我们需要使用 CSS 来设置选项卡容器的样式,包括容器大小、选项卡标签的样式和内容区域的样式。为了实现手指滑动效果,我们还需要使用 overflow: hidden 来隐藏超出容器范围的内容。CSS 样式可以如下所示:

.container {
  width: 300px;
  height: 200px;
  overflow: hidden;
}

.tabs {
  display: flex;
}

.tab {
  flex: 1;
  text-align: center;
}

.content {
  width: 300%;
  display: flex;
}

.panel {
  flex: 1;
  text-align: center;
}
登录后复制

接下来,我们可以使用 JavaScript 来实现手指滑动切换效果以及限制在容器内。我们使用 touchstarttouchmovetouchend 事件来监听手指的滑动操作。

const container = document.querySelector('.container');
const tabs = document.querySelectorAll('.tab');
const panels = document.querySelectorAll('.panel');

let startX = 0;
let currentX = 0;

container.addEventListener('touchstart', (event) => {
  startX = event.touches[0].clientX;
});

container.addEventListener('touchmove', (event) => {
  event.preventDefault();
  currentX = event.touches[0].clientX;
});

container.addEventListener('touchend', () => {
  const deltaX = currentX - startX;
  const threshold = container.offsetWidth / 3;

  if (deltaX > threshold && currentIndex > 0) {
    currentIndex--;
  } else if (deltaX < -threshold && currentIndex < tabs.length - 1) {
    currentIndex++;
  }

  const translateX = -currentIndex * 100;

  tabs.forEach((tab) => tab.classList.remove('active'));
  panels.forEach((panel) => panel.classList.remove('active'));

  tabs[currentIndex].classList.add('active');
  panels[currentIndex].classList.add('active');

  container.querySelector('.content').style.transform = `translateX(${translateX}%)`;
});
登录后复制

在上述代码中,我们首先通过 querySelector 方法选择 DOM 元素,然后使用变量 startXcurrentX 来记录手指滑动时的起始和当前横坐标。在 touchstart 事件中,我们通过 event.touches[0].clientX 获取手指开始滑动时的横坐标。在 touchmove 事件中,我们通过 event.touches[0].clientX 获取手指当前的横坐标,并使用 preventDefault() 方法取消默认滑动事件。在 touchend 事件中,我们计算了手指滑动的水平偏移量 deltaX,并根据 threshold 的阈值来判断是否需要切换选项卡。最后,我们通过操作选项卡样式和内容区域的 transform 属性来切换到正确的选项卡和内容。

完整的示例代码可以参考以下链接:
[https://codepen.io/](https://codepen.io/)

综上所述,我们可以使用 JavaScript 实现选项卡内容的手指滑动切换效果,并限制在容器内。通过监听 touchstarttouchmovetouchend

接下来,我们需要使用 CSS 来设置选项卡容器的样式,包括容器大小、选项卡标签的样式和内容区域的样式。为了实现手指滑动效果,我们还需要使用 overflow: hidden 来隐藏超出容器范围的内容。CSS 样式可以如下所示:🎜rrreee🎜接下来,我们可以使用 JavaScript 来实现手指滑动切换效果以及限制在容器内。我们使用 touchstarttouchmovetouchend 事件来监听手指的滑动操作。🎜rrreee🎜在上述代码中,我们首先通过 querySelector 方法选择 DOM 元素,然后使用变量 startXcurrentX 来记录手指滑动时的起始和当前横坐标。在 touchstart 事件中,我们通过 event.touches[0].clientX 获取手指开始滑动时的横坐标。在 touchmove 事件中,我们通过 event.touches[0].clientX 获取手指当前的横坐标,并使用 preventDefault() 方法取消默认滑动事件。在 touchend 事件中,我们计算了手指滑动的水平偏移量 deltaX,并根据 threshold 的阈值来判断是否需要切换选项卡。最后,我们通过操作选项卡样式和内容区域的 transform 属性来切换到正确的选项卡和内容。🎜🎜完整的示例代码可以参考以下链接:
[https://codepen.io/](https://codepen.io/)🎜🎜综上所述,我们可以使用 JavaScript 实现选项卡内容的手指滑动切换效果,并限制在容器内。通过监听 touchstarttouchmovetouchend 事件,我们可以实现手指滑动切换选项卡的功能,并通过 CSS 样式来限制滑动在容器内。这样的交互方式在移动设备上更加友好和直观,提升了用户体验。🎜

以上是如何使用 JavaScript 实现选项卡内容的手指滑动切换效果同时限制在容器内?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

修复:Google Chrome 中的 ERR_ADDRESS_UNREACHABLE 错误 修复:Google Chrome 中的 ERR_ADDRESS_UNREACHABLE 错误 May 15, 2023 pm 06:22 PM

几位windows用户抱怨,当他们尝试在系统上的googlechrome浏览器上访问一些网站时,他们无法访问网页。它还在浏览器上显示一条消息,显示“无法访问该站点”,错误代码为ERR_ADDRESS_UNREACHABLE。此问题背后可能有许多潜在原因,可能是由于网站服务器问题、代理服务器设置、互联网连接不稳定等。如果您也遇到类似的问题,请不要惊慌。在深入分析了这篇文章中的问题后,我们得到了一堆解决方案。在继续之前,请尝试以下解决方法:尝试检查用户是否尝试从其他设备访问该网站并且没有问题,那么这

如何修复预览窗格在 Windows 11 中不起作用 如何修复预览窗格在 Windows 11 中不起作用 Apr 24, 2023 pm 06:46 PM

Windows文件资源管理器附带的功能之一是预览窗格,它显示您选择的文件的预览。这意味着您可以在打开文件之前查看文件的内容。文件资源管理器的预览窗格为Office相关文档、PDF、文本文件、图像和视频等不同类型的文件提供预览。它通常可以正常工作,但有时文件预览不可用。最近,许多Windows11用户提出了文件资源管理器的预览窗格不工作并且他们无法查看文件预览的问题。您是否面临预览窗格无法在Windows计算机上运行的问题?然后,继续阅读这篇文章。在这里,我们编制了可以帮助您修复PC上的

在 Windows 11 中无法使用 MSI Afterburner?试试以下修复方法。 在 Windows 11 中无法使用 MSI Afterburner?试试以下修复方法。 May 09, 2023 am 09:16 AM

MSIAfterburner是一款适用于大多数显卡的超频工具。除此之外,您还可以使用它来监控系统的性能。但是一些用户报告说MSIAfterburner无法在Windows11中运行。这可能是由于几个原因,我们在以下部分中讨论了它们。但是,当出现这种情况时,它会阻止您在玩游戏时更改性能或监控它。正如预期的那样,这对游戏玩家构成了重大挑战。这就是为什么我们专门使用本教程来帮助您了解该问题,并引导您完成针对MSIAfterburned在Windows11中无法运行的问题的最有效修复。

修复:在 Windows 11 上运行 Valorant 时出现 VAN 1067 错误 修复:在 Windows 11 上运行 Valorant 时出现 VAN 1067 错误 May 22, 2023 pm 02:41 PM

该操作系统看起来比其前身要好得多,并具有AutoHDR和DirectStorage等面向游戏玩家的功能,但Valorant玩家在启动游戏时遇到了一些麻烦。这不是早先游戏玩家面临的第一个问题,Valorant无法在Windows11上打开是困扰他们的另一个问题,但我们已经介绍了修复它的方法。现在看来,切换到Windows11的Valorant玩家由于安全启动和TPM2.0服务而面临问题,这导致游戏菜单在运行时仅显示退出选项。很多用户都收到VAN1067错误,但这不应该引起警

如何在 Opera 浏览器中禁用视频自动播放功能? 如何在 Opera 浏览器中禁用视频自动播放功能? Apr 22, 2023 pm 10:43 PM

Opera浏览器的最新版本中包含新的自动视频弹出功能。使用此功能,您会注意到当您导航到浏览器中的另一个选项卡时,视频会自动弹出。已经注意到这个弹出视频可以调整大小并在屏幕上移动。当您导航回视频选项卡时,它会恢复并且浮动窗口会消失。视频弹出功能对于喜欢在工作时观看视频的多任务用户非常有用。但是,并不是每个Opera用户都会喜欢这个自动视频弹出功能。如果您是这样的Opera浏览器用户,每次更改标签时都对弹出的视频感到恼火,那么您就找到了正确的帖子。在这里,我们详细介绍了如何在Opera中禁用此弹

DirectX 函数 GetDeviceRemovedReason 失败并出现错误 DirectX 函数 GetDeviceRemovedReason 失败并出现错误 May 17, 2023 pm 03:38 PM

我们玩的几乎所有高端游戏都依赖DirectX来有效运行。但是,一些用户报告遇到DirectX函数GetDeviceRemovedReasonfailedwith,然后是错误原因。对于普通用户而言,上述原因并非不言自明,需要进行一定程度的研究才能确定根本原因以及最有效的解决方法。为了使事情变得更容易,我们将本教程专门用于此问题。在以下部分中,我们将帮助您确定潜在原因并引导您完成故障排除步骤,以消除DirectX函数GetDeviceRemovedReasonfailedwitherror。什么导致

要修复此操作,需要使用交互式窗口站 要修复此操作,需要使用交互式窗口站 Apr 24, 2023 pm 11:52 PM

此操作需要交互式窗口站是一个相当奇怪的错误。允许用户与应用交互的软件窗口未打开,您需要启用它们。此错误已与2021年的打印噩梦漏洞有关。但是,它一直持续到今天,影响您的计算机和设备的驱动程序。幸运的是,它很容易修复。为什么首先会发生此错误?在介绍如何修复此错误之前,请务必列出导致此错误的原因。这样,您可以采取必要的步骤来确保它不会再次发生。损坏的文件正在弄乱您的计算机文件–损坏可能是由多种原因引起的,从恶意软件到断电。建议您运行SFC扫描。您有一个过分热心的防病毒应用程序–防病毒软件有时会阻止

如何优化在Windows 11中的互联网连接速度 如何优化在Windows 11中的互联网连接速度 Apr 23, 2023 pm 10:46 PM

如何解决Windows11中网速慢的问题?1.重启电脑导航到桌面并按Alt+F4启动“关闭Windows”框。单击下拉菜单,然后从选项列表中选择重新启动。接下来,点击OK。对于您在Windows11中遇到的大多数问题,最有效的解决方案之一就是简单地重新启动计算机。如果它是导致问题的后台进程或错误,则重新启动操作系统将消除它,从而修复错误。电脑重启后,检查Windows11的网速问题是否解决。2.确保PC在路由器范围内(Wi-Fi网络)在无线网络的情况下,设备离路由器越远,互联网速度就越慢

See all articles