改善交互体验-巧用底图+JS做搜索框动态效果

    本文关键字:搜索框 js改变文字 代码与效果分离

    做前台的亲们也许经常用到这个东西,即使您不是做前台的同学,想必在浏览网页的时候也经常碰到某些网站有诸如此类的搜索框.

我们点击它,提示性文字消失,如图然后离开它,文字再现.或者当我们没有输入任何内容的时候,依然返回提示性文字.

    诸如此类的需求,可以说已经非常古老,网上案例也是一搜一大堆.但尽管如此,我们也能从中发现,这些所谓的实现可谓非常简单,就是利用JS判断输入框然后决定是否将文字替换.

例如:

<script>
$("#tbxKeyword").focus(function(){
     if($("#tbxKeyword").val() == "请输入关键字"){

      $("#tbxKeyword").val("");

    }
});

$("#tbxKeyword").blur(function(){
    if($("#tbxKeyword").val() == ""){

      $("#tbxKeyword").val("请输入关键字");

    }
});
</script>

    这确实能直观地解决基本的问题,但更多的问题有待解决:

    1.当提示性文字要求更换颜色,或者干脆用艺术字体,区别于客户输入的文字样式.

    2.某次变更界面时,需要将文字改变内容,例如换成"请输入您的关键字",而作为美工而言,对编译好的JS没有任何操作权限.即便可以更改,因为界面少量内容的改动,牵扯到JS的修改也是非常费时费力.

    3.您的网站有不止一个这样的搜索框,它们的内容大致有"请输入关键字","关键字","搜索内容"......如果再去更改JS,将非常可能导致出错.

我也是曾经深陷这个怪圈很久,某一天突然看到这个不起眼的放大镜底图,让我眼前顿时一亮,能否将这个底图发扬一下光辉,也好让页面JS程序和界面彻底分离一下?

css样式中有关backgroud-position的章节对此UI们应该不会陌生.我的思路是放大镜图片稍微扩大一下,然后根据用户行为去改变它的position就可以了.

更改之后的放大镜底图如下:

从此它有两种状态了,在JS中根据用户行为去改变它的position.

主要代码如下:

<script type="text/javascript">
function chkCss(){	
	$("input[rel='search']").each(function(){
											  setCss($(this));
											  $(this).focus(function(){
											      clearCss($(this));
											  });
											  $(this).blur(function(){
											      setCss($(this));
											  });
	});	
}
 
function setCss(obj){
			if(obj.val() != "")	clearCss(obj);
			else fillCss(obj);
} 
function clearCss(obj){
		obj.css("background-position","0px -35px");
}
function fillCss(obj){
		obj.css("background-position","0px -5px");
}
setTimeout(function(){chkCss();},100);
</script>

    用了这样的方式之后,以上的诸多问题都能很好地解决.

    1.我们可以让美工尽情更改底图中文字的颜色.内容.更改时直观,独立,绝不影响其它的内容.

    2.我们可以把所有搜索框的提示性内容全部放在一张图中,然后为不同的搜索框定制不同的样式效果.

    3.下次更改时,不用到处去找文字.也不用害怕会出错,因为图片又不大,一眼就知道该动哪里.前提是美工要有基本的像素概念,如果认为一两个像素不对齐也不要紧的那种人,我建议还是不能承担这种重任.

....其它的更多妙用,只有用过的人才知道!

当然,本示例中用到了jquery组件,您可根据需求进行取舍.另外说明:代码中最后一行是为了保证某些浏览器的搜索记忆功能.

完整Demo在此下载:

 https://files.cnblogs.com/CoreCaiNiao/searchDemo.rar

转载请说明出处.

 http://www.cnblogs.com/CoreCaiNiao/archive/2013/02/17/2914285.html

 

posted @ 2013-02-17 14:44  活跃的毛虫  阅读(5557)  评论(6编辑  收藏  举报