js实现搜索栏效果
作者:心所向在脚下 发布时间:2024-07-10 15:16:52
小编这边主要是介绍一个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();
} //这样就更便捷用户的删除操作
常见的(点击后全选):
同时这边应用到了文本框同样也提及一下:
获取文本框中内容:以value属性获取
获取标签中内容:innerHTML属性获取
搜索栏在实战中运用还是很多的,这边主要是对于焦点问题的一个介绍,当然获取焦点方法不止这单单一种,之后小编会补充。
当然的我们在站中看到的搜索框有更完善的
我们看一下京东的搜索框,这边只是举例那么现在很多都是用到这样的搜索框,获取焦点以后框内文字还是有显示但你一输入内容他就消失了。那么怎样实现这样的搜索框呢?
首先我们明确一点,类似这样的搜索框显示的文字并非是文本框的value值
话不多说撸上代码(以小编做的那个简单的导航框实现):
首先div中我们加上了label标签,也就是我们点击后看到的文字
然后给他加上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>
效果图如下,若输入则浅文字消失
当然小编这个案例考虑到了一些兼容性问题,如果是在IE9后的浏览器用H5有的方法直接给文本框加上一个属性就可以实现这样的效果。
来源:https://blog.csdn.net/qq_40833779/article/details/83990706


猜你喜欢
- 事务在数据库中有时候需要把多个步骤的指令当作一个整体来运行,这个整体要么全部成功,要么全部失败,这就需要用到事务。1、 事务的特点事务有若干
- 使用命令行搭建单页面应用我们来看一下最后完成的效果:大纲1. 下载 node, git, npm2. 使用命令行安装一个项目一、 下载工具n
- 发现一个很简单的配置方法,一直想写的没写上,今天抽空就把它给补充完整好了。本文的配置方法Windows,Mac和Linux系统均适合。一.安
- Python求解微分方程(数值解法)对于一些微分方程来说,数值解法对于求解具有很好的帮助,因为难以求得其原方程。比如方程:但是我们知道了它的
- 将有安全问题的SQL过程删除.比较全面.一切为了安全!删除了调用shell,注册表,COM组件的破坏权限MS SQL SERVER2000使
- 1. settings.py文件做开发离不开必定离不开日志, 以下是我在工作中写Django项目常用的logging配置.# 日志配置BAS
- 最近写程序需要从文件中读取数据,并把读取的数据转换成向量。查阅资料之后找到了读取csv文件和txt文件两种方式,下面结合自己的实验过程,做简
- 在这个教材中,我们假定你已经安装了Scrapy。假如你没有安装,你可以参考这个安装指南。我们将会用开放目录项目(dmoz)作为我
- 本文实例讲述了python生成器/yield协程/gevent写简单的图片下载器功能。分享给大家供大家参考,具体如下:1、生成器:'
- having的用法having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和havi
- 购物车程序要求如下图代码# --*--coding:utf-8--*--# Author: 村雨import pprintproductLi
- 锟拷码和口字码说到乱码问题就不得不提到锟斤拷,这算是非常常见的一种乱码形式,那么它到底是经过何种错误操作产生的呢?下面我们一步步探究。看一个
- 利用over(),将统计信息计算出来,然后直接筛选结果集declare @t table(ProductID int,ProductName
- 前言对于HTTP请求,我们要在脑子里有一个根深蒂固的概念,那就是任何客户端传过来的数据都是不可信任的。那么开发接口的时候需要对客户端传提交的
- CMD命令cmd是command的缩写.即命令提示符(CMD),是在OS / 2 , Windows CE与Windows NT平台为基础的
- 进程互斥锁多进程同时抢购余票# 并发运行,效率高,但竞争写同一文件,数据写入错乱# data.json文件内容为 {"ticket
- 重载:同一个类中,函数名一样,返回值或者参数类型,个数不一样的叫做重载。 覆盖:同名函数,同返回值类型,同参数的叫做覆盖。指的是子类对父类中
- Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。分页一般和表格一起用,分页链接作为表格的一部分,将分页链
- 先给大家说下什么是localstorage前几天在老项目中发现有对cookie的操作觉得很奇怪,咨询下来是要缓存一些信息,以避免在URL上面
-   这篇博客讲的是SQL server的分页方法,用的SQL server 2012版本。下面都用pag