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

本文介绍了一种改进的搜索框设计方法,通过利用CSS样式和JavaScript,实现了提示文字与输入框效果的分离,解决了多种常见问题,如提示文字样式更改、界面更新时的代码修改效率低下及多个搜索框共存时的一致性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本文关键字:搜索框 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在此下载:

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

转载请说明出处.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值