50个前端实战项目之04:隐藏的搜索小组件

大家好,我是宝哥。

今天讲50个前端实战项目之04:隐藏的搜索小组件。

源码下载地址

https://github.com/bradtraversy/50projects50days/tree/master/hidden-search

前端实战项目系列正在更新:04/50

  • 01:可展开卡片

  • 02:进度条

  • 03:旋转导航动画

  • 04:隐藏的搜索小组件

项目介绍

本项目演示了一个简洁实用的隐藏式搜索小部件。点击搜索按钮后,搜索栏会展开,并输入框自动获得焦点,方便用户输入搜索内容。

效果预览

b1cf3e48812675b9ac37af8f4a6123df.png

在线预览(文末点击原文链接可直达):

https://qdkfweb.cn/50projects50days/hidden-search/

实现方法

  1. HTML 结构中定义搜索栏的布局,包括输入框和按钮。

  2. CSS 样式定义搜索栏的初始外观、展开后的外观以及按钮的移动效果。

  3. JavaScript 代码监听按钮的点击事件,并根据 active 类的状态控制搜索栏的展开/收起,并设置输入框的焦点。

核心代码

HTML 结构

  • .search 容器包含搜索栏的输入框和按钮。

  • .input 输入框用于输入搜索内容。

  • .btn 按钮用于展开或收起搜索栏。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css" integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog==" crossorigin="anonymous" /><link rel="stylesheet" href="style.css" /><title>Hidden Search</title></head><body><div class="search"><input type="text" class="input" placeholder="Search..."><button class="btn"><i class="fas fa-search"></i></button></div><script src="script.js"></script></body>
</html>

CSS 样式

  • .searchposition: relative 属性使其可以定位子元素。

  • .input.btn 的样式定义了初始外观和大小。

  • .search.active .input.search.active .btn 的伪类控制搜索栏展开后的样式变化。

