50天50個小項目 (Vue3 + Tailwindcss V4) ? | VerifyAccountUi(驗證碼組件)

📅 我們繼續 50 個小項目挑戰!—— VerifyAccountUi組件

倉庫地址:https://github.com/SunACong/50-vue-projects

項目預覽地址:https://50-vue-projects.vercel.app/

在這里插入圖片描述


使用 Vue 3<script setup> 語法結合 Tailwind CSS 來創建一個簡潔而優雅的驗證碼輸入界面。通過這個示例,你將學會如何構建一個響應式且用戶友好的驗證碼輸入組件,并掌握一些實用的 Vue 技巧和 Tailwind CSS 樣式技巧。

準備好了嗎?讓我們開始吧!🚀


📝 應用目標

  • 使用 Vue 3 Composition API 管理狀態與事件處理
  • 動態生成6個獨立的驗證碼輸入框
  • 實現自動聚焦與跳轉到下一個/上一個輸入框的功能
  • 利用 Tailwind CSS 快速搭建美觀且響應式的布局
  • 添加適當的視覺反饋以提升用戶體驗

🔧 技術實現點

技術點描述
Vue 3 <script setup>使用 refonMounted 定義響應式數據及生命周期鉤子
響應式數組 codes存儲每個驗證碼輸入框的內容
v-for 循環生成創建6個獨立的輸入框
@keydown 事件監聽處理鍵盤輸入并控制焦點移動
Tailwind 過渡動畫提供平滑的交互體驗

🖌? 組件實現

🎨 模板結構 <template>

<template><div class="flex min-h-screen items-center justify-center overflow-hidden bg-gray-50 font-sans"><div class="max-w-2xl rounded-lg border-4 border-black bg-white p-8 text-center"><h2 class="mb-2 text-2xl font-bold">Verify Your Account</h2><p class="mb-8 text-gray-600">We emailed you the six digit code to cool_guy@email.com<br />Enter the code below to confirm your email address.</p><!-- 驗證碼輸入框容器 --><div class="mb-8 flex flex-wrap items-center justify-center"><inputv-for="(code, index) in codes":key="index"v-model="codes[index]"ref="codeInputs"@keydown="handleKeyDown($event, index)"class="mx-1 my-2 h-20 w-20 rounded-md border border-gray-200 text-center text-5xl font-light [caret-color:transparent] transition-all duration-300 focus:border-blue-500 focus:shadow-lg focus:shadow-blue-200/50 focus:outline-none"type="text"maxlength="1"inputmode="numeric"pattern="[0-9]" /></div><smallclass="inline-block max-w-md rounded-md bg-gray-100 px-4 py-2 text-sm text-gray-600">This is design only. We didn't actually send you an email as we don't have youremail, right?</small></div></div>
</template>

模板部分主要包括一個標題、說明文字以及六個獨立的驗證碼輸入框。每個輸入框都設置了樣式以提供良好的用戶體驗,例如自動聚焦、數字輸入限制等。


💻 腳本邏輯 <script setup>

<script setup>import { ref, onMounted } from 'vue'// 驗證碼輸入框響應式數據const codes = ref(new Array(6).fill(''))const codeInputs = ref([])// 組件掛載后聚焦第一個輸入框onMounted(() => {codeInputs.value[0].focus()})// 處理鍵盤輸入事件const handleKeyDown = (e, index) => {// 只允許數字輸入if (!/\d/.test(e.key) && e.key !== 'Backspace' && e.key !== 'Tab') {e.preventDefault()return}// 數字輸入處理if (e.key >= 0 && e.key <= 9) {codes.value[index] = e.key// 自動聚焦到下一個輸入框if (index < 5) {setTimeout(() => codeInputs.value[index + 1].focus(), 10)}}// 退格鍵處理if (e.key === 'Backspace') {// 清空當前輸入框codes.value[index] = ''// 聚焦到上一個輸入框if (index > 0) {setTimeout(() => codeInputs.value[index - 1].focus(), 10)}e.preventDefault()}}
</script>

