用JS怎样实现旋转轮播图,过程及代码是什么

Admin 2022-12-01 群英技术资讯 304 次浏览

今天这篇给大家分享的知识是“用JS怎样实现旋转轮播图,过程及代码是什么”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“用JS怎样实现旋转轮播图,过程及代码是什么”文章能帮助大家解决问题。

最近一直在学习JavaScript,然后看到旋转轮播图的案例,就尝试着用js做了一个简单的轮播图,因为无法显示动态效果,所以就放个截图:

这个效果是这样的:一共有7张图片,它们会自动地向左滑动,然后左右箭头也可以控制轮播图的左滑和右滑,同时,如果鼠标停在图片上,那么轮播图会停止自动滑动,当鼠标移开时,将会继续向左轮播。
首先,我这里封装了两个函数(因为暂且还没有学jQuery,所以用了封装函数的方法来实现),第一个函数是$函数,调用可以获取html中的元素,代码如下:

`function $(select){
    if (typeof select != 'string') {
      console.log('传入的参数有误');     
      return null;
    }
    var firstChar = select.charAt(0);
    switch(firstChar){
      case '#':
        return document.getElementById(select.substr(1));
      break;
      case '.':
        if (document.getElementsByClassName){
          return document.getElementsByClassName(select.substr(1));
        } else {
          var result = [];
          var allElemnts = document.getElementsByTagName('*');
          console.log(allElemnts);
          for (var i = 0; i 

第二个函数是一个动画函数,用json实现多条样式的动态改变,从而达到一个动画效果,代码如下: `

function animate(element, json, fun) {
  clearInterval(element.timer);
  function getStyle(element, styleName){
    if(element.currentStyle){
      //ie浏览器下 直接通过currentstyle来获取
      //return element.currentStyle.heigh;
      return element.currentStyle[styleName];
    }else{
      var computedStyle = window.getComputedStyle(element,null);
      return computedStyle[styleName];
    }
  }
  var isStop = false;
  element.timer = setInterval(function () {
    isStop = true;
    for (var key in json){
      var target = json[key];
      var current;
      if (key == 'opacity') {
        //当动画的类型为透明度时 获取的值应该是浮点类型
        current = parseFloat(getStyle(element, key)) || 1;
      } else {
        //其他情况 用整数类型
        current = parseInt(getStyle(element, key)) || 0;
      }      
      var step = (target - current) / 10;
      if (key != 'opacity') {
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
      }
      current += step;
      if (key == 'opacity') {
        if (Math.abs(target - current) > 0.01) {
          isStop = false;
        } else {
          current = target;
        }
        element.style.opacity = current + '';
      } else {
        if (Math.abs(target-current) > Math.abs(step)) {
          isStop = false;
        } else {
          current = target;
        }
        if (key == 'zIndex'){
          element.style.zIndex = Math.round(current);
        } else {
          element.style[key] = current + 'px';
        }        
      }      
    }
    if (isStop) {
      clearInterval(element.timer);
      console.log('动画完成');
      if (typeof fun == 'function') {
        fun();
      }
    }
  }, 30);
}`

接下来就要写html的部分了,因为只有几张图片,所以html的部分很简单:

<body>

 <div class="box">

 <div class="content">

  <ul>

  <li><a href="#"><img src="./images/1.jpg"></a></li>

  <li><a href="#"><img src="./images/2.jpg"></a></li>

  <li><a href="#"><img src="./images/3.jpg"></a></li>

  <li><a href="#"><img src="./images/4.jpg" class="current"></a></li>

  <li><a href="#"><img src="./images/5.jpg"></a></li>

  <li><a href="#"><img src="./images/6.jpg"></a></li>

  <li><a href="#"><img src="./images/7.jpg"></a></li>

  </ul>

 </div>

 <div class="control">

  <a href="javascript:;" id="prev"></a>

  <a href="javascript:;" id="next"></a>

 </div>

 </div>

</body>

css样式的部分也不多做叙述。

下面就是JS是部分啦,代码也很简单,理清楚就好

 window.onload = function(){
  //定位,并给图片设置大小透明度
  var json = [{
    width: 630,
    top: 23,
    left: 0,
    zIndex: 2,
    opacity: 0
  },{
    width: 630,
    top: 23,
    left: 0,
    zIndex: 3,
    opacity: 0
  },{
    width: 630,
    top: 23,
    left: 0,
    zIndex: 4,
    opacity: 0.6
  },{
    width: 730,
    top: 0,
    left: 125,
    zIndex: 5,
    opacity: 1
  },{
    width: 630,
    top: 23,
    left: 350,
    zIndex: 4,
    opacity: 0.6
  },{
    width: 630,
    top: 23,
    left: 350,
    zIndex: 3,
    opacity: 0
  },{
    width: 630,
    top: 23,
    left: 350,
    zIndex: 2,
    opacity: 0
  }];

function refreshImageLocatin(index){

 //默认情况下 第i张图对应第i个位置

 //index=1时 第i个图对应i-1个位置

 //也就是第i个图对应i-index的位置

 var liArr = $('li');

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

  var li = liArr[i];

  var locationIndex = i - index;

  console.log('i='+i);

  console.log('index='+index);

  console.log('locationIndex='+locationIndex);

  if(locationIndex < 0){

  locationIndex += 7;

  }

  var locationData = json[locationIndex];

  animate(li, locationData, null);

 }

 }

 

 refreshImageLocatin(0);

 

 var index = 0;

 $('#next').onclick = function(){

 index++;

 if(index == 7){

  index = 0;

 }

 refreshImageLocatin(index);

 }

 $('#prev').onclick = function(){

 index--;

 if(index < 0){

  index = 6;

 }

 refreshImageLocatin(index);

 }

 

 var nextImage = $('#next').onclick;

 var contentBox = $('.content')[0];

 //自动播放

 var timer = setInterval(nextImage, 3000);

 //当鼠标移动到图片上,停止播放

 contentBox.onmouseover = function(){

 clearInterval(timer);

 }

 contentBox.onmouseout = function(){

 timer = setInterval(nextImage ,3000)

 }

}



关于“用JS怎样实现旋转轮播图,过程及代码是什么”就介绍到这了,如果大家觉得不错可以参考了解看看,如果想要了解更多,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: js旋转轮播图

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服