当前位置: 首页 > news >正文

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

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

  • 仓库地址:https://github.com/SunACong/50-vue-projects

  • 项目预览地址:https://50-vue-projects.vercel.app/

在这里插入图片描述

✨ 组件目标

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

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

🧱 技术实现点

  • Vue3 的响应式状态管理 ref

  • TailwindCSS 的过渡动画与布局类

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

🔧 HiddenSearchWidget.vue 组件实现

<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 添加组件预览常量:


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 中添加路由选项:

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

🚀 小结

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

  • 使用 ref 管理组件状态

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

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


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

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

相关文章:

  • 拉普拉斯高斯(LoG)滤波器掩模的注意事项
  • vue3 + vite 使用tailwindcss
  • 关于收集 Android Telephony 网络信息的设计思考2
  • Git 提交大文件 this exceeds GitHub‘s file size limit of 100.00 MB
  • 【WebRTC】源码更改麦克风权限
  • windows服务器部署jenkins工具(二)
  • npm、pnpm、yarn 各自优劣深度剖析
  • DeepSeek赋能智能家居:构建高智能、低延迟的物联网生态
  • HarmonyOS NEXT端云一体化工程目录结构
  • STM32项目分享:智能家居(机智云)升级版
  • 学习STC51单片机10(芯片为STC89C52RC)
  • 网络学习-利用reactor实现http请求(六)
  • esp32cmini SK6812 2个方式
  • JavaScript APIs学习day2--DOM!!
  • Open CASCADE学习|刚体沿曲线运动实现方法
  • 前端学习(5)—— JavaScript(WebAPI)
  • 文件上传功能uploadify.js报updateSettings is not a function
  • EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案
  • 【RabbitMQ】记录 InvalidDefinitionException: Java 8 date/time type
  • 超低延迟音视频直播技术的未来发展与创新
  • 网站开发应走什么科目/网站搜索引擎优化技术
  • 双桥网站建设/nba排名2021最新排名
  • 苹果id钓鱼网站怎么做/旺道seo优化
  • 沈阳网站建设招标公司/青岛网站快速排名提升
  • wordpress速度加快/宁波优化网站哪家好
  • wordpress中文标签云插件/淄博seo网站推广