腳本部分主要實現了以下功能:

  • 初始化一個包含6個空字符串的數組 codes,用于存儲每個驗證碼輸入框的內容。
  • 在組件掛載時自動聚焦到第一個輸入框。
  • 監聽鍵盤事件 handleKeyDown,根據用戶的輸入行為調整焦點位置或更新驗證碼內容。

🎨 Tailwind CSS 樣式重點

類名作用
min-h-screen設置最小高度為視口高度,確保頁面至少占滿整個屏幕的高度
items-center / justify-center分別在交叉軸(垂直)和主軸(水平)上居中對齊子元素
overflow-hidden隱藏超出容器的內容,防止溢出導致滾動條出現
bg-gray-50設置背景顏色為淺灰色,作為整體頁面背景色
font-sans使用無襯線字體系列
max-w-2xl設置最大寬度為 2xl (72rem),限制主要內容區域的最大寬度
rounded-lg給元素添加較大的圓角半徑
border-4 border-black添加黑色邊框,邊框寬度為 4px
bg-white設置背景顏色為白色,用于主要內容區域的背景色
p-8設置內邊距為 8 個單位,提供足夠的空間來分隔內容與邊界
text-center文本居中對齊
mb-2 / mb-8設置下外邊距分別為 2 和 8 個單位,用于控制元素間的間距
text-2xl / text-sm設置文本大小為 2xl (1.5rem) 和 sm (0.875rem)
font-bold設置字體加粗
text-gray-600設置文本顏色為灰色,提供對比度但不過于強烈
flex-wrap允許子元素換行排列,適應不同屏幕尺寸
mx-1 my-2分別設置左右外邊距為 1 單位和上下外邊距為 2 單位,用于輸入框之間的間距
h-20 w-20設置固定的高度和寬度為 20 個單位,定義輸入框的大小
rounded-md給元素添加中等大小的圓角半徑
border border-gray-200添加淺灰色邊框,增加視覺層次感
text-center文本居中對齊,適用于單字符輸入框的設計
text-5xl font-light設置大號輕量級字體,使驗證碼數字更加突出
[caret-color:transparent]將光標顏色設置為透明,隱藏默認的閃爍光標
transition-all duration-300應用所有屬性的變化過渡效果,持續時間為 300ms
focus:border-blue-500 focus:shadow-lg focus:shadow-blue-200/50當輸入框獲得焦點時,改變邊框顏色、添加陰影以增強視覺反饋
focus:outline-none移除默認的聚焦輪廓線,避免干擾設計的一致性

📁 常量定義 + 組件路由

constants/index.js 添加組件預覽常量:

{id: 42,title: 'LiveUserFilter',image: 'https://50projects50days.com/img/projects-img/42-live-user-filter.png',link: 'LiveUserFilter',},

router/index.js 中添加路由選項:

{path: '/LiveUserFilter',name: 'LiveUserFilter',component: () => import('@/projects/LiveUserFilter.vue'),},

🏁 總結

使用 Vue 3 和 Tailwind CSS 創建一個直觀且易于使用的驗證碼輸入界面。通過合理利用 Vue 的響應式特性和 Tailwind CSS 的強大樣式能力,我們可以輕松地構建出既美觀又功能強大的前端組件。

想要讓你的驗證碼輸入界面更加完善?考慮以下擴展功能:

  • ? 表單提交驗證:增加對用戶輸入驗證碼的驗證邏輯。
  • ? 錯誤提示:當驗證碼無效時顯示相應的錯誤消息。
  • ? 倒計時重發機制:模擬驗證碼過期后重新發送驗證碼的功能。

👉 下一篇,我們將完成RangeSlider組件,一個可以自定義進度的范圍滑塊組件。。🚀

感謝閱讀,歡迎點贊、收藏和分享 😊

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

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

相關文章

AbstractAuthenticationToken 認證流程中??認證令牌的核心抽象類詳解

AbstractAuthenticationToken 認證流程中??認證令牌的核心抽象類詳解在 Spring Security 中&#xff0c;AbstractAuthenticationToken 是 Authentication 接口的??抽象實現類??&#xff0c;其核心作用是為具體的認證令牌&#xff08;如用戶名密碼令牌、JWT 令牌等&#x…

