前端小案例,用錨點(哈希值)實現Tab組件切換

8d6980aa681124455c822112a8c9f46e.jpeg


在前端開發的世界里,使用現代化的技術和方法來實現常見的組件是非常重要的。今天,我們將通過一個具體的案例來展示如何使用現代化的CSS和ES6來創建一個優雅且功能豐富的Tab組件。本文將詳細介紹實現思路、代碼分析,并提供一些實用的開發技巧。

案例展示:Tab組件

讓我們先來看一下這個Tab組件的效果。這個組件包含四個標簽頁:Analytics(分析)、Reports(報告)、Performance(表現)和Funds(基金)。每個標簽頁展示不同的內容,點擊不同的標簽,頁面內容會平滑切換。

這個Tab組件主要功能包括:

  1. 標簽頁切換:點擊不同標簽時,內容區平滑切換。

  2. URL哈希定位:通過URL哈希值實現頁面加載時直接跳轉到對應標簽頁。

  3. 響應式設計:使用現代化CSS確保組件在不同屏幕尺寸下表現良好。

實現思路

如何確定HTML結構

首先,我們需要思考這個Tab組件的基本結構。一個完整的Tab組件應該包含哪些部分?標簽列表和內容區域是最基本的兩個部分,我們該如何用HTML標簽來表示?

  • 標簽列表可以使用<ul><li>標簽來表示,每個標簽使用<a>標簽包裹,以便點擊。

  • 內容區域用<div><article>標簽來表示,每個標簽頁的內容放在單獨的<article>標簽內。

代碼示例

<div?class="tabs-container"><ul?class="tabs"><li><a?id="tab1"?title="Analytics"?href="#tab1">Analytics</a></li><li><a?id="tab2"?title="Reports"?href="#tab2">Reports</a></li><li><a?id="tab3"?title="Performance"?href="#tab3">Performance</a></li><li><a?id="tab4"?title="Funds"?href="#tab4">Funds</a></li></ul><div?class="tab-content-wrapper"><article?id="tab1"?class="tab-content"><h2>Analytics</h2><p>Investment?analytics?involves?the?use?of?data,?statistical?techniques,?and?financial?models?to?evaluate?and?optimize?investment?decisions.</p></article><!--?其他標簽頁內容省略?--></div>
</div>

如何設計CSS樣式

確定了基本結構后,我們需要思考如何用CSS來美化這個組件。我們希望標簽能有一個漂亮的外觀,內容區在切換時有平滑的過渡效果,還需要考慮響應式設計,以適應不同屏幕尺寸。

  • 使用CSS變量來定義顏色和其他樣式參數,方便統一管理和修改。

  • 使用Flexbox布局,使標簽列表和內容區域具有良好的響應性。

  • 為標簽和內容區域添加過渡效果,使切換時更加平滑。

如何添加JavaScript交互邏輯

最后,我們需要為這個組件添加交互功能。當用戶點擊不同的標簽時,內容區應該切換到相應的內容。我們該如何實現這一點?

  • 使用querySelectorAll獲取所有標簽和內容區域的DOM元素。

  • 為每個標簽添加點擊事件監聽,切換內容區域的顯示狀態。

  • 使用window.location.hash來處理頁面加載時的標簽定位,確保刷新后還能停留在用戶選擇的標簽頁。

源碼分析

HTML

HTML部分的代碼主要定義了Tab組件的基本結構,包括標簽列表和內容區域。

<!DOCTYPE?html>
<html?lang="en"><head><meta?charset="UTF-8"><title>Widget</title><meta?name="viewport"?content="width=device-width,?initial-scale=1.0"><link?rel="preconnect"?href="https://fonts.googleapis.com"><link?rel="preconnect"?href="https://fonts.gstatic.com"?crossorigin><link?href="https://fonts.googleapis.com/css2?family=Poppins&display=swap"?rel="stylesheet"?type='text/css'><link?rel="stylesheet"?type="text/css"?href="style.css">
</head><body><div?class="tabs-container"><ul?class="tabs"><li><a?id="tab1"?title="Analytics"?href="#tab1"><svg?aria-hidden="true"?xmlns="http://www.w3.org/2000/svg"?width="24"?height="24"viewBox="0?0?24?24"?stroke-width="2"?stroke="currentColor"?fill="none"?stroke-linecap="round"stroke-linejoin="round"><path?stroke="none"?d="M0?0h24v24H0z"?fill="none"></path><path?d="M3?3v18h18"></path><path?d="M20?18v3"></path><path?d="M16?16v5"></path><path?d="M12?13v8"></path><path?d="M8?16v5"></path><path?d="M3?11c6?0?5?-5?9?-5s3?5?9?5"></path></svg>Analytics</a></li><!--?省略--></ul><div?class="tab-content-wrapper"><article?id="tab1"?class="tab-content"><h2>Analytics</h2><p>Investment?analytics?involves?the?use?of?data,?statistical?techniques,?and?financial?models?toevaluate?and?optimize?investment?decisions.</p><img?src="assets/analytics.png"?alt="Analytics"></article><!--?省略--></div></div><script?src="script.js"></script>
</body></html>
  • <div class="tabs-container">:外層容器,包裹整個Tab組件。

  • <ul class="tabs">:無序列表,包含多個標簽。

  • <li><a id="tab1" title="Analytics" href="#tab1">Analytics</a></li>:每個標簽由<li><a>標簽組成,<a>標簽的href屬性用于指向對應的內容區域。

  • <div class="tab-content-wrapper">:內容區域的容器。

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

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

