成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? jQuery插件實現圖片輪播特效
全站頭部文字 我要出現在這里
jQuery插件實現圖片輪播特效 620 2024-02-28   

好了廢話不多說了,先看看效果圖。

查看圖片

HTML部分:

 <div class="slider">
 <div class="ul-box">
  <ul>
  <li><a href="javascript:;"><img src="http://www.gimoo.net/t/1902/img/1.jpg"/></a></li>
  <li><a href="javascript:;"><img src="http://www.gimoo.net/t/1902/img/2.jpg"/></a></li>
  <li><a href="javascript:;"><img src="http://www.gimoo.net/t/1902/img/3.jpg"/></a></li>
  <li><a href="javascript:;"><img src="http://www.gimoo.net/t/1902/img/4.jpg"/></a></li>
  <li><a href="javascript:;"><img src="http://www.gimoo.net/t/1902/img/5.jpg"/></a></li>
  <li><a href="javascript:;"><img src="http://www.gimoo.net/t/1902/img/6.jpg"/></a></li>
  </ul>
 </div>
 <div class="mask"></div>
 <div class="prev"><img src="http://www.gimoo.net/t/1902/img/btn_l.png"/></div>
 <div class="next"><img src="http://www.gimoo.net/t/1902/img/btn_r.png"/></div>
 </div>
 <script src="http://www.gimoo.net/t/1902/js/jquery-1.11.3.js"></script>
 <script src="http://www.gimoo.net/t/1902/js/slider.js"></script>
 <script>
 $('.slider').slider({
  width : 640, 
  height : 270, 
  during : 2000, //動畫執行間隔
  speed : 500, //動畫速度
  btnSize : 20, //底部遮罩層的按鈕大小
  btnSpace : 10, //底部的按鈕間隙
  direction : 1 //輪播方向默認為1,圖片向左移動
 });
 </script> 

CSS部分:

*{
 margin: 0;
 padding: 0;
 box-sizing: border-box;
}
.slider{
 position: relative;
 overflow: hidden;
}
.slider ul{
 list-style: none;
 float: left;
}
.slider ul li{
 float: left;
}
.slider .mask{
 position: absolute;
 bottom: 0;
 width: 100%;
 background-color: rgba(0, 0, 0, .3);
}
.slider .mask .sliderBtn{
 position: absolute;
 border-radius: 50%;
 background-color: #fff;
 cursor: pointer;
 background: radial-gradient(white 20%, transparent 50%);
}
.slider .prev, .slider .next{
 position: absolute;
 width: 45px; 
 height: 100%;
 background-color: rgba(0, 0, 0, .2);
 cursor: pointer;
 top: 0;
 display: none;
}
.slider .prev{
 left: 0;
}
.slider .next{
 right: 0;
}
.slider .prev img, .slider .next img{
 position: absolute;
 top: 50%;
 left: 50%;
 margin-top: -22.5px;
 margin-left: -22.5px;
} 

JS部分:

