50 Projects 50 Days - Hidden Search Widget 学习记录

news2024/12/30 1:54:40

项目地址

Hidden Search Widget

展示效果

Hidden Search Widget
在这里插入图片描述

实现思路

点击搜索按钮,展开输入框,主要元素就两个:input输入框和button,这两个本身就是行内元素。点击触发的动作拆分为两个,第一个是input输入框出现,第二个是搜索按钮向右移动。
为此,初始状态可以让输入框隐藏在按钮的下方,而点击后,输入框宽度增加,按钮向右移动,实现展开的效果。为此点击触发添加的一个class应该加在两个元素上,又或者两个元素的父元素上。

实现细节

HTML结构

非常简单的一个search父盒子,再在里面添加两个行内元素inputbutton即可。

<div class="search">
  <input type="text" class="input" placeholder="Search...">
  <button class="btn">
    <i class="fas fa-search"></i>
  </button>
</div>

CSS样式

父盒子只需要设置相对定位即可。inputbutton都设置成尺寸50*50的盒子,button改为绝对定位,并跟input左边对齐,这样就能完成遮盖住input

.search {
  position: relative;
}

.input {
  width: 50px;
  height: 50px;
  border: 0;
  padding: 15px;
  transition: width 0.3s ease;
}

.btn {
  width: 50px;
  height: 50px;
  font-size: 24px;
  background-color: #fff;
  border: 0;
  position: absolute;
  left: 0;
  right: 0;
  cursor: pointer;
  transition: transform 0.3s ease;
}

当点击按钮后给父盒子添加active的class,这时input变宽,button向右移动,实测发现移动距离要小于input宽度,刚好等于时动画结束时中间会闪过一条间隔线。

.search.active .input {
  width: 200px;
}
.search.active .btn {
  transform: translateX(198px);
}

最后还有一个效果是自动聚焦到输入框,但是原生效果并不好看,因此这里我们消除两个元素获得焦点时的样式。

.input, .btn:focus {
  outline: none;
}

JavaScript逻辑

按钮绑定点击事件,父盒子添加或去除class,并让输入框获得焦点,输入框收起来时被遮盖,所以也无需在意此时是否获得焦点。

const search = document.querySelector('.search');
const input = document.querySelector('.input');
const btn = document.querySelector('.btn');

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

总结

  1. 点击按钮之后的动作有两个:input宽度拉伸,button向右移动,只要实现这两个元素的样式变化就好了。

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

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

相关文章

Vue核心 事件处理

1.8. 事件处理 1.8.1.事件的基本使用: 使用v-on:xxx或**xxx**绑定事件&#xff0c;其中 xxx 是事件名事件的回调需要配置在methods对象中&#xff0c;最终会在vm上methods中配置的函数&#xff0c;不要用箭头函数&#xff0c;否则this就不是vm了methods中配置的函数&#xff…

手撕Twitter推荐算法

Twitter近期开源了其推荐系统源码[1,2,3]&#xff0c;截止现在已经接近36k star。但网上公开的文章都是blog[1]直译&#xff0c;很拗口&#xff0c;因此特地开个系列系统分享下。系列涵盖&#xff1a; Twitter整体推荐系统架构&#xff1a;涵盖图数据挖掘、召回、精排、规则多…

ActiveMQ使用

一、什么是消息中间件 消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送 二、什么是ActiveMQ ActiveMQ是一种开源的基于JMS&#xff08;Java Message Servie&#xff09;规范的一种消息中间件的实现&#xff0c;ActiveMQ的设计目标是提供标准的&#xff0c…

HCIP之VLAN

目录 网络的三层架构 接入层 无线的缺陷&#xff1a; 上网用户数量增多&#xff0c;网络卡顿的原因 CSMA/CD --- 载波侦听多路访问/冲突检测 CSMA/CA --- 载波侦听多路访问/冲突避免 无线网络没有使用冲突检测技术的原因 汇聚层 连接两条线路的原因 核心层 VLAN VLAN配…

数字设计笔试Verilog手撕代码 - 无符号浮点加法器

前言 今天在网上看笔试题发现有个设计浮点累加器的题目&#xff0c;看了下题目说明感觉不太清楚&#xff0c;恰好记得之前做过浮点数的加法运算的设计&#xff0c;索性就改了下题目需求&#xff0c;作为一个小练习在重新设计一遍。具体设计要求如下&#xff1a; 设计需求 设…

Java锁策略-Java多线程(4)

