基于JavaScript实现百度搜索框效果


Posted in Javascript onJune 28, 2020

本文实例为大家分享了js实现百度搜索框展示效果的具体代码,供大家参考,具体内容如下

具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <style>
 *{
  margin:0;
  padding:0;
  font-size:14px;
 }
 input{
  display:block;
  outline:none;
 }
 a{
  display:block;
  text-decoration: none;
  color:#000;
 }
 a:hover,a:active,a:target{
  text-decoration: none;
  color:#000;
 }
 ul,li{

  list-style:none;
 }
 .box{
  position:absolute;
  top:20px;
  left:50%;
  margin-left:-250px;
  width:500px;
 }
 .box input{
  width:300px;
  height:35px;
  padding:0 10px;
  border:1px solid #008000;
 }
 .box ul{
  display:none;
  position:relative;
  top:-1px;
  border:1px solid #008000;
 }
 .box ul li,.box ul li a{
  height:35px;
  line-height:35px;
  
 }
 .box ul li a{
  padding:0 10px;
 }
 .box ul li a:hover{
  background:#ccc;
 }
 </style>
</head>
<body>
 <div class='box'>
 <input type="text" id='searchInp'>
 <ul id='searchList'>
  <li><a href="javascript:;">111111111111</a></li>
  <li><a href="javascript:;">2222222222</a></li>
  <li><a href="javascript:;">33333333333</a></li>
  <li><a href="javascript:;">444444444444</a></li>
  <li><a href="javascript:;">5555555555555</a></li>
 </ul>
 </div>


 <script>
 //显示
 /*
  1、文本框获取焦点,并且文本框中有内容的时候
  2、在文本框中操作内容(新输入/删除),如果内容没有清空,我们就显示,否则就隐藏

 */
 //隐藏
 /*
  1、点击页面中其余的位置(除了点击文本框和searchList里面的每一行)都隐藏;
  2、点击searchList中的列表隐藏,但是还要把列表中的内容放到文本框中
 */
 //不管是获取焦点onfocus,还是在里面编辑内容onkeyup,都是有内容显示,没内容隐藏
 var searchInp = document.getElementById('searchInp'),searchList = document.getElementById('searchList');
 searchInp.onkeyup = searchInp.onfocus = function(){
  var val = this.value.replace(/(^ +| +$)/g,'')//获取文本框中的内容,并且去除它的首尾空格
  searchList.style.display = val.length > 0 ? "block" : "none";
 }

 document.body.onclick = function(e){
  e = e || window.event;
  e.target = e.target || e.srcElement;

  //如果事件源是#searchList下的a标签,我们让searchList隐藏,并且把当前点击这个a中的内容放在文本框中
  if(e.target.tagName.toLowerCase()==="a" && e.target.parentNode.parentNode.id==="searchList"){
  searchList.style.display = "none";
  searchInp.value = e.target.innerHTML;
  return;
  }
  //如果事件源是文本框还需要单独的处理
  // if(e.target.id === "searchInp"){
  // return;
  // }
  searchList.style.display = "none";
 }

 //我们可以阻止一个容器中某些特殊性的元素,让其不在委托的范围内:我们只需要把这些不需要委托的阻止冒泡传播即可
 searchInp.onclick = function(e){
  e = e || window.event;
  e.stopPropagation ? e.stopPropagation() : e.cancelBubble = "true";
 }
 </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
用js做一个小游戏平台 (一)
Dec 29 Javascript
JS构建页面的DOM节点结构的实现代码
Dec 09 Javascript
Jquery倒数计时按钮setTimeout的实例代码
Jul 04 Javascript
table对象中的insertRow与deleteRow使用示例
Jan 26 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
Jun 21 Javascript
AngularJS基础 ng-init 指令简单示例
Aug 02 Javascript
DOM中事件处理概览与原理的全面解析
Aug 16 Javascript
Windows下Node.js安装及环境配置方法
Sep 18 Javascript
JS监听事件的叠加和移除功能
Nov 19 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
May 07 Javascript
深入理解基于vue-cli的vuex配置
Jul 24 #Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 #Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 #Javascript
关于vue-resource报错450的解决方案
Jul 24 #Javascript
JavaScript中的FileReader图片预览上传功能实现代码
Jul 24 #Javascript
react-router4 嵌套路由的使用方法
Jul 24 #Javascript
关于react-router的几种配置方式详解
Jul 24 #Javascript
You might like
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
javascript 写类方式之二
2009/07/05 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
如何将python中的List转化成dictionary
2016/08/15 Python
对Python实现累加函数的方法详解
2019/01/23 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
自荐信如何“自荐”
2013/10/24 职场文书
三八节主持词
2014/03/17 职场文书
合伙协议书
2014/04/23 职场文书
业务内勤岗位职责
2014/04/30 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
工会文体活动总结
2015/05/07 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
一条 SQL 语句执行过程
2022/03/17 MySQL