基于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 相关文章推荐
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
Sep 11 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
Jquery Easyui日历组件Calender使用详解(23)
Dec 18 Javascript
深入浅出理解JavaScript闭包的功能与用法
Aug 01 Javascript
JavaScript canvas绘制折线图
Feb 18 Javascript
vue中的循环对象属性和属性值用法
Sep 04 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
Sep 21 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
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
dojo随手记 gird组件引用
2011/02/24 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
JavaScript手机振动API
2016/06/11 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
webpack打包js的方法
2018/03/12 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
python获取本地计算机名字的方法
2015/04/29 Python
Python循环语句之break与continue的用法
2015/10/14 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
python之super的使用小结
2018/08/13 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
python实现文件的备份流程详解
2019/06/18 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
Python socket 套接字实现通信详解
2019/08/27 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
Python几种常见算法汇总
2020/06/02 Python
python和php哪个容易学
2020/06/19 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
家长学校工作方案
2014/05/07 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript