广

JavaScript

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    jQuery+CSS拖动滑块选取价格范围

    2018-04-06 10:41:44 次阅读 稿源:互联网
    零七广告

    在一些产品报价网站上,需要给出一系列价格范围供用户筛选,我们在筛选的范围之外再加一个自定义价格范围,这样为用户多提供了一种选择方式。本文将使用jQuery插件结合CSS实现使用滑块滑动的方式选择价格范围,请看本文讲解。

    jQuery ui 有个slider插件,就是一个非常好使的拖动滑块插件。要想实现滑块拖动,需要在页面head间先载入如下js。

    1. <script type="text/javascript" src="js/jquery.js"></script> 
    2. <script type="text/javascript" src="js/ui/jquery.ui.core.js"></script> 
    3. <script type="text/javascript" src="js/ui/jquery.ui.widget.js"></script> 
    4. <script type="text/javascript" src="js/ui/jquery.ui.mouse.js"></script> 
    5. <script type="text/javascript" src="js/ui/jquery.ui.slider.js"></script> 

    当然,如果考虑项目运行效率,你可以将上述几个js压缩成一个js,我们在大型WEB应用项目中就要考虑这些。

    你可以到jquery ui 官网下载这些相关js,

    接着,我们构建主要html代码:

    1. <ul class="price_list"> 
    2.     <li class="title">价格范围:</li> 
    3.     <li><a href="#">3000元以下</a></li> 
    4.     <li><a href="#">3000-4000元</a></li> 
    5.     <li><a href="#">4000-5000元</a></li> 
    6.     <li><a href="#">5000-6000元</a></li> 
    7.     <li><a href="#">6000-7000元</a></li> 
    8.     <li><a href="#">7000-8000元</a></li> 
    9.     <li><a href="#">8000-9000元</a></li> 
    10.     <li><a href="#">9000-10000元</a></li> 
    11.     <li><a href="#">10000元以上</a></li> 
    12.     <li id="custom"><a href="javascript:;" id="show">自定义</a> 
    13.        <div id="slider_wrap"> 
    14.           <div id="slider"> 
    15.               <div id="range"></div> 
    16.           </div> 
    17.           <p><input type="text" class="input" id="start" value="0"  /> -  
    18.           <input type="text" class="input" id="end" value="3000" />  
    19.           <input type="button" class="btn" id="btn_ok" value="确 定" /></p> 
    20.        </div> 
    21.     </li> 
    22. </ul> 

    价格范围由一系列li组成,其中最后一个li,我们给它一个设置id为custom,并且在其中包含需要展示滑块选择的div#slider_wrap,当然默认情况下该div是隐藏的。我们需要用CSS来实现外观效果。

    CSS

    通过CSS,使页面有一个好看的外观:

    1. .price_list{list-style:none
    2. .price_list li{float:leftline-height:22pxmargin-right:10pxpadding:2px 6px
    3. .price_list li.title{display:blockwidth:60pxheight:60px;} 
    4. #custom{border:1px solid #d3d3d3padding:0 16px 0 2pxbackground:url(images/icon.gif) 
    5.  no-repeat right 8pxposition:relative;} 
    6. .custom_show{background:url(images/icon.gif) no-repeat right 18px;} 
    7. #show{width:100%height:26px
    8. .input{width:66pxheight:20pxline-height:20pxborder:1px solid #d3d3d3
    9. .btn{width:54pxheight:24pxline-height:24pxbackground:url(images/btn_bg.gif)  
    10. repeat-xborder:1px solid #d3d3d3cursor:pointer
    11. #slider_wrap{width:250pxheight:80pxpadding:10pxposition:absolute; left:-1px;  
    12. top:22pxborder:1px solid #d3d3d3background:#fffdisplay:nonez-index:1001
    13. #slider{width:230pxheight:40pxmargin:5px autoborder:nonebackground
    14. url(images/line_bg.gif) no-repeat
    15. #range{width:220pxmargin-left:4px
    16. #slider_wrap p{width:230pxmargin:4px auto

    关键是弹出下拉的div用来展示滑动选择范围的CSS,通过绝对与相对定位来确定展示层的位置。

    展示层中的滑块插件的CSS来源于jquery ui的自带的CSS,我做了一些小的修改。

    1. .ui-slider {position:relativetext-align:left;} 
    2. .ui-slider .ui-slider-handle {position:absolutez-index:2width:11pxheight:14px;  
    3. cursordefaultbackground:url(images/arr.gif) no-repeat } 
    4. .ui-slider .ui-slider-range {position:absolutez-index:1display:blockborder:0;  
    5. background:#f90
    6. .ui-slider-horizontal {height:10px; } 
    7. .ui-slider-horizontal .ui-slider-handle {top:14pxmargin-left:0; } 
    8. .ui-slider-horizontal .ui-slider-range {top:20pxheight:4px; } 
    9. .ui-slider-horizontal .ui-slider-range-min {left:0; } 
    10. .ui-slider-horizontal .ui-slider-range-max {right:0; } 

    jQuery

    首先,我们需要在点击“自定义”时,下拉弹出滑块范围显示的层。当点击“自定义”时,显示下拉层,并且改变箭头样式,再次点击时,则隐藏下拉层。

    1. $(function(){ 
    2.     $("#show").click(function(){ 
    3.         if($("#slider_wrap").css("display")=="none"){ 
    4.             $("#slider_wrap").show(); 
    5.             $("#custom").css("background-position","right -18px"); 
    6.         }else
    7.             $("#slider_wrap").hide(); 
    8.             $("#custom").css("background-position","right 8px"); 
    9.         } 
    10.     }); 
    11. }); 

    有同学可能会想为什么不直接用toggle方法来代替click,我试过了,行的通,但是后面我们还要在下拉的层中单击“确定”,隐藏下拉层。如果使用toggle方法,则当单击了“确定”按钮之后需要点两下才能弹出下拉层,所以我选择了click方法加判断来解决这个问题。

    接着调用slider插件:

    1. $("#range").slider({ 
    2.     min: 0, 
    3.     max: 10000, 
    4.     step: 500, 
    5.     values: [0, 3000], 
    6.     slide: function(event, ui){ 
    7.         $("#start").val(ui.values[0]); 
    8.         $("#end").val(ui.values[1]); 
    9.     } 
    10. }); 

    我们设置了滑块的最大值max为10000,最小值min为0,滑块每次滑动的距离step是500,默认初始范围values为0到3000。当滑动滑块的时候,赋值给#start和#end两个文本框。更多参数设置和方法调用请查看jquery ui 官方网站:

    最后,当我们选定好价格范围后,点击“确定”按钮,将关闭滑块选择框,改变“自定义”状态,代码如下:

    1. $("#btn_ok").click(function(){ 
    2.     $("#slider_wrap").hide(); 
    3.     $("#custom").css("background-position","right 8px"); 
    4.     var start = $("#start").val(); 
    5.     var end = $("#end").val(); 
    6.     $("#show").html(start+"-"+end); 
    7. }); 

    这样,我们就可以看到我们想要的效果了,快去动手试试吧。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告