如何制作鼠标悬浮后伸缩的搜索框

引言

许多博客都在使用的伸缩搜索框制作教程

成品展示(颜色自行搭配)

22222

初步布局

居中盒子&&初始化样式

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
		/* 初步布局 */
    body {
      margin: 0;
      background: linear-gradient(200deg, #f1b2ff, #ff80c6);
      height: 100vh;
    }

    .search-box {
      position: absolute;
      top: 50%;
      left: 50%;
      background: #fff;
    }
  </style>
</head>

<body>
  <div class="search-box">
    box
  </div>
</body>

</html>
image-20240629173919921

1形态

盒子中间填入input和a标签作为按钮背景色为白色

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
        /* 初步布局 */
      margin: 0;
      background: linear-gradient(200deg, #f1b2ff, #ff80c6);
      height: 100vh;
    }

       /* 居中设置背景色 */
    .search-box {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background: #fff;
    }
  </style>
</head>

<body>
  <div class="search-box" class="search-input">
    <input type="text">
    <a href="" class="search-btn">按钮</a>
  </div>
</body>

</html>
image-20240629174703859

2形态

让外盒子box变得更胖更圆润

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      /* 初步布局 */
      margin: 0;
      background: linear-gradient(200deg, #f1b2ff, #ff80c6);
      height: 100vh;
    }

    .search-box {
      /* 居中设置背景色 */
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background: #fff;

      /* 让他变胖变圆润一点 */
      height: 40px;
      padding: 10px;
      border-radius: 40px;
    }
  </style>
</head>

<body>
  <div class="search-box">
    <input type="text" class="search-input">
    <a href="" class="search-btn">按钮</a>
  </div>
</body>

</html>
image-20240629181256197

3形态

初始化输入框/按钮的样式和引入图标,将input一开始状态设置为width 0

文字标签换成图标

  1. 引入cdn

  2. 设置标签

输入框居中

设置input输入框自带的内边距为0,边框和轮廓为none

内部文字为16px 行高和父盒子一样40px

(从父盒子的Y起始点和结束点平均增加上下间距,也就是把文字往中间挤压,使得最后input输入框的整体高度和父盒子高度一致,实现输入框文字居中, 直接这样记,行高=盒高为文字居中,且一行的上下边距会将文字挤到中间)

image-20240629181030099

按钮样式

由于按钮是行内元素,想要设置宽高是无效的,让他往右漂浮,此时宽高生效

使用弹性布局将i标签水平横向居中

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <style>
    body {
      /* 初步布局 */
      margin: 0;
      background: linear-gradient(200deg, #f1b2ff, #ff80c6);
      height: 100vh;
    }

    .search-box {
      /* 居中设置背景色 */
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background: #fff;

      /* 让他变胖变圆润一点 */
      height: 40px;
      padding: 10px;
      border-radius: 40px;
    }

    .search-input {
      padding: 0;
      border: none;
      outline: none;
      font-size: 16px;
      line-height: 40px;
      width: 0;
    }

    .search-btn {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      float: right;
      display: flex;
      justify-content: center;
      align-items: center;
      cursor: pointer;
    }


  </style>
</head>

<body>
  <div class="search-box">
    <input type="text" class="search-input" placeholder="请输入内容">
    <a class="search-btn">
      <i class="fa fa-search"></i>
    </a>
  </div>
</body>

</html>

image-20240629184717610

4形态

悬浮或点击时box大盒子时 input宽度200px,按钮背景色变化,分别增加transition过渡0.4s

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
  <style>
    body {
      /* 初步布局 */
      margin: 0;
      background: linear-gradient(200deg, #f1b2ff, #ff80c6);
      height: 100vh;
    }

    .search-box {
      /* 居中设置背景色 */
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background: #fff;

      /* 让他变胖变圆润一点 */
      height: 40px;
      padding: 10px;
      border-radius: 40px;
    }

    .search-input {
      padding: 0;
      border: none;
      outline: none;
      font-size: 16px;
      line-height: 40px;
      width: 0;
      transition: 0.4s;
    }

    .search-btn {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      float: right;
      display: flex;
      justify-content: center;
      align-items: center;
      cursor: pointer;
      transition: 0.4s;
    }

    .search-box:hover .search-input {
      width: 200px;
    }

    .search-box:hover .search-btn {
      background: #b05824;
    }
  </style>
</head>

<body>
  <div class="search-box">
    <input type="text" class="search-input" placeholder="请输入内容">
    <a class="search-btn">
      <i class="fa fa-search"></i>
    </a>
  </div>
</body>

</html>

注意事项

a标签的跳转连接href 得去掉,否则图标会变成这样

image-20240629185308097

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nuxt3 的生命周期和钩子函数(五)

title: Nuxt3 的生命周期和钩子函数&#xff08;五&#xff09; date: 2024/6/29 updated: 2024/6/29 author: cmdragon excerpt: 摘要&#xff1a;本文详细介绍了Nuxt3中的六个核心生命周期钩子及其用法&#xff0c;包括build:done、build:manifest、builder:generateApp、…

[oeasy]python021_赛博宝剑铭文大赏_宝剑上的铭文_特殊符号和宝物

继续运行 &#x1f94b; 回忆上次内容 上次修改了 程序 将 石中剑变成了 红色 爱之大剑 可以 让宝剑 具有 更多铭文符号 和 颜色 吗&#xff1f;&#x1f914; 铭文 亚瑟王 从石头中 取得宝剑 说明 不列颠科技从石器时代 进入了 青铜时代 第一把 Caliburn 断裂 第二把 湖中仙…

恢复的实现技术-日志和数据转储

一、引言 在系统正常运行的情况下&#xff0c;事务处理的恢复机制应采取某些技术措施为恢复做好相应的准备&#xff0c;保证在系统发生故障后&#xff0c;能将数据库从一个不一致的错误状态恢复到一个一致性状态 恢复技术主要包括 生成一个数据库日志&#xff0c;来记录系统中…

iOS开发中用到的自定义UI库

文章目录 前言cell 左右滑动菜单日历组件仿QQ 侧滑抽屉仿探探、陌陌的卡牌滑动库头部缩放视图自定义UITabbar刮刮乐广告横幅 前言 本文中的UI组件&#xff0c;是作者在移动应用开发中都用到过的。 确实&#xff0c;找到对的三方库可以快速帮助我们构建App, 极大程度上提高了生…

ESP32-C2模组数据透传模式配置详细教程

文章目录 1. 背景2. 关键步骤2.1 烧录AT指令固件2.2 配置透传模式2.3 如何退出透传模式重新配置3. 思考1. 背景 最近做的项目中,有蓝牙+WIFI的数据透传的需求,即系统A和系统B之间的通讯通过无线的方式,其实在实际项目中有很多这种场景比如无线调试手柄、无线数据终端、无线…

c进阶篇(一):数据的存储

1.数据类型介绍 char // 字符数据类型 short // 短整型 int // 整形 long // 长整型 long long // 更长的整形 float // 单精度浮点数 double // 双精度浮点数 1.1整形家族&#xff1a; char unsigned char signed char …

Linux 生产消费者模型

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; 前言 1. 生产消费者模型 1.1 什么是生产消…

stm32学习笔记---ADC模数转换器(代码部分)AD单通道/多通道

目录 第一个代码&#xff1a;AD单通道 ADC初始化步骤 ADC相关的库函数 RCC_ADCCLKConfig 三个初始化相关函数 ADC_Cmd ADC_DMACmd ADC_ITConfig 四个校准相关函数 ADC_SoftwareStartConvCmd ADC_GetSoftwareStartConvStatus ADC_GetFlagStatus ADC_RegularChannel…

探索 Electron:将 Web 技术带入桌面应用

Electron是一个开源的桌面应用程序开发框架&#xff0c;它允许开发者使用Web技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序&#xff0c;它的出现极大地简化了桌面应用程序的开发流程&#xff0c;让更多的开发者能够利用已有的 Web 开发技能…

iOS17系统适配

iOS17 新功能 文章目录 iOS17 新功能iOS17支持哪几款机型Xcode15新特性iOS17-开发适配指南 横屏待机 在iOS 17中&#xff0c;还带来了横屏待机功能&#xff0c;苹果将这个新功能命名为“Standby”模式&#xff0c;为 iPhone 带来了全新的玩法。iPhone启用之后&#xff0c;默认情…

文件加密|电脑文件夹怎么设置密码?5个文件加密软件,新手必看!

电脑文件夹怎么设置密码&#xff1f;您是否希望更好地在电脑上保护您的个人或敏感文件&#xff1f;设置电脑文件夹密码是一种简单而有效的方式来确保你的隐私不被侵犯。通过使用文件加密软件&#xff0c;您可以轻松地为您的文件和文件夹设置密码保护。因此&#xff0c;本文将介…

快速应用开发(RAD):加速软件开发的关键方法

目录 前言1. 快速应用开发的概念1.1 什么是快速应用开发&#xff1f;1.2 RAD与传统开发方法的对比 2. 快速应用开发的实施步骤2.1 需求分析与规划2.2 快速原型开发2.3 用户评估与反馈2.4 迭代开发与改进2.5 最终交付与维护 3. 快速应用开发的优点与应用场景3.1 优点3.2 应用场景…

Python逻辑控制语句 之 判断语句--if elif else 结构(多重判断)

1.if elif else 的介绍 # if elif else 如果 ... 如果 ... 否则 .... # 多个如果之间存在关系 应用场景&#xff1a;在判断条件时, 需要判断 多个条件, 并且对应不同条件要执行 不同的代码 2.if elif else 的语法 if 判断条件1: 判断条件1成立&#xff0c;执行的代码 elif 判…

React@16.x(44)路由v5.x(9)源码(1)- path-to-regexp

目录 1&#xff0c;作用2&#xff0c;实现获取 match 对象2.1&#xff0c;match 对象的内容2.2&#xff0c;注意点2.3&#xff0c;实现 1&#xff0c;作用 之前在介绍 2.3 match 对象 时&#xff0c;提到了 react-router 使用第3方库 path-to-regexp 来匹配路径正则。 我们也…

【漏洞复现】科立讯通信有限公司指挥调度管理平台uploadgps.php存在SQL注入

0x01 产品简介 科立讯通信指挥调度管理平台是一个专门针对通信行业的管理平台。该产品旨在提供高效的指挥调度和管理解决方案&#xff0c;以帮助通信运营商或相关机构实现更好的运营效率和服务质量。该平台提供强大的指挥调度功能&#xff0c;可以实时监控和管理通信网络设备、…

【Android面试八股文】请描述一下Service的生命周期是什么样的?

文章目录 一、Service的生命周期是什么样的?1.1 通过 `startService` 启动的 Service 生命周期:1.1.1 相关方法说明1.1.2 流程1.1.3 总结1.2 通过 bindService 启动的 Service 生命周期1.2.1 相关方法说明1.2.2 流程1.3 生命周期调用1.4 总结一、Service的生命周期是什么样的…

20240629在飞凌开发板OK3588-C上使用Rockchip原厂的SDK跑通I2C扩展GPIO芯片TCA6424ARGJRR

20240629在飞凌开发板OK3588-C上使用Rockchip原厂的SDK跑通I2C扩展GPIO芯片TCA6424ARGJRR 2024/6/29 18:02 1、替换DTS了&#xff1a; Z:\repo_RK3588_Buildroot20240508\kernel\arch\arm64\boot\dts\rockchip viewproviewpro-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot2024…

Unity WebGL项目问题记录

一、资源优化 可通过转换工具配套提供的资源优化工具&#xff0c;将游戏内纹理资源针对webgl导出做优化。 工具入口&#xff1a; 工具介绍 Texture 搜索规则介绍 已开启MipMap: 搜索已开启了MipMap的纹理。 NPOT: 搜索非POT图片。 isReadable: 搜索已开启readable纹理。 …

【机器学习】大模型训练的深入探讨——Fine-tuning技术阐述与Dify平台介绍

目录 引言 Fine-tuning技术的原理阐 预训练模型 迁移学习 模型初始化 模型微调 超参数调整 任务设计 数学模型公式 Dify平台介绍 Dify部署 创建AI 接入大模型api 选择知识库 个人主页链接&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 Fine-tuning技术允许用户根…

Day 48 消息队列集群RabbitMQ

消息队列集群-RabbitMQ 一、消息中间件 中间件 tomcat java web中间件 web容器 mysql php php mysql uwsgi python mysql mycat 数据库中间件 rabbitMQ 消息中间件 1、简介 MQ 全称为&#xff08;Message Queue消息队列&#xff09;。是一种应用程序对应用程序的通信方…