事件委托版本tab欄切換

事件委托:是JavaScript中注冊事件的常用技巧,也稱事件委派、事件代理

簡單理解:原本需要注冊在子元素的事件委托給父元素,讓父元素擔當事件監聽的職務

優點:減少注冊次數,可提高程序性能

原理:事件委托其實是利用事件冒泡的特點

  • 給父親注冊時間,當觸發子元素時,會冒泡到父元素身上,從而觸發父元素事件

案例講解:

這是一個使用事件委托實現的Tab欄切換效果。代碼包含HTML、CSS樣式和JavaScript交互邏輯。Tab欄包含5個導航項(精選、美食、百貨、個護、預告)和對應的內容區。通過鼠標懸停事件,JavaScript動態切換active類實現內容切換效果,避免為每個導航項單獨綁定事件,提高了性能。CSS樣式定義了Tab欄的布局和交互狀態下的樣式變化。

效果圖:

代碼

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>事件委托版本tab欄切換</title><style>* {margin: 0;padding: 0;}.tab {width: 590px;height: 340px;margin: 20px;border: 1px solid #e4e4e4;}.tab-nav {width: 100%;height: 60px;line-height: 60px;display: flex;justify-content: space-between;}.tab-nav h3 {font-size: 24px;font-weight: normal;margin-left: 20px;}.tab-nav ul {list-style: none;display: flex;justify-content: flex-end;}.tab-nav ul li {margin: 0 20px;font-size: 14px;}.tab-nav ul li a {text-decoration: none;border-bottom: 2px solid transparent;color: #333;}.tab-nav ul li a.active {border-color: #e1251b;color: #e1251b;}.tab-content {padding: 0 16px;}.tab-content .item {display: none;}.tab-content .item.active {display: block;}</style>
</head><body><div class="tab"><div class="tab-nav"><h3>每日特價</h3><ul><li><a class="active" href="javascript:;" data-id="0">精選</a></li><li><a href="javascript:;" data-id="1">美食</a></li><li><a href="javascript:;" data-id="2">百貨</a></li><li><a href="javascript:;" data-id="3">個護</a></li><li><a href="javascript:;" data-id="4">預告</a></li></ul></div><div class="tab-content"><div class="item active"><img src="./images/tab00.png" alt="" /></div><div class="item"><img src="./images/tab01.png" alt="" /></div><div class="item"><img src="./images/tab02.png" alt="" /></div><div class="item"><img src="./images/tab03.png" alt="" /></div><div class="item"><img src="./images/tab04.png" alt="" /></div></div></div><script>const ul = document.querySelector('.tab-nav ul');const items = document.querySelectorAll('.tab-content .item');ul.addEventListener('mouseover', function (e) {if (e.target.tagName === 'A') {//   排他思想,其余a去掉active類document.querySelector('.tab-nav .active').classList.remove('active');//   當前元素添加active類e.target.classList.add('active');// 給5個鏈接添加自定義屬性標注好序號document.querySelector('.tab-content .active').classList.remove('active');// 根據序號選擇對應的底部盒子items[e.target.dataset.id].classList.add('active');}})</script>
</body></html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913501.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913501.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913501.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FLAN-T5:規模化指令微調的語言模型

摘要 在將數據集表述為指令的形式上進行語言模型微調&#xff0c;已被證明能夠提升模型性能及其對未見任務的泛化能力。本文探討了指令微調&#xff0c;特別關注以下三個方面&#xff1a;(1) 任務數量的擴展&#xff0c;(2) 模型規模的擴展&#xff0c;以及 (3) 基于鏈式思維&…

設計模式文章

1. 工廠模式 | 菜鳥教程

Xilinx Vivado開發環境快速導出hdf文件(bat批處理)

Xilinx FPGA使用Vivado開發環境創建MicroBlaze軟核或ZYNQ PS側SDK邏輯工程時&#xff0c;需要FPGA側搭建的硬件平臺文件&#xff0c;即hdf文件&#xff0c;常規方式是編譯完成生成bit流文件后&#xff0c;通過File->Export->Export Hardware菜單來導出&#xff0c;在彈出…

UniApp 中實現智能吸頂 Tab 標簽導航效果

前言在移動端應用開發中&#xff0c;Tab 標簽導航是一種常見的交互模式。本文將詳細介紹如何在 UniApp 中實現一個功能完善的智能吸頂 Tab 導航組件&#xff0c;該組件具有以下特性&#xff1a;&#x1f3af; 智能顯示&#xff1a;根據滾動位置動態顯示/隱藏&#x1f4cc; 吸頂…

ElasticSearch快速入門-1

文章目錄Elasticsearch簡介ES概念ES和關系型數據庫的對比正序索引和倒序索引安裝es、kibana、IK分詞器ES操作_cat操作Mapping映射屬性索引庫操作索引庫CRUD文檔CRUD文檔批處理操作Java客戶端操作ESElasticsearch簡介 就是一個搜索引擎數據庫 以下都簡稱ES ES概念 ES和關系型…

【論文撰寫】如何把AI生成的文本公式復制在word中,完整的復制公式,拷貝豆包生成的公式

1、問題描述 AI生成的內容 在對于含有公式的生成內容&#xff0c;直接拷貝到Word 會呈現類Markdown的格式&#xff0c;除了格式上&#xff0c;公式也不是標準格式。 如下列兩個圖片對比 2、工具 這時&#xff0c;就需要用另一個工具進行轉換 Home - Snip Web Mathpix Acc…

【機器學習筆記 Ⅱ】5 矩陣乘法

矩陣乘法是神經網絡、圖形學、科學計算等領域的核心運算&#xff0c;用于高效處理線性變換和批量數據計算。以下是其數學定義、計算規則及實際應用的系統解析。1. 數學定義2. 計算步驟&#xff08;示例&#xff09;3. 代碼實現 (1) Python&#xff08;NumPy&#xff09; import…

【數字后端】- 衡量design的congestion情況

基礎概念 通常在RP的placement之后&#xff0c;就要去去查看設計的Density和Congestion情況。 而congestion的衡量指標有以下兩點&#xff1a; &#xff08;1&#xff09;Overflow Congestion 分析基于一個基本『單元』稱為GCELL: Routing Grid cell. Gcell 是工具自己定義…

Oracle面試題-體系結構

&#x1f4cc;1.如何查看 Oracle 數據庫的版本信息&#xff1f; 1. 標準 SQL 查詢&#xff08;推薦&#xff09; 方法 1&#xff1a;查詢 v$version 視圖&#xff08;最常用&#xff09; SELECT * FROM v$version;輸出示例&#xff1a; BANNER -------------------------------…

Flex布局原理

1.布局原理 flex 是 flexible Box 的縮寫&#xff0c;意為"彈性布局"&#xff0c;用來為盒狀模型提供最大的靈活性&#xff0c;任何一個容器都可以 指定為 flex 布局。 當我們為父盒子設為 flex 布局以后&#xff0c;子元素的 float、clear 和 vertical-align 屬性將…

JavaScript 模塊系統二十年:混亂、分裂與出路

JavaScript 模塊系統&#xff1a;一場至今未醒的歷史夢魘 一、引言&#xff1a;我們真的解決了“模塊化”嗎&#xff1f; 你可能以為&#xff0c;JavaScript 模塊系統早已標準化&#xff0c;import/export 就是答案。 但現實卻是另一番景象&#xff1a;構建報錯、依賴沖突、加…

人工智能-基礎篇-23-智能體Agent到底是什么?怎么理解?(智能體=看+想+做)

1、智能體是什么&#xff1f; 想象你有一個超級聰明的小助手&#xff0c;它能&#xff1a; 自己看環境&#xff08;比如看到天氣、聽到聲音、讀到數據&#xff09;&#xff1b;自己做決定&#xff08;比如下雨了要關窗&#xff0c;電量低要去充電&#xff09;&#xff1b;自己…

Java實現項目1——彈射球游戲

項目&#xff1a;彈射球游戲 項目描述&#xff1a; 類似于乒乓球的游戲&#xff0c;游戲可以播放背景音樂&#xff0c;可以更換背景圖&#xff0c;當小球碰到下面的擋板后會反彈&#xff0c;當小球碰到方塊后會增加分數&#xff0c;當小球掉落會導致游戲失敗&#xff0c;按下…

(十八)深入了解 AVFoundation-編輯:添加背景音樂與音量控制(下)——實戰篇

一、功能目標回顧在理論篇中&#xff0c;我們系統地介紹了如何使用 AVFoundation 添加背景音樂音軌&#xff0c;并通過 AVMutableAudioMix 與 AVMutableAudioMixInputParameters 實現多音軌混音與音量控制。我們了解了諸如淡入淡出、靜音控制、動態音量曲線等核心技術細節。本篇…

如何在新機器上設置github完成內容git push

如果你在一臺新的機器上git pull 倉庫&#xff0c;完成修改&#xff0c;然后git push&#xff0c;會發現下面錯誤&#xff1a; Username for https://github.com: xiaomaolv Password for https://xiaomaolvgithub.com: remote: Support for password authentication was rem…

Rust 注釋

Rust 注釋 引言 Rust 編程語言以其內存安全、并發支持和高性能等特點在軟件開發領域獲得了廣泛的關注。在Rust編程中&#xff0c;注釋是一種非常重要的元素&#xff0c;它不僅可以幫助程序員理解代碼&#xff0c;還可以提高代碼的可維護性和可讀性。本文將詳細介紹Rust中的注釋…

Flink Oracle CDC 環境配置與驗證

一、Oracle 數據庫核心配置詳解 1. 啟用歸檔日志&#xff08;Archiving Log&#xff09; Oracle CDC 依賴歸檔日志獲取增量變更數據&#xff0c;需按以下步驟啟用&#xff1a; 非CDB數據庫配置&#xff1a; -- 以DBA身份連接數據庫 CONNECT sys/password AS SYSDBA; -- …

ssh: Could not resolve hostname d: Temporary failure in name resolution

關于不能本機上傳文件夾到服務器上的一個問題的記錄。 scp -r "D:\***\datasets" usernamexxxxxx:接收文件夾名 一直報錯&#xff1a;ssh: Could not resolve hostname d: Temporary failure in name resolution 反復嘗試發現無果之后想起來&#xff0c;在傳輸的時候…

2025年的前后端一體化CMS框架優選方案

以下是結合技術生態、開發效率和商業落地驗證&#xff0c;整理的2025年前后端一體化CMS框架優選方案&#xff1a;一、?主流成熟框架組合?1. ?React Node.js (Express/Next.js)??前端?&#xff1a;React生態成熟&#xff0c;配合Redux狀態管理&#xff0c;適合復雜后臺界…

《聲音的變形記:Web Audio API的實時特效法則》

用戶期待更豐富、更具沉浸感的聽覺體驗時&#xff0c;基于Web Audio API實現的實時音頻特效&#xff0c;就像是為這片森林注入了靈動的精靈&#xff0c;讓簡單的聲音蛻變為震撼人心的聽覺盛宴。回聲特效帶來空間的深邃回響&#xff0c;變聲效果賦予聲音全新的個性面貌。接下來&…