国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery插件實現(xiàn)圖片輪播特效

2019-11-20 09:41:26
字體:
來源:轉載
供稿:網(wǎng)友

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

 

HTML部分: 

 <div class="slider"> <div class="ul-box">  <ul>  <li><a href="javascript:;"><img src="img/1.jpg"/></a></li>  <li><a href="javascript:;"><img src="img/2.jpg"/></a></li>  <li><a href="javascript:;"><img src="img/3.jpg"/></a></li>  <li><a href="javascript:;"><img src="img/4.jpg"/></a></li>  <li><a href="javascript:;"><img src="img/5.jpg"/></a></li>  <li><a href="javascript:;"><img src="img/6.jpg"/></a></li>  </ul> </div> <div class="mask"></div> <div class="prev"><img src="img/btn_l.png"/></div> <div class="next"><img src="img/btn_r.png"/></div> </div> <script src="js/jquery-1.11.3.js"></script> <script src="js/slider.js"></script> <script> $('.slider').slider({  width : 640,   height : 270,   during : 2000, //動畫執(zhí)行間隔  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); //用傳入的參數(shù)替換掉默認的設置  return this.each(function (i, item) {   var _setInterval = window.setInterval;   window.setInterval = function (callback, timer, param) { //重寫setInterval函數(shù),讓其可以傳參  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,   //標識動畫是否執(zhí)行完成  gap,    //執(zhí)行動畫的按鈕下標和當前按鈕的下標的差  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) 

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

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 金川县| 从化市| 五原县| 江源县| 宜君县| 临漳县| 玉门市| 南丰县| 武安市| 广水市| 苗栗县| 马公市| 常山县| 苏州市| 白山市| 上栗县| 丰都县| 新密市| 永清县| 惠州市| 滦南县| 永登县| 郓城县| 堆龙德庆县| 东兰县| 阜平县| 定兴县| 连山| 娱乐| 靖边县| 佛坪县| 随州市| 沁阳市| 仙游县| 九龙坡区| 乌兰浩特市| 商南县| 家居| 西乌珠穆沁旗| 万山特区| 长阳|