利用JavaScript制作一个炫酷的轮播图
创始人
2024-11-18 19:24:20
0次




  
  
  
  面试必备轮播图
  



  

JS代码

var oImg = $('img');
// 默认中间展示索引值为0的这张图片
var curDisplay = 0;
// 将图片分散排列

// 获得图片个数
var len = oImg.length;

// 定时器
var timer;

function init() {
  initalCarousel();
  bindEvent();
}
init();

function initalCarousel() {
  // 获得中间图片
  console.log($('img'))
  var hLen = Math.floor(oImg.length / 2);
  // rNum,lNum分别是分散在中间图片左右左右两侧的图片索引
  var rNum, lNum;
  for (var i = 0; i < hLen; i++) {
    lNum = curDisplay - i - 1;
    // console.log(lNum)
    // 分别让分散在左右两侧的图片平移旋转
    oImg.eq(lNum).css({
      transform: 'translateX(' + (-150 * (i + 1)) + 'px) translateZ(' + (200 - i * 100) + 'px) rotateY(30deg)'
    });
    rNum = curDisplay + i + 1;
    // 如果运动到最后一张 循环运动
    if (rNum > oImg.length - 1) {
      rNum -= oImg.length;
    }
    oImg.eq(rNum).css({
      transform: 'translateX(' + (150 * (i + 1)) + 'px) translateZ(' + (200 - i * 100) + 'px) rotateY(-30deg)'
    });
    oImg.removeClass('active');
  }

  // 当前显示图片直接z轴向前移动 同时添加class名作为标记
  
  oImg.eq(curDisplay).css({
    transform: 'translateZ(300px)'
  }).addClass('active');

}
// 点击事件
function bindEvent() {
  // 在每一张图片上绑定上点击事件
  oImg.on('click', function (e) {
    // 判断点击图片不是第一张显示图片 
    if (!$(this).hasClass('active')) {
      // 标记图片flag切换
      // 改变当前显示图片索引
      curDisplay = $(this).index();
      initalCarousel();
    }
    // 鼠标覆盖 清除自动轮播定时器
  }).hover(function () {
    clearInterval(timer);
    // 鼠标移走 继续轮播
  }, function () {
    play();
  });
}
// 自动播放
function play() {
  timer = setInterval(function () {
    if (curDisplay == len - 1) {
      curDisplay = 0;
    } else {
      curDisplay++;
    }
    initalCarousel();
  }, 2000);
}

CSS样式

*{
  margin:0;
  padding:0;
}
.wrapper{
  position: relative;
  transform-style: preserve-3d;
  perspective: 800px;
  /* border:1px solid black; */
  height:200px;
  margin-top:200px;
}
.wrapper img{
  position: absolute;
  left: 50%;
  top: 50%;
  width: 300px;
  height: 200px;
  margin-left: -150px;
  margin-top: -100px;
  border-radius: 8px;
  transition: transform 0.5s ease-in-out;
}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...