zoukankan      html  css  js  c++  java
  • 【jQuery Demo】图片切换效果整理

    图片的切换效果有很多,比较常见的有水平滚动、垂直滚动、淡入淡出等。我们接下来一一实现这些效果。

    1.水平滚动

    1) 我们先来实现HTML页面,代码很简单:

    <div id="container">
        <ul class="slider">
            <li><img src="../imgs/Girls/04.png"/></li>
            <li><img src="../imgs/Girls/05.jpg"/></li>
            <li><img src="../imgs/Girls/14.jpg"/></li>
            <li><img src="../imgs/Girls/17.jpg"/></li>
            <li><img src="../imgs/Girls/20.jpg"/></li>
        </ul>
        <ul class="thumb">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
    </div>

    2)然后我们设置下CSS:

    /**   CSS Reset  **/
    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin: 0; padding: 0; }
    body, button, input, select, textarea { font: 12px/1.5 tahoma, arial, 5b8b4f53; }
    h1, h2, h3, h4, h5, h6 { font-size: 100%; }
    address, cite, dfn, em, var { font-style: normal; }
    code, kbd, pre, samp { font-family: couriernew, courier, monospace; }
    small { font-size: 12px; }
    ul, ol { list-style: none; }
    a { text-decoration: none; }
    a:hover { text-decoration: underline; }
    sup { vertical-align: text-top; }
    sub { vertical-align: text-bottom; }
    legend { color: #000; }
    fieldset, img { border: 0; }
    button, input, select, textarea { font-size: 100%; }
    table { border-collapse: collapse; border-spacing: 0; }
    /*   container  */
    #container { width: 320px; height: 456px; overflow: hidden; position: relative; margin: 20px auto; }
    .slider { position: absolute; }
    .slider img { width: 320px; display: block; }
    .thumb { position: absolute; bottom: 5px; right: 5px; }
    .thumb li { float: left; color: #FF7300; text-align: center; line-height: 16px; width: 16px; height: 16px; font-size: 12px; font-family: Arial; margin: 3px 1px; border: 1px solid #FF7300; background: #fff; cursor: pointer; }
    .thumb li:hover,.thumb li.selected { color: #fff; line-height: 16px; width: 16px; height: 16px; font-size: 16px; background: #EF7300; font-weight: bold; }

    目前的显示效果如下:

    3)接下来,我们需要点击实现图片的切换,下面是实现水平滚动效果的jQuery插件:

    ;(function ($) {
       $.fn.extend({
           scrollHorizontal:function () {
               var imgCount = $(".slider li").length;
               var imgWidth = $(".slider li").eq(0).width();
               $(".thumb li").eq(0).addClass("selected");
               for (var i=0;i<imgCount;i++){
                   $(".slider li").eq(i).css({
                       "left":i*imgWidth+"px",
                       "position":"absolute"
                   });
               }
               // 初始化
              $(".thumb li").click(function () {
                  var theIndex = $(this).index();
                  var nowIndex = $(".selected").index();
                  var leftWidth = imgWidth*(nowIndex-theIndex);
                  $(".thumb li").removeClass("selected");
                  $(".thumb li").eq(theIndex).addClass("selected");
                  $(".slider li").animate({left:"+="+leftWidth });
              });
           }
       });
    })(jQuery);

    4)最后,我们在HTML页面调用这个插件:

    <script>
        $(document).ready(function () {
            $("#container").scrollHorizontal();
        })
    </script>

    5)这样效果就出来了:

    2.垂直滚动

    上面实现了水平滚动,那垂直滚动就简单了。通过获取图片的高度,然后控制 top 的值就可以了。新建的jQuery插件如下:

    ;(function ($) {
       $.fn.extend({
           scrollVertical:function () {
               var imgCount = $(".slider li").length;
               var imgHeight = $(".slider li").eq(0).height();
               $(".thumb li").eq(0).addClass("selected");
               for (var i=0;i<imgCount;i++){
                   $(".slider li").eq(i).css({
                       "top":i*imgHeight+"px",
                       "position":"absolute"
                   });
               }
               // 初始化
               $(".thumb li").click(function () {
                   var theIndex = $(this).index();
                   var nowIndex = $(".selected").index();
                   var topHeight = imgHeight*(nowIndex-theIndex);
                   $(".thumb li").removeClass("selected");
                   $(".thumb li").eq(theIndex).addClass("selected");
                   $(".slider li").animate({top:"+="+topHeight });
               });
           }
       });
    })(jQuery);

    然后调用这个插件就可以了:

    <script>
        $(document).ready(function () {
            $("#container").scrollVertical();
        })
    </script>

    效果如下:

    3.淡入淡出

    同样淡入淡出也就很好实现了:

    ;(function ($) {
       $.fn.extend({
           fadeInOut:function () {
               var imgCount = $(".slider li").length;
               var imgHeight = $(".slider li").eq(0).height();
               $(".thumb li").eq(0).addClass("selected");
               for (var i=1;i<imgCount;i++){
                   $(".slider li").eq(i).css({
                       "display":"none"
                   });
               }
               $(".thumb li").click(function () {
                   var theIndex = $(this).index();
                   var nowIndex = $(".selected").index();
                   $(".thumb li").removeClass("selected");
                   $(".thumb li").eq(theIndex).addClass("selected");
                   $(".slider li").eq(nowIndex).fadeOut();
                   $(".slider li").eq(theIndex).fadeIn();
               });
           }
       });
    })(jQuery);

    效果如下:

  • 相关阅读:
    Delphi实现在数据库中存取图像
    c#后台修改前台DOM的css属性示例代码
    jQuery编程中的一些核心方法简介
    jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
    jQuery实现淡入淡出二级下拉导航菜单的方法
    jQuery实现瀑布流布局详解(PC和移动端)
    jQuery实用技巧必备
    jQuery链式操作实例分析
    谈谈Jquery ajax中success和complete有哪些不同点
    jquery密码强度校验
  • 原文地址:https://www.cnblogs.com/yc-755909659/p/6639011.html
Copyright © 2011-2022 走看看