相關文章

25 防火墻基礎操作

1 防火墻進入WEB頁面操作 華三防火墻的默認用戶:admin/密碼:admin 將IP地址改在同一網段的信息 在防火墻的管理地址 GE/0/0/1&#xff1a;192.168.0.1 主機的地址是:192.168.0.101 思考一下為什么Ping不通 security-zone name Management import interface GigabitEthernet1/…

音視頻開發34 FFmpeg 編碼- 將h264和acc文件打包成flv文件

FFmpeg合成流程 示例本程序會?成?個合成的?頻和視頻流&#xff0c;并將它們編碼和封裝輸出到輸出?件&#xff0c;輸出格式是根據?件 擴展名?動猜測的。 示例的流程圖如下所示。 ffmpeg 的 Mux 主要分為 三步操作&#xff1a; avformat_write_header &#xff1a; 寫?…

Qt WPS(有源碼)

項目源碼地址&#xff1a;WPS完整源碼 一.項目詳情 該項目仿照WPS&#xff0c;實現了部分的功能&#xff0c;能夠很方便對文本和HTML進行修改&#xff0c;并且有打印功能&#xff0c;可以很方便的生成PDF。 應用界面 項目架構分析 這個項目主要可分為兩個部分&#xff0c;一…

使用RNN模型構建人名分類器

使用RNN模型構建人名分類器 1 項目需求和實現分析 短文本分類問題 2 數據處理三部曲 場景1&#xff1a;數據處理三部曲示意圖 場景2&#xff1a;三個字母onehot編碼形狀分析 3 構建RNN模型 4 構建訓練函數并進行訓練 - 有關模型、損失函數、優化器三者在pytorch中的表示 5…

葉老師的新水杯c++

題目描述 最近葉老師換了個帶吸管的水杯。 貝貝發現當葉老師使用帶吸管的水杯時&#xff0c;每天會喝 x 毫升的水。而使用不帶吸管的水杯時&#xff0c;每天會喝 y 毫升的水。 請問在 n 天的時間內&#xff0c;葉老師喝水量的上限與下限相差多少&#xff1f; 輸入 第一行為…

聚焦Python分布式爬蟲必學框架Scrapy打造搜索引擎(一)

Scrapy綜述 Scrapy總體架構 Scrapy架構圖(綠線是數據流向) 適用于海量靜態頁面的數據下載 Scrapy Engine(引擎): 負責Spider、ItemPipeline、Downloader、Scheduler中間的通訊&#xff0c;信號、數據傳遞等。 Scheduler(調度器): 它負責接受引擎發送過來的Request請求&…

java.io.PrintStream介紹

java.io.PrintStream 是 Java 標準庫中的一個類&#xff0c;用于輸出流中的打印。它提供了一組方便的方法&#xff0c;用于格式化輸出和寫入數據。PrintStream 類中最常見的使用方式是通過 System.out 和 System.err 進行標準輸出和錯誤輸出。 System.out 和 System.err 都是 …

ELK 企業實戰7

ELKkafkafilebeat企業內部日志分析系統 1、組件介紹 1、Elasticsearch&#xff1a; 是一個基于Lucene的搜索服務器。提供搜集、分析、存儲數據三大功能。它提供了一個分布式多用戶能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java開發的&#xff…

【linux】chmod修改文件權限詳解

目錄 一.linux中默認的文件權限 二.文件權限類別 三.chmod改變權限的兩種方式 一.linux中默認的文件權限 默認文件權限: 當你新建一個文件時&#xff0c;文件會有一個默認的權限&#xff0c;這個默認權限就是umask的值&#xff0c;umask一般默認是022&#xff0c;這個值設…