(function ($) {
 $.fn.slider = function (setting) { //給jQuery的實例對象綁定一個slider方法
 var defaultSetting = {
  width : 640,
  height : 270,
  during : 3000,
  speed : 500,
  btnSize : 30,
  btnSpace : 10,
  direction : 1
 }
 setting = $.extend(true, {}, defaultSetting, setting); //用傳入的參數替換掉默認的設置 
 return this.each(function (i, item) { 
  var _setInterval = window.setInterval; 
  window.setInterval = function (callback, timer, param) { //重寫setInterval函數,讓其可以傳參
  var args = Array.prototype.slice.call(arguments, 2); 
  var _fn = function () {
   callback.apply(null, args);
  }
  return _setInterval(_fn, timer);
  }

  var _this = $(this),
  ulBox = $('.ul-box', this),
  ul = $('ul', this),
  li = $('li', ul),
  img = $('img', li),
  len = li.size(),
  mask = $('.mask', this),
  index = 0,   //用來控制按鈕的下標
  flag = true,   //標識動畫是否執行完成
  gap,    //執行動畫的按鈕下標和當前按鈕的下標的差
  timer;    //計時器

  _this.width(setting.width).height(setting.height);
  ulBox.width(setting.width * 3 * len).height(setting.height).css({
  marginLeft: -setting.width * len
  });
  ul.width(setting.width * len).height(setting.height);
  img.width(setting.width).height(setting.height);
  mask.height(setting.btnSize + 2 * setting.btnSpace);

  //添加btn
  for(var i = 0, str = ''; i < len; i++){
  str += '<div class="sliderBtn"></div>';
  }
  mask.html(str);
  var ulFir = ul.clone(true);
  var ulSec = ul.clone(true);
  var sliderBtn = $('.sliderBtn', '.mask');
  ulBox.append(ulFir);
  ulBox.append(ulSec);
  sliderBtn.each(function (i, item) {
  $(item).css({
   width : setting.btnSize,
   height : setting.btnSize,
   top : setting.btnSpace,
   left : parseInt(setting.width - (setting.btnSize + setting.btnSpace *2) *len, 10) /2 + setting.btnSize * i + setting.btnSpace * i * 2 + setting.btnSpace
  });
  $(item).mouseenter(function () {
   gap = Math.abs(i - index);
   i > index ? (flag && ani(1, gap)) : (flag && ani(0, gap));
  })
  });
  btnAni(0);
  //按鈕樣式變化
  function btnAni (index) {
  $('.sliderBtn').css('background', 'radial-gradient(white 20%, transparent 50%)');
  $('.sliderBtn').eq(index).css('background', 'radial-gradient(white 10%, transparent 30%, white 70%)');
  }
  //動畫
  function ani (direction, num) {
  if(flag){
   //默認1向左運動,0向右運動
   flag = false;
   var ulfir = $('ul', ulBox).eq(0);
   var left = parseInt(ulfir.css('margin-left'), 10);
   if(direction){
   index += num;
   index = index % len;
   left = left - num * setting.width;
   ulfir.animate({
    marginLeft: left
   }, setting.speed, function () {
    if(left <= -len * setting.width){
    ulfir = ulfir.remove(); 
    ulfir.css('margin-left', 0);
    ulBox.append(ulfir);
    }
    flag = true;
   });
   }else{
   index -= num;
   index = index <= -1 ? len - 1 : index;
   left = left + num * setting.width;
   ulfir.animate({
    marginLeft: left
   }, setting.speed, function () {
    if(left >= len * setting.width){
    var ulLast = $('ul', ulBox).eq(2).remove();
    ulLast.css('margin-left', 0);
    ulBox.prepend(ulLast);
    ulfir.css('margin-left', 0);
    }
    flag = true
   })
   }
   btnAni(index)
  }
  }
  //定時器
  timer = setInterval(ani, setting.during, setting.direction, 1);
  _this.hover(function () {
  $('.prev', this).css('display', 'block');
  $('.next', this).css('display', 'block');
  clearInterval(timer);

  }, function () {
  $('.prev', this).css('display', 'none');
  $('.next', this).css('display', 'none');
  timer = setInterval(ani, setting.during, setting.direction, 1);
  })
  $('.next').click(function () {
  flag && ani(1, 1);
  })
  $('.prev').click(function () {
  flag && ani(0, 1);
  })
 })
 }
})(jQuery) 

以上就是差不多所有的代碼了,一些比較關鍵的地方已經用注釋好了,這里就不再敘述。

源碼下載:https://github.com/wwervin72/jQuery/tree/master/slider-2

精彩專題分享:jQuery圖片輪播 JavaScript圖片輪播 Bootstrap圖片輪播

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持綠夏網。



主站蜘蛛池模板: 周传雄黄昏歌词| 电影生化危机4| 美国伦理女兵1| 大学英语综合教程1答案| 少爷和我短剧| 古天乐电影全部作品最新| 心心相印抽纸| 警察英雄| 月亮电影| 红髅| 张静芝| 变形记开头结尾优美段落| 性视频播放| 男生帅气动漫头像| 歪爱时代| 陈一龙是哪部电视剧| 韩国一级黄色录像| 2025最火蛋糕图片| 钉子电影电视剧| 邓稼先教学设计一等奖优秀教案| 色在线播放| 赵琦| 高尔夫频道| 李姝| 十三邀第八季在线观看| 郑俊河| 迷案1937电视剧剧情介绍| 电影白洁少妇完整版| 彭丹露点| 谍变1939全部演员表| 午夜魅影直播| 日本女人xxx| 性视频免费| 直播一级片| 色戒在线观看视频| 电影双面情人| 舌吻做爰视频舌吻| 石川佑希| 寄宿生韩剧全集观看| 视频污污| 深夜影院一级毛片|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103