H5手机搜索框的简单实现

本文系原创,转载请注明出处:
https://blog.csdn.net/chengbao315/article/details/105549541

几乎所有的移动应用都有搜索功能,那么本文的目标就是实现这样的搜索框样式:在这里插入图片描述
当文本框内输入文本时,提示语隐藏,同时显示清空文本按钮;当没有输入时显示提示语,同时隐藏清空按钮。

一. HTML input 标签 placeholder属性

Placeholder属性具有显示提示语的性质,这样只需要处理搜索图标和删除文本按钮的显示即可。先用一个div 块作为搜索框外框,同时添加两个i标签,一个用于显示搜索图标,一个用于显示删除按钮,之后添加文本框作为搜索框,隐藏文本框外边框。

  • Html代码
<div class="search"> 
      <i class="glyphicon glyphicon-search icon"></i>
      <i class="glyphicon del"></i>
      <div>
        <input type="text" placeholder="请输入搜索商品" >
      </div>
   </div>

页面的结构非常简单,需要注意的是这里引入了bootstrap.min.css,因为bootstrap的字体图标很容易实现图标的显示,使用时只需要添类“glyphicon glyphicon-search”即可。

  • Css代码
.search{
 position: relative;
    color: gray;
    border: 1px solid gray;
    border-radius: 4px;
    height: 24px;
    width: 90%;
    margin: 10px auto;       
    overflow: hidden;
  }

  .search div{
   margin-left:30px;
   margin-right:30px;
  }

  input{
    margin-top: 1px;
    width: 100%;
    outline: none;
    border: none;
  }

  .icon{
    display: block;
    position: absolute;
    top: 5px;
    left: 10px;
    width: 20px;
    color: currentcolor;
    float: left;
  }

  .del{
    display: block;
    position: absolute;
    top: 5px;
    right: 10px;
    color: currentcolor;
    float: right;
  }

CSS代码主要就是处理搜索框的样式和布局,这里有两个注意的地方:

  • 隐藏input外框: outline: none; border: none;
  • 搜索文本框的宽度自适应

这里展开来讲一下文本框的自适应的原理,本文中搜索图标、清除图标各占据了固定的宽度尺寸,而中间的文本框时需要根据不同的手机宽度进行自适应的,这个需求首先让我想到的是宽度百分比,尝试了一下根本行不通,因为图标的宽度会随着手机宽度的增大而增大,并不是我想要的效果。那怎么办呢?这里我采用的是float左右浮动,配合margin左右固定距离的方式实现的。
两个图标的固定宽度是30px,分别使用左右浮动处理,中间的 input 标签放在一个div盒子里,距离左右距离为30px,以上就实现了想要的效果。
有的时候,我们需要的搜索框是下面这样的,右边距离固定,左边区域自适应宽度:

这样的效果怎么实现呢?原理跟本文的一样,让取消文本向右浮动,左侧盒子距离右侧固定距离即可。

二.交互

实现了样式,接下来就要实现与用户的交互。

1.文本输入显示清除按钮
Input标签的oninput事件可以实现输入文本时触发事件,不需要失去焦点,input还有一个onchange事件,这个事件需要失去焦点才能触发。这里使用了oninput事件,但是需要注意从脚本中修改值不会触发事件。

JavaScript代码:

function getValue(){   
    var text = document.getElementById("q").value;
    if(text!=""){
      document.getElementsByClassName("del")[0].setAttribute("class","glyphicon glyphicon-remove-circle del");
    }
    else{
      document.getElementsByClassName("del")[0].setAttribute("class","glyphicon del");
    }
  }

在html代码中给input标签添加事件,触发getValue方法,在方法中获取文本值,判断文本值不为空,给i标签添加类glyphicon-remove-circle,即可显示清除按钮。

2.清除操作
给i标签添加click事件,触发delValue方法,在方法中进行清除input文本操作。注意清除后将按钮设置为不可见,因为脚本修改文本不能触发input标签的oninput事件。

JavaScript代码:

function delValue(){
    document.getElementById("q").value = "";
    document.getElementsByClassName("del")[0].setAttribute("class","glyphicon del");
  }

以上就是搜索框的样式实现,最后注意一点,移动端开发需要在 head标签中以下配置,以适应移动端设备的显示:
<metaname=“viewport” content=“width=device-width”>

3.移动端搜索类型
移动端的搜索文本框,手机输入法通常都会有一个搜索按钮,如下图所示:

这个是怎么实现的?其实很简单,这是H5新增的属性,将 input 的 type 属性设置为 “search” 即可实现。
点击搜索按钮后,前端需要进行相应的搜索操作,这里是通过监听键盘输入事件实现的,代码如下:

var search = document.getElementById('q');
search.onkeypress = function(e){
    if(e.keyCode === 13){
      alert('正在执行搜索操作');
          }
  }

搜索键的键值是13,判断键盘输入键值为13时即进行搜索操作。

如果本文有帮到你,记得加关注哦
源码地址:https://download.csdn.net/download/chengbao315/12330331
————————————————
版权声明:本文为CSDN博主「愤斗的程序猿」的原创文章,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chengbao315/article/details/105549541

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip 基于联邦学习和深度残差网络实现的网络入侵检测python源码+实验说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值