js实现搜索栏效果


Posted in Javascript onNovember 16, 2018

小编这边主要是介绍一个js中搜索栏的实现(没有提交数据那些),重点在于对焦点问题的理解。

那么这边小编就是要实现这样的一个搜索框

js实现搜索栏效果

对焦点的理解:

通俗来讲当我们鼠标单击一个盒子时光标停留在该盒子事件上实现用户与栏之间的交互,这样就表明该盒子获取了焦点,以案例来说我们平常搜索栏点击可以输入文字,这个时候该搜索栏就获得了焦点。

同理失去焦点也是同样当点击页面其余位置时失去对先前盒子可以进行的操作。

那么直接以小编这个案例来说代码如下:

CSS部分:

<style> 
 *{
  margin: 0;
  padding: 0;
 }
 input,button{
  border: 0 none;
  padding: 0;
  outline-style: none;
 }
 .search{
  margin: 100px auto;
  width: 258px;
  height: 40px;
  overflow: hidden;
 }
 .search input{
  float: left;
  width: 208px;
  height: 40px;
  background: url("left.jpg") no-repeat;
 
  padding-left:8px;
  color: #ccc;
 }
 .search button{
  float: left;
  height: 40px;
  width: 42px;
  background: url("right.jpg") no-repeat;
  cursor: pointer;
 } 
</style>
 
<body>
<div class="search">
 <input type="text" value="请输入..." id="txt"> //盒子架构div中一个文本框一个按钮
 <button id="btn"></button>
</div>
 
</body>

js部分:

<script>
  window.onload=function () {
   function $id(id) {
    return document.getElementById(id);
   } //虽然该案例中这种获取id方式比较麻烦但这是通常的一种方法避免一直去写获取
   $id("txt").onfocus=function () {
    if (this.value=="请输入..."){
     this.value=""; //这边是赋值别搞错了
     this.style.color="#333"; //黑色
    }
   } //当用户点击时初始文字消失
   $id("txt").onblur=function () {
    if (this.value==""){
     this.value="请输入..."
     this.style.color="#ccc"; //透明灰
    } //谁调用this指向谁
   }//当为空时用户点击其他地方显示初始化状态
  $id("btn").onclick=function () {
   alert("我可以点击");
  } //这边只是试验一下按钮功能还在不在
  }
 </script>

这边另外介绍一些关于搜索栏实用方法:

1.进入页面时搜索栏已经自动获取了焦点

那么在js之中我们只需要将对象加上  对象.focus();

方法就可以实现进入页面时光标已经显示在添加该方法的对象上。

2.鼠标进过(或点击搜索框)搜索栏搜索栏内容被全选(该方法方便用户输入后鼠标经过可以直接删除搜索栏所有,当不想删除所有时用户可以点击在进行一个一个删除操作)

对象.事件=function(){

    this.select();

}  //这样就更便捷用户的删除操作

常见的(点击后全选):

js实现搜索栏效果

同时这边应用到了文本框同样也提及一下:

获取文本框中内容:以value属性获取

获取标签中内容:innerHTML属性获取

搜索栏在实战中运用还是很多的,这边主要是对于焦点问题的一个介绍,当然获取焦点方法不止这单单一种,之后小编会补充。     

当然的我们在站中看到的搜索框有更完善的

js实现搜索栏效果

我们看一下京东的搜索框,这边只是举例那么现在很多都是用到这样的搜索框,获取焦点以后框内文字还是有显示但你一输入内容他就消失了。那么怎样实现这样的搜索框呢?

首先我们明确一点,类似这样的搜索框显示的文字并非是文本框的value值

话不多说撸上代码(以小编做的那个简单的导航框实现):

首先div中我们加上了label标签,也就是我们点击后看到的文字

js实现搜索栏效果

然后给他加上CSS属性(注意label标签只能以定位的方式定位到文本框中):

.search label {
  font-size: 12px;
  color:#ccc;
  position: absolute; /*以绝对定位来定位label到文本框合适位置当然同时也要为父亲div盒子加上相对定位*/
  top:12px;
  left:12px;
  cursor: text; /*使鼠标放到lable文字上时还是光标*/
 }

那么这样的话js部分有很大差异:

<script>
  window.onload=function () {
   function $id(id) {
    return document.getElementById(id);
   }
   $id("txt").oninput=function () { //判断用户输入栏是否为空来使得label是否消失
 
    if (this.value==""){
     $id("lab").style.display="block";
    }
    else {
     $id("lab").style.display="none";
    }
   }
 
  }
 </script>

效果图如下,若输入则浅文字消失

js实现搜索栏效果

当然小编这个案例考虑到了一些兼容性问题,如果是在IE9后的浏览器用H5有的方法直接给文本框加上一个属性就可以实现这样的效果。

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

Javascript 相关文章推荐
Javascript对象属性方法汇总
Nov 21 Javascript
JavaScript中document对象使用详解
Jan 06 Javascript
判断访客终端类型集锦
Jun 05 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
Jun 02 Javascript
jquery输入数字随机抽奖特效的简单实现代码
Jun 10 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 Javascript
jQuery实现 RadioButton做必选校验功能
Jun 15 jQuery
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
详解Puppeteer 入门教程
May 09 Javascript
vue基于element的区间选择组件
Sep 07 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
Sep 28 Javascript
JavaScript实现简单音乐播放器
Apr 17 #Javascript
Vue 全家桶实现移动端酷狗音乐功能
Nov 16 #Javascript
微信小程序自定义toast的实现代码
Nov 16 #Javascript
vue实现简单的星级评分组件源码
Nov 16 #Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
Nov 16 #Javascript
layui-laydate时间日历控件使用方法详解
Nov 15 #Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 #Javascript
You might like
php输出图像的方法实例分析
2017/02/16 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
Python的函数的一些高阶特性
2015/04/27 Python
简述Python中的进程、线程、协程
2016/03/18 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
Python检测数据类型的方法总结
2019/05/20 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
商务日语毕业生自荐信
2013/11/23 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
骨干教师培训制度
2014/01/13 职场文书
宣传活动总结范文
2014/07/01 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
导游词之太行山青龙峡
2020/01/14 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js