小程序視頻播放,與父視圖一致等樣式設置

初始設置的代碼&#xff1a;WXML的代碼<view class"card-wrapper"> <!-- 視頻播放容器&#xff08;默認隱藏&#xff09; --> <view class"video-container" wx:if"{{isPlaying}}"> <video id"cardVideo" class&…

Kafka——關于主題管理

引言在Kafka的世界中&#xff0c;主題&#xff08;Topic&#xff09;是消息的基本組織單位&#xff0c;類似于文件系統中的"文件夾"——所有消息都按照主題分類存儲&#xff0c;生產者向主題寫入消息&#xff0c;消費者從主題讀取消息。主題的管理是Kafka運維的基礎&…

【VLLM】VLLM使用

一 、安裝 二、啟動入口 VLLM 提供了多種入口方式啟動模型&#xff0c;以適應不同的使用場景&#xff08;如命令行交互、API 服務、自定義集成等&#xff09;。除了最常用的 openai.api_server&#xff08;OpenAI 兼容 API 服務&#xff09;&#xff0c;還有以下主要入口&#…

為Github Copilot創建自定義指令/說明/注意事項

GitHub Copilot 是一個強大的 AI 編程助手&#xff0c;通過合理配置自定義指令&#xff0c;可以讓它更好地理解和遵循項目特定的編碼規范&#xff0c;省的每次提問時輸入重復提示語。 目錄 方法一&#xff1a;項目級別指令文件&#xff08;推薦&#xff09;方法二&#xff1a…

信創厚知聯盟會長兼創始人蒞臨綠算技術

2025年7月29日&#xff0c;信創厚知聯盟會長兼創始人王杲一行考察廣東省綠算技術有限公司&#xff0c;重點調研其在智算中心存儲與AI算力協同領域的創新成果。此次交流標志著雙方在信創產業生態合作上邁出重要一步&#xff0c;為國產高端高性能全閃存存儲與智算基礎設施的融合發…

RAG面試內容整理-Prompt Engineering 在 RAG 中的作用

Prompt Engineering(提示工程)指為生成模型精心設計輸入提示,以引導模型產生所需的輸出。在RAG系統中,prompt設計對充分利用檢索到的知識至關重要。因為生成器(通常是LLM)接收到的不僅有用戶問題,還有檢索的文檔內容,我們需要通過提示明確告訴模型如何使用這些信息。例…

【計算機網絡】5傳輸層

傳輸層是面向通信的最高層&#xff0c;也是用戶功能的最底層。 傳輸層僅存在于主機中&#xff0c;路由器等中間設備只用到下三層&#xff08;無傳輸層&#xff09;。傳輸層對上層應用隱藏了底層網絡的復雜細節&#xff08;比如數據怎么路由、網絡怎么連接等&#xff09;。對應用…

SecureCRT連接密鑰交換失敗

SecureCRT連接密鑰交換失敗問題描述&#xff1a;問題分析&#xff1a;解決方案&#xff1a;問題描述&#xff1a; SecureCRT6.7連接銀河麒麟操作系統v10版本&#xff0c;報錯如下&#xff1a; key exchange failed 密鑰交換失敗 no compatible key exchange method. The serv…

2021-05-10 求出這十個數據的平均值,并輸入高于平均值的所有元素值及下標求出這十個數據的平均值,并輸入高于平均值的所有元素值及下標

緣由C語言向一維數組a[10]中輸入10個數據&#xff1a;12&#xff0c;15&#xff0c;18&#xff0c;21&#xff0c;24&#xff0c;32&#xff0c;34&#xff0c;36&#xff0c;38&#xff0c;4-其他-CSDN問答 double a[10000]{}, j 0; int n 0;while (n < 10000){std::cin …

WordPress與主流CMS拿Webshell實戰

