jquery 图片切换

仿着写的一个jquery的图片切换小插件,代码如下:

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    *{ margin:0; padding:0; }
    ul,li{ list-style:none; }
    .cl{ zoom:1; }
    .cl:after{ display:block; content:""; width:0; height:0; clear:both; overflow:hidden; }
    .myDiv{ height:300px; }
    .myDiv li{ float:left; width:100%; height:300px; line-height:300px; text-align:center; }
    .myDiv img{ max-height:300px; }
    </style>
</head>
<body>
    <div class="myDiv cl">
        <ul>
            <li class="js-switch-item"><a href="#"><img data-src="1.jpg" src="load.gif"></a></li>
            <li class="js-switch-item"><a href="#"><img data-src="2.jpg" src="load.gif"></a></li>
            <li class="js-switch-item"><a href="#"><img data-src="3.jpg" src="load.gif"></a></li>
            <li class="js-switch-item"><a href="#"><img data-src="4.jpg" src="load.gif"></a></li>
        </ul>
    </div>
    <script src="js/jquery-1.8.2.min.js"></script>
    <script src="js/lunhuan.js"></script>
    <script>
    $(".myDiv").switch();
    </script>
</body>
</html>

js:

;(function($){
  $.extend({
    addStyle: function(cssText){
      var style = document.createElement("style");
      style.type = "text/css";
      try{
        style.appendChild(document.createTextNode(cssText));
      }catch(ex){
        style.styleSheet.cssText = cssText;
      }
      document.getElementsByTagName("head")[0].appendChild(style);
    }
  });
  $.fn.switch = function(obj,fun){
    if((typeof obj).toLowerCase() === "function"){
      fun = obj;
      obj = {};
    }
    var opt = $.extend({
      cont: "js-switch-item",
      active: "active",//高亮class
      auto: true, //是否自动
      openNext: true,//是否开启上一个、下一个
      events: "mouseenter",//触发事件
      index: 0, //默认显示值
      navClass: "",//导航class
      navCss: "",//导航样式
      navChildCss: "", //导航内部样式
      init: null,//初始化
      times: 3000,//延时时间
      setFun: null
    }, obj || {});
    var $this = this;
    var items = $this.find("."+opt.cont);
    var itemsLen = items.length;
    var nav,next,prev;//节点
    var addActive = function(inx){//设置当前样式、显示
      if(inx >= itemsLen){
        inx = 0;
      }
      if(inx < 0){
        inx = itemsLen-1;
      }
      var itemCur = items.eq(inx);
      var imgDom = itemCur.find("img");
      if(imgDom.data("src")){//加载图片
        imgDom.prop("src",imgDom.data("src"));
        imgDom.removeData("src");
      }
      items.fadeOut(500);
      itemCur.fadeIn(500);
      nav.removeClass(opt.active).eq(inx).addClass(opt.active);      opt.index = inx;
    }
    opt.init = function(){//初始化
      var tw = $this.width()||items.width()+"px";
      var th = $this.height()||items.height()+"px";
      var navHtml = "";
      var activeClass = "";

      $this.css({"position":"relative","width":tw,"height":th});

      for(var i=0; i<itemsLen; i++){
        navHtml = navHtml + ‘<span></span>‘;
      }
      items.css({"position":"absolute","left":0,"top":0,"z-index":1});
      var navDom = $(‘<div class="js-switch-nav ‘+ opt.navClass +‘"></div>‘).html(navHtml);//创建节点
      var navStyle = ".js-switch-nav{ width:100%; height:20px; position:absolute; left:0; bottom:20px; text-align:center;z-index:9; }.js-switch-nav span{ cursor:pointer; display:inline-block; height:5px; width:20px; background-color:#ddd; margin:0 5px; }.js-switch-nav span.active{ background-color:#c00; }.handleDom{ background:rgba(0,0,0,0.6); display:inline-block; height:40px; line-height:40px; width:35px; text-align:center; font-weight:bold; font-size:20px; font-family:serif,arial; color:#fff; cursor:pointer; position:absolute; z-index:99; text-decoration:none; top:50%; margin-top:-20px; display:none; }.js-preDom{ left:10%; }.js-nextDom{ right:10%; } ";
      $.addStyle(navStyle + opt.navCss + opt.navChildCss);//创建样式
      $this.append(navDom);
      $this.append($(‘<a href="javascript:;" class="js-nextDom handleDom">&gt;</a><a href="javascript:;" class="js-preDom handleDom">&lt;</a>‘));//创建上一个、下一个

      nav = $this.find(".js-switch-nav span");
      next = $this.find(".js-nextDom");
      prev = $this.find(".js-preDom");

      addActive(opt.index);
    }
    opt.init();
    function _default(e){//阻止冒泡事件
      try{
        e.stopPrapagation();
      }catch(ex){
        window.event.cancleBubble = false;
      }
    }
    var autoFun = function(){
      opt.setFun = setInterval(function(){
        opt.index++;

        addActive(opt.index);
        if(fun){//返回函数
          fun(items.eq(opt.index),nav.eq(opt.index),opt.index);//当前切换元素,当前导航元素,当前索引
        }
      },opt.times);
    }
    $this.on("mouseenter",function(){
      clearInterval(opt.setFun);
      next.show();
      prev.show();
    }).on("mouseleave",function(){
      clearInterval(opt.setFun);
      autoFun();
      next.hide();
      prev.hide();
    });

    next.on("click",function(){//下一个
      opt.index++;
      addActive(opt.index);
    });
    prev.on("click",function(){//上一个
      opt.index--;
      addActive(opt.index);
    });

    nav.on(opt.events,function(e){
      _default(e);
      var $t = $(this);
      var inx = $t.index();
      clearInterval(opt.setFun);
      if(inx === opt.index){
        return $this;
      }
      addActive(inx);
      opt.index = inx;
    });

    if(opt.auto){
      autoFun();
    }
    return $this;
  }
})(jQuery);
时间: 2024-10-10 01:32:16

