50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Hidden Search Widget (交互式搜索框)

📅 我们继续 50 个小项目挑战!------ Hidden Search Widget 组件

✨ 组件目标

  • 点击按钮展开隐藏的搜索框

  • 再次点击按钮收起搜索框

🧱 技术实现点

  • Vue3 的响应式状态管理 ref

  • TailwindCSS 的过渡动画与布局类

  • 条件样式绑定 :class 实现动态样式

🔧 HiddenSearchWidget.vue 组件实现

html 复制代码
<template>
  <div class="flex h-screen items-center justify-center text-white">
    <div class="flex h-14 border-2 bg-white">
      <input
        :class="[
          'text-gray-500 outline-0 transition-all duration-300 ease-in-out',
          isOpen ? 'w-96 p-4' : 'w-0',
        ]"
        placeholder="Search..."
        type="text" />
      <button class="h-14 w-14 text-3xl" @click="toggle">🔍</button>
    </div>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const isOpen = ref(false)

const toggle = () => {
  isOpen.value = !isOpen.value
}
</script>

💡 TailwindCSS 样式重点讲解

类名 功能描述
transition-all duration-300 平滑过渡动画
w-96 / w-0 控制输入框宽度展开与收起
p-4 输入框内边距
outline-0 移除默认焦点样式
text-gray-500 输入文字颜色
h-14 w-14 按钮尺寸

🦌 常量定义 + 组件路由

constants/index.js 添加组件预览常量:

js 复制代码
export const projectList = [
 {
        id: 4,
        title: 'Hidden Search Widget',
        image: 'https://50projects50days.com/img/projects-img/4-hidden-search-widget.png',
        link: 'HiddenSearchWidget',
    }
]

router/index.js 中添加路由选项:

js 复制代码
{
  path: '/HiddenSearch',
  name: 'HiddenSearch',
  component: () => import('@/projects/HiddenSearch.vue')
}

🚀 小结

本组件通过 Vue3 的响应式状态管理和 TailwindCSS 的实用工具类,实现了一个简洁的隐藏搜索框交互效果。

  • 使用 ref 管理组件状态

  • 利用条件样式绑定动态控制元素样式

  • 应用 TailwindCSS 的过渡动画类提升用户体验


📅 明日预告:Blurry Loading!实现模糊加载效果。

每天造一个轮子,码力暴涨不是梦!🚀

相关推荐
IT_陈寒4 小时前
为什么我的React组件一直在意外重渲染?
前端·人工智能·后端
Su米苏4 小时前
基于 Token 预算的上下文压缩控制器(Context Compaction Controller)
前端·数据库·人工智能
骇客野人4 小时前
Java 开发组件大全覆盖后端主流技术栈(基础、Web、ORM、中间件、微服务、安全、工具、测试、运维、信创适配常用组件)
java·前端·中间件
谢亮_vipxieliang4 小时前
深入理解 JavaScript 数据类型与类型转换
开发语言·javascript·ecmascript
风骏时光牛马4 小时前
大模型底层架构与推理流程AI源码深度剖析
前端
程序员Sunday13 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
Setsuna_F_Seiei13 小时前
前端转型 Agent 开发 06 之 Agent Memory 记忆系统(让 Agent 更智能,更懂你)
前端·agent·ai编程
志尊宝14 小时前
Vue3 零基础每日笔记(073):keep-alive 页面缓存实战——列表页返回不丢状态
vue.js·笔记·缓存·#vue #前端 #前端开发·#javascript·#vue.js
zhangzeyuaaa14 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
默_笙15 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript