基于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 相关文章推荐
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
Jan 27 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 Javascript
JavaScript 32位整型无符号操作示例
Dec 08 Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
jquery validation验证表单插件
Jan 07 Javascript
js获取元素下的第一级子元素的方法(推荐)
Mar 05 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
第一个Vue插件从封装到发布
Nov 22 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
May 30 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
重置版战役片段
2020/04/09 魔兽争霸
php5.3 goto函数介绍和示例
2014/03/21 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
详解python3实现的web端json通信协议
2016/12/29 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
用 Python 制作地球仪的方法
2020/04/24 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
小露珠教学反思
2014/04/30 职场文书
六一儿童节标语
2014/10/08 职场文书
公司考勤管理制度
2015/08/04 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
R9700摩机记
2022/04/05 无线电
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python