【JavaScript】仿青柠搜索界面

news2024/9/24 0:26:26

在这里插入图片描述
点击搜索栏,背景模糊,出现图标。点击界面任意处,失去焦点,恢复原样
在这里插入图片描述
代码:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <!-- 导入图标 -->
  <script
    type="module"
    src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"
  ></script>
  <script
    nomodule
    src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"
  ></script>
  <link rel="stylesheet" href="18.css" />
  <body>
    <div class="container">
      <i class="one"> <ion-icon name="logo-windows"></ion-icon></i>
      <div class="search-box">
        <input type="text " class="search-btn" placeholder="搜索" />
      </div>
      <i class="two"><ion-icon name="search-outline"></ion-icon></i>
    </div>
    <div class="timeBox"></div>
  </body>
  <script>
    var one = document.querySelector(".one");
    var two = document.querySelector(".two");
    var container = document.querySelector(".container");
    var searchBtn = document.querySelector(".search-btn");
    var styleOne = document.createElement("style");
    var searchBox = document.querySelector(".search-box");
    var timeBox = document.querySelector(".timeBox");
    searchBtn.addEventListener("focus", function () {
      styleOne.innerHTML = `body::before{content:"";filter:blur(12px) ;transform:scale(1.03);}`;
      document.head.appendChild(styleOne);
      one.style.opacity = "1";
      two.style.opacity = "1";
      // background: rgba(255, 255, 255, 0.4);
      container.style.background = "rgba(255, 255, 255, 0.9)";
      //   获取焦点,移开鼠标不会收回宽度
      searchBox.style.width = "400px";
    });
    // 失去焦点后恢复原状
    searchBtn.addEventListener("blur", function () {
      one.style.opacity = "0";
      two.style.opacity = "0";
      container.style.background = "rgba(255, 255, 255, 0.1)";
      document.head.removeChild(styleOne);
      searchBox.style.width = "";
    });
    //获取时间
    setInterval(() => {
      var data = new Date();
      let hh = padZero(data.getHours());
      let mm = padZero(data.getMinutes());
      let ss = padZero(data.getSeconds());
      timeBox.innerHTML = `${hh}:${mm}:${ss}`;
    }, 1000);
    // 防止时分秒变成单数,影响美感
    function padZero(n) {
      return n > 9 ? n : "0" + n;
    }
  </script>
</html>

CSS代码:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100vw;
  height: 100vh;
  /* 背景图放大时,多余内容隐藏 */
  overflow: hidden;
}
body::before {
  content: "";
  /* 你在网站上所看见的背景图就是你所增加的图, 不会出现平铺或重复的现象。 */
  background: url(img/1.jpg) no-repeat center;
  background-size: auto;
  background-position: center;
  object-fit: cover;
  width: 150%;
  height: 150%;
  position: absolute;
  /* left: -50px;
  top: -50px; */
  transition: all 0.2s ease-in-out;
}
.container {
  height: 60px;
  background: rgba(255, 255, 255, 0.1);
  z-index: 1;
  display: flex;
  position: absolute;
  top: 200px;
  padding: auto 10px;
  justify-content: space-between;
  align-items: center;
  border-radius: 30px;
  backdrop-filter: blur(4px);
  box-shadow: 0 0 0 1px gray;
}
.timeBox {
  position: absolute;
  /* background: white; */
  height: 40px;
  top: 16%;
  left: 47%;
  color: white;
  text-align: center;
  line-height: 40px;
  font-size: 2em;
}
.timeBox:hover {
  transition: all 0.2s ease-in-out;
  transform: translateX(-5px) scale(1.2);
}
.search-box {
  width: 200px;
  transition: all 0.3s ease-in-out;
}
.container:hover .search-box {
  width: 440px;
}
.one {
  margin: auto 30px;
  font-size: 1.5em;
  opacity: 0;
  transition-delay: 0.4s;
  transition: all 0.3s ease;
}
.two {
  margin-right: 30px;
  font-size: 1.5em;
  opacity: 0;
  transition-delay: 0.4s;
  transition: all 0.3s ease;
}
/* .container:hover .one {
  opacity: 1;
}
.container:hover .two {
  opacity: 1;
} */
/* input设置 */
.search-btn {
  width: 100%;

  border: none;
  text-align: center;
  outline: none;
  background: inherit;
  font-size: 20px;

  transition: all 0.5s ease-in-out;
}
.search-btn::placeholder {
  color: rgba(255, 255, 255, 0.7);
  text-shadow: 0 0 1px 2px black;
}
.container:hover .search-btn::placeholder {
  color: rgba(119, 119, 119, 0.8);
}

