基于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 相关文章推荐
js+xml生成级联下拉框代码
Jul 24 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
Jan 07 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
JS区分Object与Aarry的六种方法总结
Feb 27 Javascript
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
Sep 08 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
Jan 18 Javascript
我所理解的JavaScript中的this指向
Sep 04 Javascript
一文帮你理解PReact10.5.13源码
Apr 03 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面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
JS实现简单打字测试
2020/06/24 Javascript
Django中对数据查询结果进行排序的方法
2015/07/17 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
Python reduce函数作用及实例解析
2020/05/08 Python
python 下载文件的多种方法汇总
2020/11/17 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
土木工程师岗位职责
2013/11/24 职场文书
建材业务员岗位职责
2013/12/08 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
公司年终奖分配方案
2014/06/16 职场文书
实验室的标语
2014/06/20 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang
vue自定义右键菜单之全局实现
2022/04/09 Vue.js