jquery 图片切换的相关文章

jQuery图片切换插件jquery.cycle.js

Cycle是一个很棒的jQuery图片切换插件,提供了很好的功能来帮助大家更简单的使用插件的幻灯功能 下载cycle插件并引入,此时,注意把引入它的代码放在引入jQuery主文件之后. <head> <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src

推荐几款jquery图片切换插件

一.前言 毕业季到了,大家都在匆匆忙忙的记录大学里最美好的时光,照片中各种花式.各种姿势都涌现出来了.这么多的照片怎么展示出来给自己的好友看呢?有人选择做成视频,有人选择ps之后做成图片集,而我选择利用静态网页的形式进行展示. 二.用到的四个免费的jquery插件 注:都是网上免费的,自己测试过了,挺好用的,顺便改了改. 1.3D Change 下载地址:https://github.com/hjzgg/picture_show/tree/master/3D_change 效果展示 2.Samp

jquery简单的图片切换效果,支持pc端、移动端的banner图片切换开发

详细内容请点击 无意中看见了两年前写的一个图片切换,那会儿刚刚学习网页制作,可以说是我的第一个处女座的jquery图片切换效果.无聊之余对它的宽度稍稍做了一下修改,变成了支持pc端.手机端全屏的banner图片切换效果. 写法很简单,网页初学者们或者wenbapp初学者们可以拿去学习学习,也可以在这基础上加上手机的图片滑动切换效果.废话不多说,下面说说这个简单的图片切换的效果吧! 首先以下是图片切换的效果图:   图片切换效果html内容: <div class="tyna2"&

18款 非常实用 jquery幻灯片图片切换

1.jquery图片滚动仿QQ商城带左右按钮控制焦点图片切换滚动 jquery图片特效制作仿腾讯QQ商城首页banner焦点图片轮播切换效果,带索引按钮控制和左右按钮控制图片切换. 查看演示>>          下载地址 2.jquery图片切换插件制作图片层叠缩放展示效果 jquery图片插件制作图片等比列缩放层叠样式,图片叠加展示.点击层叠最上层的图片依次点击缩放图片层叠缩放切换. 查看演示>> 下载地址 3.jquery图像幻灯片制作大小图片切换滚动展示 jquery图像幻

笔记30多款jQuery图片展示/幻灯片图片轮播切换

1.号称最好的JQUERY幻灯片-NIVO SLIDER JQUERY幻灯片-NIVO SLIDER,jquery图片切换 演示下载地址 2.小米3发布官网jQuery焦点图全屏大图 演示下载地址 小米3发布官网jQuery焦点图是一款小米手机3发布官网淡入淡出切换的jquery焦点图,带索引按钮,自动播放.

JQuery实现图片切换(自动切换+手动切换)

学习JS的时候本来积攒了很多有趣的小例子,但是苦于没有找到一些好的平台来展示这些JS效果.今天发现了RunJS这个分享代码的平台,迫不及待得想跟大家分享. 在浏览各大商城网站的时候,或者某些网站的首页,都会展示与本网站相关的一些实时切换的图片, 本文就给大家分享一个用jQuery实现图片自动切换的例子. 主页核心代码(Default.aspx): <!DOCTYPE html> <html> <head> <meta http-equiv="Conten

10款jQuery+CSS3实现的多种图片切换焦点图

1.js实现的七屏百叶窗焦点图动态特效 可以实现可以同时显示很多找竖行百叶窗效果的缩略图,代码,鼠标悬浮在一张缩略图上时,该图片就在原位置变亮并慢慢展开,同时两边的缩略图就往两边缩小靠近,需要此种焦点图效果的朋友们可以前来下载使用. 在线演示 源码下载 2.jQuery+CSS3实现的多种图片切换方式简易焦点图 今天要来分享一款简易的jQuery+CSS3焦点图应用,这款焦点图应用的图片切换方式非常丰富,而且焦点图的切换按钮比较小,图片篇幅占据比较大,因此总体比较大气. 在线演示 源码下载 3.

jquery.cycle.js图片切换插件参数详解

jquery.cycle.js是jquery的一个插件,主要用来实现千奇百怪的图片切换效果---当然,不是图片也能切换,只是它经常被用来做图片切换而已:这个插件总共有27种效果,是非常好的插件,用到手机版开发是很好的插件来的: 当然jquery.cycle.js的强大远不止于此,下面列举一些它的基本参数: fx:'fade'>值:字符串,作用:选择特效.切换效果是它的重头戏,我统计过,jquery.cycle.js支持27种切换效果,我一一进行了测试,列举在jquery.cycle.js切换特效

jQuery箭头切换图片 - 学习笔记

jQuery箭头切换图片 布局 3d位移 变形原点 jQuery transform:translate3d(x,y,z):        x 代表横向坐标移向量的长度       y 代表纵向坐标移向量的长度       z 代表Z轴移向量的长度 取值不可为百 scale() 缩放 transform-origin:0 50%:        top left | left top 等价于 0 0       top | top center | center top 等价于 50% 0