刚吃了一份宫保鸡丁刀削面,幸福感满满,写篇博客消耗一下热量。

今天工作遇到的一个问题是在input输入框中加入图标,当输入内容后,图标和提示语一起隐藏,类似于placeholder的功能。如淘宝页面,效果如下:

刚开始我以为是使用了placeholder,想了半天也不知道怎么把图标引入placeholder里面去,索兴打开淘宝页面,按下键盘上F12,跟随我一起来探索淘宝前端工程师不为人知的秘密吧,吼吼。

当然,我们不需要做的那么复杂,只要实现最基础的功能即可。我发现placeholder只是个假象,大神们用的label标签显示提示语,交互效果应该是用js实现的,步骤如下:

1. HTML代码:

<div class="box">
<label for="q" id="q_label">请输入关键字</label>
<input id="q" type="text">
<i class="am-icon-search search" id="q_i"></i>
</div>

其实结构非常简单,最外层放一个div盒子,里面放三个元素:一个label,一个input,一个i标签。使用for属性将label与input绑定,label用来显示字符串,i标签引入图标,input干好本职工作就行了——提供输入框。我这里是用的amazeUI框架的图标,所以用i标签引入,如果你直接使用图片,用img当然也没有问题。

好了,结构搭好了,下面就是css大显身手的时候了。

2. CSS代码 :

/**
*放置input的div盒子
*1.此处应我的项目需要,加了些特别的设置,如字体、背景色等,按需添加;
*2.内层input不加边框,看起来效果会自然一点,所以外层div设置了边框和圆角
*/
.box{
background-color: #ffffff;
border: 1px solid #eeeeee;
border-radius: 6px;
font-size: 14px;
text-align: center;
} /**
*label标签样式 放在.box下,不至于影响其他的label
*采取绝对定位,位置根据需求确定
*/
.box label{
z-index:;
position: absolute;
left: 50%;
margin-left: -8%;
color: #B2B2B2;
top: 4.8rem;
font-weight: normal;
} /**
*input标签样式
*宽度适应外层div
*隐藏边框
*这里有个小技巧,height与line-height值相等,可保证文字垂直居中;但我发现文字比图标略偏下,进行了微调;
*/
.box input{
text-indent: 10px;
height: 1.8rem;
line-height: 1.9rem;
width: 100%;
border: none;
outline: none;
} /**
*图标样式
*绝对定位,自定义颜色
*/
.box i{
position: absolute;
top: 4.8rem;
left: 50%;
margin-left: -15%;
color: #B2B2B2;
}

做好这些,效果就已经能粗来了,看图说话

至此,功能实现。既然已经写到这里了,顺便把js语句一并呈上吧。

3. JS代码:

/**
* Created by lixj on 2015/8/14.
* js判断input输入框中是否有值,以此来判断是否隐藏默认提示信息
* 使用keyup事件
*/
$(function() {
$('#q').on('keyup',function() {
var len = document.getElementById('q').value;
if(len == ''){
$('#q_label').show();
$('#q_i').show();
}else{
$('#q_label').hide();
$('#q_i').hide();
}
});
})

欧啦!周末愉快!!下班回家!!!

input中加入搜索图标的更多相关文章

  1. bootstrap中如何使input中的小图标获得点击事件

    bootstrap中,放入input中的小图标是不能点击的. 在表单中经常遇见密码旁边的眼睛图标点击后,可使密码可见. 要使小图标获得点击事件,可在小图标上覆盖一个跟小图标一样大的透明层,然后给透明层 ...

  2. html中如何修改选中 用input做的搜索框 的边框颜色

    html中如何修改选中 用input做的搜索框 的边框颜色 如图,当我鼠标选中输入框时,内边框会变成蓝色 我的问题是: 1.如何把蓝色去掉? 2.如何改成别的颜色? 首先感谢 UI设计师提出的需求,解 ...

  3. SAP CRM 在Web UI中创建搜索帮助

    多数情况下,在Web UI为一个特定的字段提供搜索帮助需要在事务SE11中创建搜索帮助. (注:也可以通过在SE24中创建一个类并实现实现IF_BSP_WD_CUSTOM_F4_CALLBACK接口来 ...

  4. 详细解读Android中的搜索框—— SearchView

    以前总是自己写的 今天看看别人做的 本篇讲的是如何用searchView实现搜索框,其实原理和之前的没啥差别,也算是个复习吧. 一.Manifest.xml 这里我用一个activity进行信息的输入 ...

  5. JS 捕获 input 中 键盘按键

    JS 捕获 input 中 键盘按键 的相应处理事件是很简单的,google搜索一下很容易找到处理方式,请看如下一种简单的处理方式: HTML代码: <div> <input typ ...

  6. 在 Angular 中实现搜索关键字高亮

    在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...

  7. iOS开发中使用文字图标iconfont

    在iOS的开发中,各种图标的使用是不可避免的,如果把全部图标做成图片放在项目中,那么随着项目的逐渐庞大起来,图片所占的地方就会越来越大,安装包也就随之变大了,如果图标需要根据不同的场景改变使用不同的颜 ...

  8. 小程序中使用阿里图标库iconfont

    小程序中使用阿里图标库iconfont 项目中常常需要使用到字体图标,微信小程序中使用字体图标与在平常的web前端中类似但是又有区别.下面以使用阿里图标为例子讲解如何在微信小程序中使用字体图标. 第一 ...

  9. ABAP 中的搜索帮助

    ABAP 中的搜索帮助 https://blog.csdn.net/u011576750/article/details/50999078 一.简介:在abap中,用到的搜索帮助个人遇到的情况如下,进 ...

随机推荐

  1. a标签

    a链接是一种触发行为元素,行内元素 属性:href/target/class/id/title href: <a href="www.baidu.com"></a ...

  2. Java InMemoryCache

    package pay.infrastructure.helper; import org.apache.commons.collections.MapIterator; import org.apa ...

  3. java获取日期 昨天 今天 明天的日期

    Date date=new Date();//取时间 Calendar calendar = new GregorianCalendar(); calendar.setTime(date); cale ...

  4. 移动混合开发之android文件管理新建文件和删除文件

    今天经过一天超过8小时的实践,有很多CSS上的细节需要注意: 1, /*注意是对before的操作*/ .content ul li .icon-check-empty:before{ display ...

  5. 《嫌疑人X的献身》书评

    <嫌疑人X的献身>是日本著名推理小说作家东野圭吾的代表作之一.1985年东野圭吾以一本<放学后>出道,出道初期善于写精巧细致的本格推理,后期文笔愈发老辣.简练.2005年东野圭 ...

  6. 搭建Android开发环境简要步骤

    (一)安装JDK JDK下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 在Linux终端输入如下命令,设 ...

  7. Android深度探索--HAL与驱动开发----第二章读书笔记

    1. 底层开发工具包括: JDk6或者以上版本:Eclipse3.4或以上版本:ADT(用于开发Android应用程序),CDT(用于开发AndroidNDK程序):Android SDK:Andro ...

  8. iOS中block的用法 以及和函数用法的区别

    ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候  MyBlock(); 带参数的 ...

  9. django文件批量上传-简写版

    模板中创建表单 <form method='post' enctype='multipart/form-data' action='/upload/'> <input type='f ...

  10. NueGet设置package Source

    package Source为:http://packages.nuget.org/v1/FeedService.svc/ 最新的地址(2015-4-10):https://www.nuget.org ...