(各位观众老爷下午好, 创作不易勒, 大家多多点赞收藏&#x1f618;) 咱们废话不多讲, 下面细&#x1f512; 目录 前言 乐观锁 VS 悲观锁 乐观锁 悲观锁 悲观乐观锁优缺点 轻量级锁 VS 重量级锁 重量级锁 轻量级锁 读写锁 自旋锁 互斥锁 可重入锁 VS 不可重入锁 死…

IPSCE

文章目录 1.什么是数据认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段?2.什么是身份认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段?3.什么VPN技术?4.VPN技术有哪些分类?5.IPSEC技术能够提供哪些安全服务?6.IPSEC的技术架构是什么?7.AH与ESP…

今天面了个字阿里拿38K出来的,真是纹身师闭眼,秀了我一脸啊

公司前段缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在15-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不提测…

8.java程序员必知必会类库之嵌入式SQL数据库

前言 嵌入式内存数据库&#xff0c;作为嵌入到应用内部的数据库&#xff0c;在正常生产业务流程中使用不多。现在一般公司通用架构都是应用和数据分离&#xff0c;解耦数据和应用。但是&#xff0c;在某些特殊场景中&#xff0c;这种嵌入式数据库是比较好的选择。 在某些单元…

如何在开发阶段保证软件工程质量 (程序员要做些什么)

前言 大家常说&#xff1a;“代码和人&#xff0c;有一个能跑就行”&#xff0c;但这并不意味着我们可以放弃职业道德。与土木工程一样&#xff0c;软件工程也需要一些可度量的指标来衡量产品的交付质量。一个高质量的软件绝对不能只靠测试人员来保证&#xff0c;更不能相信程…

在SaleSmartly(ss客服)中为Messenger 提供无缝支持体验

客户希望您在他们所在的地方与他们见面&#xff0c;这意味着打开多个沟通渠道。但是&#xff0c;当您通过电子邮件、实时聊天、社交等方式进行通信时&#xff0c;对话很容易丢失、被忽视和杂乱无章。 而Messenger的受欢迎程度&#xff0c;以及Meta的无所不在&#xff0c;使Face…

每日学术速递4.18

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Inpaint Anything: Segment Anything Meets Image Inpainting 标题&#xff1a;Inpaint Anything&#xff1a;分割任何东西满足图像修复 作者&#xff1a;Tao Yu, Runseng Feng, R…

企业用户如何选择合适的服务器配置方法教程

随着互联网信息的飞速发展&#xff0c;任何企业都脱离不了互联网&#xff0c;越来越多的企业都通过互联网实施无纸化的办公&#xff0c;互联网推广一体化整体型推广、互联网电子商务。中小型企业网站如何选购云服务器配置呢&#xff1f;但是&#xff0c;实现这些的最最基础的条…

ai改写句子软件-ai改写

AI免费伪原创&#xff1a;助力网站内容升级 您是否曾经为网站优化而烦恼&#xff0c;无论是内容更新还是SEO优化&#xff0c;都需要大量的时间和精力。但是&#xff0c;您是否知道&#xff0c;现在有一款能够使用AI技术来帮助您完成这些任务&#xff0c;而且还是免费的呢&…

【Git 学习】

Git 学习 一、Git的使用1. Git下载安装2. Git 命令3. Git推送代码步骤4. Git基本工作流程5. Git历史版本切换6. Git分支管理6.1 创建新分支6.2 切换分支6.3 合并分支6.4 删除分支 7. 远程仓库的工作流程7.1 具体流程 8.推送到远程仓库9. 代码冲突问题10. IDEA 集成Git10.1 版本…

说说webpack的构建流程?

① 初始化流程 从配置文件和 Shell 语句中读取与合并参数&#xff0c;并初始化需要使用的插件和配置插件等执行环境所需要的参数。 配置文件默认下为 webpack.config.js&#xff0c;也可以通过命令的形式指定配置文件&#xff1b; 主要作用是用于激活webpack的加载项和插件&am…

手写axios源码系列一:axios核心知识点

文章目录 axios的核心功能1、axios 函数对象2、dispatchRequest 发送请求3、interceptors 拦截器4、cancelToken 取消请求 最近从头搭建了一个vue小项目&#xff0c;想使用 axios 作为请求接口的第三方库。结果使用了 axios 这么长时间&#xff0c;想封装一下 axios &#xff0…

Nacos2.2.2开启鉴权配置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、更改application.properties中的配置二、修改配置 前言 最近公司开启了一个新的电商项目&#xff0c;项目中用到了Naocs作为注册中心和配置中心&#xff0…

WindowsUbuntu下python程序打包

Python程序的运行必须要有Python的环境&#xff0c;但是程序编出来是用的&#xff0c;如果是给别人用&#xff0c;而他/她的电脑上又没有Python程序运行的环境怎么办呢&#xff1f;总不能让他/她去安装一个吧&#xff1f;这时我们就要将Python程序打包为exe可执行文件&#xff…

【文章学习系列之模型】PatchTST

本章内容 文章概况模型结构实验结果长期预测表征学习 消融实验分块和通道独立性不同的回顾窗口 总结 文章概况 《A Time Series is Worth 64 Words: Long-term Forecasting with Transformers》是2023年发表于ICLR的一篇文章。该文章借鉴了计算机视觉领域的Vision Transformer…