完美兼容各大浏览器的jQuery插件实现图片切换特效

  文件里面的功能注释也写得非常详细(详见zoeDylan.ImgChange-1.0.1.js文件),对网友们的学习是很有帮助的,虽然样式不太好看,大家可以自己写,好好利用哦。。。

  JS代码部分:

  

复制代码 代码如下:

  (function ($) {

  var//申明全局变量

  _eleTemp,//缓存变量

  _eleThis = $(this),//当前元素

  _eleImg = $('.zd-imgChange-img'),//图片组元素

  _eleControll = $('.zd-imgChange-controll'),//控制器组元素

  _eleChange = $('.zd-imgChange-change'),//切换元素

  _icon = '●○',//动态图标

  _imgTemplate = $(document.createElement('img')),//图片模版'

  _setting = {

  height: 100,//高

  width: 200,//宽

  imgs: new Array(),//图片地址

  links: null,//点击地址

  tips: null,//图片说明

  timers: 3000//自动切换时间

  },//配置

  _timers = null//自动切换保存变量

  $.fn.zoeDylan_ImageChange = function (op) {

  _eleThis = $(this);

  _setting = $.extend(_setting, op);//设置属性

  //处理数据(查看是否为合法范围)

  _setting.timers = _setting.timers != null && _setting.timers != undefined && _setting.timers > 1000 ? _setting.timers : 1000;

  _setting.height = parseFloat(_setting.height) < 100 ? 100 : parseFloat(_setting.height);

  _setting.width = parseFloat(_setting.width) < 200 ? 200 : parseFloat(_setting.width);

  return this.each(function () {//初始化

  AddTemplate();

  AddImg();

  DisSize();

  DisControll();

  })

  }

  //添加模版

  function AddTemplate() {

  _eleThis.removeClass();

  _eleThis.addClass('zd-imgChange');

  _eleTemp = '<button class="zd-imgChange-change zd-imgChange-change-left"><</button>';

  _eleThis.append(_eleTemp);

  _eleTemp = '     <div class="zd-imgChange-img">   </div>';

  _eleThis.append(_eleTemp);

  _eleTemp = '       <div class="zd-imgChange-controll"></div>';

  _eleThis.append(_eleTemp);

  _eleTemp = ' <button class="zd-imgChange-change zd-imgChange-change-right">></button>';

  _eleThis.append(_eleTemp);

  //给全局变量赋值

  _eleImg = $('.zd-imgChange-img');

  _eleControll = $('.zd-imgChange-controll');

  _eleChange = $('.zd-imgChange-change');

  }

  //添加图片

  function AddImg() {

  for (var i = 0; i < _setting.imgs.length; i++) {

  //图片

  _eleTemp = $(document.createElement('img'));

  _eleTemp.addClass('zd-imgChange-img-item');

  _eleTemp.attr('src', _setting.imgs[i]);

  _eleImg.append(_eleTemp);

  //图标

  _eleControll.append('<span>' + _icon[1] + '</span>');

  //提示

  $(_eleImg.children('img')[i]).attr({ 'title': _setting.tips[i] + '|' + _setting.links[i] });

  $(_eleControll.children('span')[i]).attr('title', _setting.tips[i]);

  }

  Dispose(0, 'TtoB');

  }

  //处理尺寸

  function DisSize() {

  _eleThis.css({ 'height': _setting.height, 'width': _setting.width, 'font-size': _setting.height * 0.2 - 2 });

  _eleThis.children('button').css('font-size', _setting.height * 0.2 - 2);

  _eleChange.css({ 'line-height': _setting.height + 'px' });

  }

  //处理操作事件

  function DisControll() {

  _eleImg.children('img').bind('click', function () {//点击图片跳转

  document.location = 'http://' + $(this).attr('title').split('|')[$(this).attr('title').split('|').length - 1];

  });

  _eleChange.bind('click', function () {//顺序切换图片

  var nowImg = $('.zd-imgChange-img-item-sel');

  _eleTemp = _eleImg.children('img');

  if ($(this).hasClass('zd-imgChange-change-left')) {//向左切换

  for (var i = 0; i < _eleTemp.length; i++) {

  if (nowImg.attr('title') == $(_eleTemp[i]).attr('title')) {

  if ((i - 1) < 0) {

  Dispose(_eleTemp.length - 1, 'RtoL');

  } else {

  Dispose(i - 1, 'RtoL');

  }

  break;

  }

  }

  } else if ($(this).hasClass('zd-imgChange-change-right')) {//向右切换

  for (var i = 0; i < _eleTemp.length; i++) {

  if (nowImg.attr('title') == $(_eleTemp[i]).attr('title')) {

  if ((i + 1) > _eleTemp.length - 1) {

  Dispose(0, 'LtoR');

  } else {

  Dispose(i + 1, 'LtoR');

  }

  break;

  }

  }

  } else {

  return false;

  }

  });

  _eleControll.children('span').bind('click', function () {

  for (var i = 0; i < _eleControll.children('span').length; i++) {

  if ($(_eleControll.children('span')[i]).attr('title') == $(this).attr('title')) {

  if ($(_eleImg.children('img')[i]).attr('src') != $('.zd-imgChange-img-item-sel').attr('src')) {//判断是否点击的同一个标签

  Dispose(i, 'TtoB');

  }

  break;

  }

  }

  });

  }

  //切换器

  function Dispose(eNum, dir) {//切换图片

  clearTimeout(_timers);

  DisposeAnm();

  $(_eleControll.children('span')).html(_icon[1]);

  $(_eleControll.children('span')[eNum]).html(_icon[0]);

  $('.zd-imgChange-change-left').attr('title', eNum - 1 >= 0 ? $(_eleControll.children('span')[eNum - 1]).attr('title') : $(_eleControll.children('span')[_eleControll.children('span').length - 1]).attr('title'));

  $('.zd-imgChange-change-right').attr('title', eNum + 1 <= _eleControll.children('span').length - 1 ? $(_eleControll.children('span')[eNum + 1]).attr('title') : $(_eleControll.children('span')[0]).attr('title'));

  _timers = setTimeout(Timers, _setting.timers);

  //切换动画--根据z-index实现视觉效果

  function DisposeAnm() {

  $('.zd-imgChange-img-item').removeClass('zd-imgChange-img-item-temp');

  $('.zd-imgChange-img-item-sel').removeClass('zd-imgChange-img-item-sel').addClass('zd-imgChange-img-item-temp');

  _eleTemp = $(_eleImg.children('img')[eNum]).addClass('zd-imgChange-img-item-sel');

  if (dir == 'TtoB') {

  _eleTemp.css('top', -_setting.height);

  _eleTemp.animate({ top: 0 }, 300);

  } else if (dir == 'RtoL') {

  _eleTemp.css('left', _setting.width);

  _eleTemp.animate({ left: 0 }, 300);

  } else if (dir == 'LtoR') {

  _eleTemp.css('left', -_setting.width);

  _eleTemp.animate({ left: 0 }, 300);

  }

  }

  }

  //自动切换时钟

  function Timers() {

  _timers = setTimeout(Timers, _setting.timers);

  var nowImg = $('.zd-imgChange-img-item-sel');

  _eleTemp = _eleImg.children('img');

  for (var i = 0; i < _eleTemp.length; i++) {

  if (nowImg.attr('title') == $(_eleTemp[i]).attr('title')) {

  if ((i - 1) < 0) {

  Dispose(_eleTemp.length - 1, 'TtoB');

  } else {

  Dispose(i - 1, 'TtoB');

  }

  break;

  }

  }

  }

  })($)

  CSS代码部分:

  