一、wordpress安裝環境首先我們在vulhub中啟動我們wordpress的doaker容器然后去訪問我們的80端口然后選擇簡體中文進行安裝然后就可以登錄到我們的后臺界面了后臺修改模板拿webshell進入后臺&#xff0c;我們修改一下404頁面的代碼&#xff0c;添加我們的一句話木馬然后保存&am…

指針的運算與數組

一、指針的運算1.1加法對指針可以進行加法運算&#xff0c;即p n或者p - n。其結果依舊是一個是一個指針&#xff0c;新的指針是在原來的地址值基礎上加上/減去n *(sizeof(指針指向的數據類型)&#xff09;個字節。 指針也可以進行自增&#xff0c;即*&#xff08;p &#xf…

【PostgreSQL內核學習:WindowAgg 幀優化與節點去重】

PostgreSQL內核學習&#xff1a;WindowAgg 幀優化與節點去重背景關鍵詞解釋本優化主要修改內容描述提交信息提交描述源碼解讀optimize_window_clauses 函數核心邏輯拆解函數時序圖新增結構體類型 SupportRequestOptimizeWindowClause優化后的效果幀優化 sql 用例查詢計劃輸出節…

行業要聞|正式落地!新思科技宣布完成對Ansys的收購

2025年7月17日——新思科技&#xff08;Synopsys, Inc.&#xff0c;納斯達克股票代碼&#xff1a;SNPS&#xff09;宣布完成對Ansys的收購。該交易旨在整合芯片設計、IP核以及仿真與分析領域的領先企業&#xff0c;助力開發者快速創新AI驅動的產品。在擴大至310億美元的總潛在市…

Elasticsearch 基礎速成 5 步跑通索引、文檔、映射與查詢

1 準備工作運行環境 curl -fsSL https://elastic.co/start-local | sh # 一條命令拉起本地單節點集群 # 瀏覽器打開 http://localhost:5601 進入 Kibana → DevTools → Console已有云端或 Serverless 集群可以直接跳到第 2 步。操作界面 以下所有請求均可在 Kibana → DevT…

語音表示學習論文總結

語音表示學習&#xff08;Speech Representation Learning&#xff09;是語音信號處理與機器學習交叉領域的核心技術&#xff0c;其目標是通過數據驅動的方式&#xff0c;從原始語音信號中自動提取具有判別性、魯棒性和泛化能力的特征表示&#xff0c;以替代傳統手工設計的聲學…

國產芯+單北斗防爆終端:W5-D防爆智能手機,助力工業安全通信升級

在石油石化、煤礦開采、電力檢修等高危行業&#xff0c;防爆設備的定位精度、通信可靠性及供應鏈安全性直接決定作業安全與生產效率。傳統防爆手機依賴GPS定位與進口芯片&#xff0c;存在信號盲區、數據泄露風險及斷供隱患。針對此&#xff0c;我們推出W5-D防爆智能終端&#x…

Kafka簡述及學習課程

Kafka是由Apache軟件基金會開發的一個開源流處理平臺&#xff0c;由Scala和Java編寫。Kafka是一種高吞吐量的分布式發布訂閱消息系統&#xff0c;它可以處理消費者在網站中的所有動作流數據。 這種動作&#xff08;網頁瀏覽&#xff0c;搜索和其他用戶的行動&#xff09;是在現…

BLE PHY 幀結構

BLE&#xff08;低功耗藍牙&#xff09;的 PHY&#xff08;物理層&#xff09;幀結構根據傳輸模式&#xff08;廣播、數據&#xff09;和 PHY 類型&#xff08;1M、2M、Coded PHY&#xff09;有所差異&#xff0c;但基本框架一致。以下是 BLE PHY 幀的通用結構及各部分含義&…

海外貨運 app 系統架構分析

一、引言海外貨運業務涉及眾多復雜環節&#xff0c;從貨物攬收、倉儲管理、運輸調度到最后交付&#xff0c;需要一個高效、穩定且功能全面的 APP 系統來協調各方資源&#xff0c;提升物流效率&#xff0c;保障貨物安全準確送達。本文將對海外貨運 APP 系統架構進行詳細剖析&…