效果图:
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Elasticsearch高级查询—— 查询所有文档

目录一、初始化文档数据二、查询所有文档示例一、初始化文档数据 在 Postman 中&#xff0c;向 ES 服务器发 POST 请求 &#xff1a;http://localhost:9200/user/_doc/1&#xff0c;请求体内容为&#xff1a; {"name":"张三","age":22,"sex…

Qt的开源库TabToolbar

开源地址&#xff1a;https://github.com/SeriousAlexej/TabToolbar 该库的使用方式有两种&#xff1a; 使用json配置文件配置TabToolBar使用代码构建TabToolBar 编译 项目是使用Qt和CMake管理的&#xff0c;并且在开发的时候使用的是Qt6&#xff0c;我实测通过更改CMake的…

设计模式——代理模式

文章目录引入案例提出问题解决思路遇到的困难代理模式概念生活中的代理相关术语静态代理动态代理织入的概念基于JDK的动态代理基于Cglib的动态代理JDK 和 CGLIB 的区别引入案例 计数器的接口 public interface Calculator {int add(int i, int j);int sub(int i, int j);int …

pandas案例——预处理部分地区数据

数据清洗的任务是过滤那些不符合要求的数据&#xff0c;将过滤的结果交给业务主管部门&#xff0c;确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。数据清洗是与问卷审核不同&#xff0c;录入后的数据…

使用反射和泛型简化Golang查询数据库代码的方案

大纲Postgresql数组案例常规写法定义结构体查询数据问题反射泛型写法结构体定义接口Tag实现逻辑泛型设计实例化模型结构体获取表名过滤字段组装SQL语句查询遍历读取结果实例化模型结构体组装Scan方法的参数调用Scan方法并保存结果完整代码小结Postgresql数组 Postgresql有个很…

7、操作DOM对象(重点)

核心&#xff1a;浏览器网页就是一个DOM树形结构 更新&#xff1a;更新该DOM节点的内容&#xff0c;相当于更新了该DOM节点表示的HTML的内容&#xff1b; 遍历&#xff1a;遍历该DOM节点下的子节点&#xff0c;以便进行进一步操作&#xff1b; 添加&#xff1a;在该DOM节点下…

Matlab中的dsp.AudioFileReader函数的认识和学习

在Matlab中的dsp.AudioFileReader函数的认识和学习1.描述2.语法2.1 语法描述2.2 属性Properties2.3 举例Stream from audio file 来自音频文件的流 1.描述 dsp.AudioFileReader系统对象™ 从音频文件读取音频样本。 要从音频文件读取音频样本&#xff0c;请执行以下操作&…

小方制药冲刺A股上市:毛利率走低,方之光、鲁爱萍夫妇为实控人

近日&#xff0c;上海小方制药股份有限公司&#xff08;下称“小方制药”&#xff09;公开预披露更新招股书&#xff0c;准备在上海证券交易所主板上市。据贝多财经了解&#xff0c;小方制药于2022年7月1日递交招股书&#xff0c;国信证券为其保荐机构。 本次冲刺上市&#xff…

扫码器:壹码通(EMT 6621)二维码带多个回车换行处理

摘要&#xff1a;二维码运用越来越广泛了&#xff0c;目前在医院中一个二维码可以串联多个系统&#xff0c;二维码的内容也可以设置一些特殊字符去达成系统便捷性。本次遇到为二维码中开头内置了回车和空格&#xff0c;在程序判断为回车(KEY_ENTER)时就会触发业务逻辑&#xff…

mybatis之一级缓存和二级缓存

缓存&#xff1a; 查询需要连接数据库&#xff0c;非常的耗费资源&#xff0c;将一次查询的结果&#xff0c;暂存在一个可以直接取到的地方&#xff0c;我们将其称之为缓存&#xff0c;当我们需要再次查询相同的数据时&#xff0c;直接走缓存这个过程&#xff0c;就不用走数据…

【RabbitMQ三】——RabbitMQ工作队列模式(Work Queues)

RabbitMQ工作队列模式为什么要有工作队列模式如何使用工作队列模式轮询消息确认验证消息确认消息持久化公平调度验证公平调度**现在将消费者1中的Thread.sleep(1000)改为Thread.sleep(3000);不添加公平调度相关代码进行测试。**现在将消费者1中的Thread.sleep(1000)改为Thread.…

BC即将登录Coinbase Institutional,2023年以全新姿态出发

以支付为最初定位的加密资产&#xff0c;在支付领域的发展始终停滞不前&#xff0c;尤其是在2022年&#xff0c;加密行业经历了几次“至暗时刻”&#xff0c;导致加密市场资金不断出逃市场全面转熊&#xff0c;越来越多的人对加密资产市场的发展前景失去信心。 而在2021年年底开…

【GD32F427开发板试用】移植CoreMark验证0等待区Flash大小

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;Doravmon 引言 非常荣幸能够参与到此次GD32F427开发板试用的活动中来&#xff0c;在拿到开发板之前就翻了翻手册&#xff0c;一直有个疑问困惑…

APM/STM32F072RB基于HAL库配置USB CDC虚拟串口功能

APM/STM32F072RB基于HAL库配置USB CDC虚拟串口功能&#x1f4e2;采用的自制开发板&#xff0c;开源PCB工程详情放在《极海APM32F072RB开发环境测试》✨本案例基于STM32CubeMX工具配置。&#x1f4fa;使用STM32CubeMX工具配置工程改为APMF072RB型号过程如下&#xff1a; ⛳注意…

性能测试实战 | 电商业务的性能测试(一): 必备基础知识

本文为霍格沃兹测试学院优秀学员课程学习系列笔记&#xff0c;想一起系统进阶的同学文末加群交流。 1.1 测试步骤总览 需求分析与测试设计&#xff08;性能需求目标业务模型拆解&#xff09; 测试数据准备和构造(基于模型的数据准备) 性能指标预期(性能需求目标) 发压工具配…

vue2 使用@vue/composition-api依赖包 编译、打包各种报错

vue2 使用vue/composition-api依赖包 编译、打包各种报错问题来源解决办法最近在维护以前&#xff08;大概一年前&#xff09;的项目时&#xff0c;遇到个这种问题&#xff1a; 项目本身是用 vue-cli 创建的 vue 2.x.xx 版本的项目&#xff0c;然后引入 vue/composition-api 依…

MIT6.830-2022-lab5实验思路详细讲解

文章目录前言一、实验背景二、实验正文Exercise 1 &#xff1a;SearchExercise 2 &#xff1a;Insert - Splitting PagesExercise 3 &#xff1a;Delete - Redistributing pagesExercise 4&#xff1a;Delete - Redistributing pages总结前言 Datebase中很重要的一部分就是ind…

【Java面试】SpringBoot篇

注&#xff1a;本文通篇将SpringBoot以sb代替。 文章目录Spring和SpringBoot的关系和区别&#xff1f;谈谈你对SpringBoot的理解&#xff0c;它有哪些特性&#xff1f;SpringBoot的核心注解说说你对SpringBoot自动配置的理解为什么SpringBoot的jar包可以直接运行&#xff1f;Sp…

uboot启动流程分析(基于i.m6ull)

一、uboot的makefile 1.1 makefile整体解析过程 为了生成u-boot.bin这个文件&#xff0c;首先要生成构成u-boot.bin的各个库文件、目标文件。为了各个库文件、目标文件就必须进入各个子目录执行其中的Makefile。由此&#xff0c;确定了整个编译的命令和顺序。 1.2 makefile整…

10.2 初始泛型算法

文章目录只读算法find()count()accumulate()equal()写容器元素算法fill()fill_n()back_inserter()copy()copy_backward()replace()replace_copy()next_permutation()prev_permutation()重排容器元素算法sort()unique()stable_sort()除了少数例外&#xff0c;标准库算法都对一个…