@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');* {box-sizing: border-box;
}body {background-image: linear-gradient(90deg, #7d5fff, #7158e2);font-family: 'Roboto', sans-serif;display: flex;align-items: center;justify-content: center;height: 100vh;overflow: hidden;margin: 0;
}.search {position: relative;height: 50px;
}.search .input {background-color: #fff;border: 0;font-size: 18px;padding: 15px;height: 50px;width: 50px;transition: width 0.3s ease;
}.btn {background-color: #fff;border: 0;cursor: pointer;font-size: 24px;position: absolute;top: 0;left: 0;height: 50px;width: 50px;transition: transform 0.3s ease;
}.btn:focus,
.input:focus {outline: none;
}.search.active .input {width: 200px;
}.search.active .btn {transform: translateX(198px);
}

JavaScript 代码

  • 获取搜索栏、按钮和输入框的 DOM 元素引用。

  • 按钮的点击事件处理程序:

    • 切换 .search 元素的 active 类,控制搜索栏的展开/收起。

    • 搜索栏展开时,自动将焦点移至输入框。

const search = document.querySelector('.search')
const btn = document.querySelector('.btn')
const input = document.querySelector('.input')btn.addEventListener('click', () => {search.classList.toggle('active')input.focus()
})

总结

通过理解本项目的代码,您学习了如何使用 HTML、CSS 和 JavaScript 创建交互式搜索小部件。您可以根据需要修改本项目的样式和功能,例如添加搜索提示、搜索历史记录等,打造更实用的搜索体验。

动图全过程展示:

2fdba6b60d7d56c041535c6c95bc2681.gif

在线预览(点底部原文链接可直达):https://qdkfweb.cn/50projects50days/hidden-search/

最后

如果你觉得宝哥今天的尝试对你有帮助,就给我点个赞,关注一波。分享出去,也许你的转发能给别人带来一点启发。

以后我也会多尝试共读其它项目,如果看到喜欢的项目也可以留言告诉我,今天的教程你学会了吗?学会了,就在评论区刷一个,学会了。

欢迎长按图片加好友,宝哥会第一时间和你分享前端行业趋势,面试资源,学习途径等等。

7eeee82ec89c7b5fe072dba36147ec8a.png

添加好友备注【加群】拉你进技术交流群

公众号前端开发博客 专注 前端开发技术,分享 前端开发资源WEB前沿资讯,如果喜欢我的分享,给 宝哥 点一个 或者 分享 都是对我的支持

关注公众号后,在首页:

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF

  • 回复「Vue脑图」获取 Vue 相关脑图

  • 回复「思维图」获取 JavaScript 相关思维图

  • 回复「简历」获取简历制作建议

  • 回复「简历模板」获取精选的简历模板

  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。

  • 回复「知识点」下载高清JavaScript知识点图谱

  • 回复「读书」下载成长的相关电子书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

按键精灵纯本地离线文字识别插件

目的 按键精灵是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。但按键精灵是不包含图色功能&#xff0c;无法识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要讲解下…

Docker in Docker:深入解析与实战应用

Docker in Docker&#xff1a;深入解析与实战应用 一、引言 随着容器化技术的日益普及&#xff0c;Docker已经成为开发、测试、部署应用的标配工具。而在某些特定的场景下&#xff0c;如持续集成/持续部署&#xff08;CI/CD&#xff09;流水线中&#xff0c;我们可能需要在Do…

400 Bad Request问题

总结&#xff1a;请求路径写错了 400 问题 原地址&#xff0c;deleteSetmeal的参数应该改为param 更改请求地址正确后即可

靶场分享反弹shell

1、存在反弹shell命令的java代码文件Exploit.java&#xff0c;通过版本为1.8的jdk工具进行编译&#xff0c;生成Exploit.class文件 2、在存在Exploit.class文件的目录下开启http服务&#xff0c;让开启ldap服务端的工具marshalsec-0.0.3-SNAPSHOT-all.jar来访问这个文件 3、使用…

Spring IoCDI (1)

目录 一、IoC & DI入门 1、Spring是什么 &#xff08;1&#xff09;什么是容器&#xff1f; &#xff08;2&#xff09;什么是IoC&#xff1f; 二、IoC介绍 1、传统程序开发 2、解决方案 3、IoC程序开发 4、IoC优势 三、DI介绍 通过前面的学习&#xff0c;我们知…

Python语言的类和对象的基础

在 Python 中&#xff0c;类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;是面向对象编程的核心概念。类是用来创建对象的蓝图或模板&#xff0c;它定义了对象的属性和方法&#xff1b;对象是类的实例&#xff0c;具有类定义的属性和方法。本文将介绍 Py…

QPS(Queries Per Second)和TPS(Transactions Per Second)的介绍和区别

QPS&#xff08;Queries Per Second&#xff09;和TPS&#xff08;Transactions Per Second&#xff09;是衡量计算系统性能的两个指标&#xff0c;它们分别代表了系统每秒可以处理的查询数和事务数。虽然这两个术语在某些情况下可以互换使用&#xff0c;但它们在技术上有所区别…

OpenCV 开源的计算机视觉和机器学习软件库

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它包含了许多用于图像处理、计算机视觉和机器学习的通用算法。这个库最初由Intel开发,但现在已经成为一个全球性的社区项目,由许多贡献者共同维护和发展。 OpenCV的主要特点和优势包…

Day30:热帖排行、生成长图、将文件上传到云服务器、优化热门帖子列表、压力测试

热帖排行 不同的算分方式&#xff1a; 只存变化的帖子到redis中&#xff0c;每五分钟算一次分&#xff0c;定时任务 存redis 构建redis键 //统计帖子分数 //key:post:score -> value:postId public static String getPostScoreKey() {return PREFIX_POST SPLIT "…

公众号/小程序 开发模式切换

开发公众号/小程序 模式切换 https://ke.qq.com/course/6033257/14616022822424425#term_id106263577

软件架构设计模式:微服务与单体架构的比较

在软件开发领域&#xff0c;架构设计模式是指导如何组织应用程序代码和服务的基本方法。微服务架构和单体架构是两种常见的架构模式&#xff0c;它们各有优势和劣势&#xff0c;适用于不同的项目需求和团队结构。以下是微服务与单体架构的比较&#xff1a; ### 单体架构 单体…

如何进行APP下载分发?

进行APP软件分发主要涉及以下几个步骤&#xff1a; 准备应用程序&#xff1a;首先&#xff0c;开发人员需要确保应用程序已经经过完整的测试和质量保证&#xff0c;包括功能测试、用户体验测试、性能测试等&#xff0c;以确保其稳定性和可靠性。同时&#xff0c;打包应用程序&…

Redis(Jedis和SpringBoot整合Redis)

文章目录 1.Jedis1.介绍2.环境配置1.创建maven项目2.pom.xml引入依赖3.新建一个包并创建一个文件 3.Jedis远程连接到Redis1.Redis放到服务器可以连接的前提条件2.为Redis设置密码1.编辑配置文件2.找到 requirepass3.设置密码为root4.重启Redis&#xff0c;在shutdown的时候报错…

算法入门<一>:C++各种排序算法详解及示例源码

1、排序算法 排序算法&#xff08;sorting algorithm&#xff09;用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用&#xff0c;因为有序数据通常能够被更高效地查找、分析和处理。 1.1 评价维度 运行效率&#xff1a;我们期望排序算法的时间复杂度尽量低&#xf…

机械臂标准DH建模及正运动学分析(以IRB4600型工业机械臂为例)

1. 前言 对于工业机械臂而言&#xff0c;运动学是不考虑力学特性的情况下对机械臂的几何参数与其位置、速度、加速度等运动特性的关系研究。DH建模是运动学的基础&#xff0c;全称为Denavit-Hartenberg建模方法&#xff0c;是一种广泛应用于机器人运动学中的建模技术。该方法通…

c++ 生成模拟测序数据代码

统计真实数据不同测序位置碱基的错误率,引入到DNA片段中,从而模拟生成DNA测序数据。 参考 ART: a next-generation sequencing read simulator - PMC #include <iostream> #include <random> #include <string> #include <cassert>using namespace…

05_G1垃圾收集器

G1垃圾收集器简介 垃圾优先 Garbage-First&#xff08;G1&#xff09;垃圾收集器面向多处理器机器&#xff0c;适用于大内存场景。它尝试在无需太多配置的情况下实现垃圾收集暂停时间目标&#xff0c;并同时实现高吞吐量。G1旨在通过适用于当前目标应用和环境的功能&#xff0…

3DMax中场景太大如何优化?

如果你在3dMax中进行大型项目时曾因性能低下或崩溃而感到沮丧,那么你就来对地方了。大型3dMax场景由于其复杂性和文件大小而具有挑战性,但使用正确的优化技术,你可以改进工作流并获得更平滑的结果。在今天的文章中,我们将深入探讨如何在大量3ds Max场景中增强性能。 原因:…

5月4(信息差)

&#x1f384; HDMI ARC国产双精度浮点dsp杜比数码7.1声道解码AC3/dts/AAC环绕声光纤、同轴、USB输入解码板KC33C &#x1f30d; 国铁集团回应高铁票价将上涨 https://finance.eastmoney.com/a/202405043066422773.html ✨ 源代码管理平台GitLab发布人工智能编程助手DuoCha…

安装mysql-8.0.19-winx64.zip步骤

1、cmd以管理员身份打开 2、dos切换到mysql的bin目录下 3、doc执行 mysqld --initialize --console&#xff08;注意这里会生成临时密码&#xff09; 4、继续执行&#xff1a; mysqld --install5、启动服务器&#xff1a; net start mysql 完毕&#xff01;&#xff01; …