首頁 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 是具體的選項卡標籤和內容。

接下來,我們需要使用 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 樣式來限制滑動在容器內。這樣的互動方式在行動裝置上更友善直覺,提升了使用者體驗。

以上是如何使用 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)

熱門話題

Java教學
1659
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
修正: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中停用此彈

要修復此操作,需要使用互動式視窗站 要修復此操作,需要使用互動式視窗站 Apr 24, 2023 pm 11:52 PM

此操作需要互動式視窗站是一個相當奇怪的錯誤。允許使用者與應用程式互動的軟體視窗未打開,您需要啟用它們。此錯誤已與2021年的列印噩夢漏洞有關。但是,它一直持續到今天,影響您的電腦和裝置的驅動程式。幸運的是,它很容易修復。為什麼首先會發生此錯誤?在介紹如何修復此錯誤之前,請務必列出導致此錯誤的原因。這樣,您可以採取必要的步驟來確保它不會再次發生。損壞的檔案正在弄亂您的電腦檔案–損壞可能是由多種原因引起的,從惡意軟體到斷電。建議您執行SFC掃描。您有一個過度熱心的防毒應用程式–防毒軟體有時會阻止

DirectX 函數 GetDeviceRemovedReason 失敗並出現錯誤 DirectX 函數 GetDeviceRemovedReason 失敗並出現錯誤 May 17, 2023 pm 03:38 PM

我們玩的幾乎所有高階遊戲都依賴DirectX來有效運作。但是,一些使用者報告遇到DirectX函數GetDeviceRemovedReasonfailedwith,然後是錯誤原因。對於一般使用者而言,上述原因並非不言自明,需要進行一定程度的研究才能確定根本原因以及最有效的解決方法。為了使事情變得更容易,我們將本教程專門用於此問題。在以下部分中,我們將協助您確定潛在原因並引導您完成故障排除步驟,以消除DirectX函數GetDeviceRemovedReasonfailedwitherror。什麼導致

如何最佳化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