复制代码 代码如下:

  .zd-imgChange {

  position: relative;

  margin: auto;

  padding: 0px;

  min-width: 200px;

  min-height: 100px;

  background: rgba(0,0,0,0.5);

  color: #fff;

  cursor: pointer;

  overflow: hidden;

  }

  .zd-imgChange-change {

  cursor:pointer;

  color:#fff;

  margin: 0px;

  padding: 0px;

  position: relative;

  background: rgba(0,0,0,0.5);

  width: 10%;

  height: 100%;

  text-align: center;

  opacity: 0.1;

  z-index: 1;

  -moz-transition: opacity 0.4s;

  -o-transition: opacity 0.4s;

  -webkit-transition: opacity 0.4s;

  transition: opacity 0.4s;

  border:none;

  }

  .zd-imgChange-change:hover {

  opacity: 1;

  }

  .zd-imgChange-change-left {

  float: left;

  }

  .zd-imgChange-change-right {

  float: right;

  }

  .zd-imgChange-img {

  z-index: 0;

  padding: 0px;

  position: absolute;

  top: 0px;

  left: 0px;

  background: rgba(100,0,0,0.1);

  width: 100%;

  height: 100%;

  }

  .zd-imgChange-img-item {

  position: absolute;

  top: 0px;

  left: 0px;

  width: 100%;

  height: 100%;

  border: none;

  -moz-background-size: cover;

  -o-background-size: cover;

  background-size: cover;

  -moz-transition: opacity 0.5s;

  -o-transition: opacity 0.5s;

  -webkit-transition: opacity 0.5s;

  transition: opacity 0.5s;

  opacity: 1;

  z-index: -1;

  }

  .zd-imgChange-img-item-temp{

  z-index:0;

  }

  .zd-imgChange-img-item-sel {

  z-index: 1;

  }

  .zd-imgChange-controll {

  z-index: 2;

  padding: 0px;

  position: absolute;

  bottom: 0px;

  width: 100%;

  height: 20%;

  background: rgba(0,0,0,0);

  text-align: center;

  -moz-transition: background 0.4s;

  -o-transition: background 0.4s;

  -webkit-transition: background 0.4s;

  transition: background 0.4s;

  text-shadow: 0px 0px 5px #000;

  opacity: 0.7;

  }

  .zd-imgChange-controll:hover {

  background: rgba(0,0,0,0.5);

  opacity: 1;

  }

  .zd-imgChange-controll span {

  -moz-transition: color 0.4s;

  -o-transition: color 0.4s;

  -webkit-transition: color 0.4s;

  transition: color 0.4s;

  }

  .zd-imgChange-controll span:hover {

  color: rgba(0,0,0,0.6);

  }

  HTML代码部分:

  