FastAPI教程——部署

部署 部署FastAPI應用程序相對容易。 部署是什么意思 部署應用程序意味著執行必要的步驟以使其可供用戶使用。 對于Web API來說&#xff0c;通常涉及將上傳到云服務器中&#xff0c;搭配一個性能和穩定性都不錯的服務器程序&#xff0c;以便你的用戶可以高效地訪問你的應用…

智慧校園-報修管理系統總體概述

智慧校園報修管理系統是專為優化教育機構內部維修報障流程而設計的信息化解決方案&#xff0c;它通過集成現代信息技術&#xff0c;為校園設施的維護管理帶來革新。該系統以用戶友好和高效運作為核心&#xff0c;確保了從報修請求提交到問題解決的每一個步驟都順暢無阻。 師生或…

分享畫布繪制矩形

簡介 實現功能&#xff0c;在畫布上繪制矩形&#xff0c;移動矩形。 在線演示 繪制矩形 實現代碼 <!DOCTYPE html><html><head> <title>繪制矩形</title> </head><body><div style"margin: 10px"><input typ…

FastDFS部署

版本介紹 安裝fastdfs共需要倆個安裝包 fastdfs-5.05.tar.gz libfastcommon-1.0.7.tar.gz編譯安裝 libfastcommon tar -xvf libfastcommon-1.0.7.tar.gz cd libfastcommon-1.0.7 make.sh make.sh install 3. 設置軟鏈接 libfastcommon.so默認安裝到了/usr/lib64/libfastcommon.…

探索AI視覺革新:深入目標檢測算法

一、目標檢測算法概述 1. 什么是目標檢測&#xff1f; 目標檢測是計算機視覺任務的一部分&#xff0c;其目標是在圖像或視頻中識別和定位特定物體的位置和類別。與簡單的圖像分類任務不同&#xff0c;目標檢測要求算法能夠準確地標記出圖像中每個物體的位置&#xff0c;通常用…

5-linux文件路徑與文件目錄系統

目錄 ①文件路徑 目錄跳轉 絕對路徑與相對路徑 ②文件目錄系統 目錄系統組成 目錄命名規則 命令補充 ls命令補充 file filename查看文件類型 less查看文本文件 ①文件路徑 目錄跳轉 pwd:查看當前工作目錄。 cd:改變目錄。 ls:列出目錄內容。 [root########## ~]# …

某易六月實習筆試

第一題 下面代碼需要更改的地方已指出。 解題思路 模擬題&#xff0c;用雙指針記錄雙方當前式神&#xff0c;再記錄一下當前誰先手&#xff0c;直到有一方指針越界。 把下面代碼now1變為now(now1)%2就行。 第二題 解題思路 01背包變種&#xff0c;只是背包的容量變為多個維度…

CLAY或許是今年最值得期待的3D生成模型,號稱質量最好+布線最好+支持的輸入模態最多+支持材質生成。

CLAY是一種大規模可控生成模型,用于創建高質量的3D資產,它結合了多分辨率變分自編碼器和簡化的潛在擴散變壓器,通過多種輸入形式生成詳細的3D幾何結構和物理渲染材質。 CLAY或許是今年最值得期待的3D生成模型,號稱質量最好+布線最好+支持的輸入模態最多+支持材質生成。 相…

vue2+three.js實現火焰效果

// 火焰getFireMaterial() {const vertex ${ShaderChunk.logdepthbuf_pars_vertex} bool isPerspectiveMatrix(mat4) {return true; } varying vec4 m_pos; varying vec2 vUv; varying vec3 _flame; uniform float uTime; vec2 hash( vec2 p ){p vec2( dot(p,vec2(150.1,350…

EDA期末復習——基礎知識

個人名片&#xff1a; &#x1f393;作者簡介&#xff1a;嵌入式領域優質創作者&#x1f310;個人主頁&#xff1a;妄北y &#x1f4de;個人QQ&#xff1a;2061314755 &#x1f48c;個人郵箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;個人微信&#xff1a;Vir2025WB…

The dependencies of some of the beans in the application context form a cycle

The dependencies of some of the beans in the application context form a cycle: 出現這種問題&#xff0c;如果你用其他方法怎么都處理不掉&#xff0c;可以使用最后的方法&#xff1a; 解決方案&#xff1a; 在配置文件增添一行配置即可&#xff1a; properties 配置文件 …