JavaScript实现轮播图的两种思路

这里粗略记录一下在项目中轮播图实现的两种思路。

首先是内容区域的width和height固定,也就是最常见的情况,通常的做法即是先获取到内容部分每个div或者图片左边的距离style.left,然后改变每个区域的style.left(增加或减少特定值,通常是每个部分的width)来实现轮播的效果。

示例代码:


function animate(offset) {

  //获取的是style.left,是相对左边获取距离,所以第一张图后style.left都为负值,
  //且style.left获取的是字符串,需要用parseInt()取整转化为数字。
  var newLeft = parseInt(list.style.left) + offset;
  list.style.left = newLeft + 'px';

  //无限滚动判断
  if (newLeft > -958) {
    list.style.left = -4790 + 'px';
  }

  if (newLeft < -4790) {
    list.style.left = -958 + 'px';
  }
}

prev.onclick = function () {
  index -= 1;

  if (index < 1) {
    index = 5
  }

  animate(958);
};

next.onclick = function () {
  index += 1;

  if (index > 5) {
    index = 1
  }

  animate(-958);
};

第二种情况是当内容区域的width和height不固定时,就应该把所有部分(div)看成一个整体,然后改变整体的style.left值,height可以根据浏览器的高度来适配,这样就做到了不同的屏幕分辨率下能自动适配高度。

示例代码:


var imgHeight = document.getElementById("bannerlist").getElementsByTagName("img")[0].clientHeight;
document.getElementById("bannerlist").style.height = imgHeight + "px";

function banneranimate(clickIndex) {
  document.getElementById("imgs").style.left = -(clickIndex-1)*100+"%";
}

可以看到其实两种方法的整体思路是一样的,不过在实际的运用当中还需要根据具体情况来改变一些实现的思路。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,863评论 1 92
  • 深入理解傅里叶变换Mar 12, 2017 这原本是我在知乎上对傅立叶变换、拉普拉斯变换、Z变换的联系?为什么要进...
    价值趋势技术派阅读 5,863评论 2 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,830评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,354评论 0 11
  • 昨夜风声和鸡鸣 无端惊醒凄凄情 梦中过往皆相对 奈何桥过是新晴
    一点黑土阅读 300评论 2 1