复制代码 代码如下:

  <!DOCTYPE html>

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <meta name="viewport" content="width=device-width">

  <title>图片切换</title>

  <script src="jquery-1.10.2.min.js"></script>

  <link href="zoeDylan.ImgChange.css" rel="stylesheet" />

  <script src="zoeDylan.ImgChange.js"></script>

  <script>

  var a_imgs = new Array(//插入图片地址

  './1 (1).jpg',

  './1 (2).jpg',

  './1 (3).jpg',

  './1 (4).jpg'

  ),

  a_links = new Array(//点击图片跳转的网址

  'www.baidu.com',

  'www.qq.com',

  'www.google.com',

  'www.zol.com'

  ),

  a_tips = new Array(//鼠标停靠的提示

  '百度',

  '腾讯',

  '谷歌',

  '中关村'

  );

  $(function () {

  $('#imgc').zoeDylan_ImageChange({//设置

  width: 500,

  height: 300,

  imgs: a_imgs,

  links: a_links,

  tips: a_tips,

  timers:2000

  });

  });

  </script>

  </head>

  <body>

  <div id="imgc">

  <!--        <span class="zd-imgChange-change zd-imgChange-change-left"><</span>

  <div class="zd-imgChange-img">

  <img class="zd-imgChange-img-item" src="http://subject.9ria.com/html5game/images/t1f.jpg" alt="图片加载错误!" title="提示" />

  </div>

  <div class="zd-imgChange-controll"><span>d</></div>

  <span class="zd-imgChange-change zd-imgChange-change-right">></span>-->

  </div>

  </body>

  </html>

  ps:尽量使用高版本浏览器,目测测试浏览器:IE11 IE10 IE6 google 猎豹 欧鹏 可以完美运行,IE6透明效果有损失

  代码下载:http://xiazai.glzy8.com/201412/yuanma/zeodylanimgchange(glzy8.com).rar