问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求 JS 大神,教教我图片轮播、、好心求解

发布网友 发布时间:2022-04-22 15:36

我来回答

1个回答

热心网友 时间:2023-11-11 01:13

要实现图片滚动轮播,可以有很多方式,无非是通过调整外围容器的位置(left/top)或者内部图片容器的定位(marin-left/margin-top)来实现的。这里我以前者为例(向左滚动):

通常的实现方式是:

1) 有一个外层容器,同时作为“视口”,这个viewPort有固定的尺寸,超出的部分隐藏,定位方式为“relative”;

2) 包含图片的容器(此处称为“画轴”),尺寸很大,可以容纳下要滚动图片的阵列,定位方式为“absolute”;

3) 滚动即是调整此画轴的偏移量,此处示例为left;

4) 如果图片要看上去是连续滚动(到最后一幅时接着出现第一幅)的,那么可以重复第一幅图像到阵列的最末,然后当画轴滚动到此时,重置偏移量到第一幅。


有了上述DOM结构后,就可以通过JS来控制画轴的偏移量了,如果使用动画,可以参考一些成熟的动画库,示例只提供最基本的线性动画(即匀速移动)。


HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset='utf-8'>
</head>
<body>
  <div class="viewPort">
    <ul class="scroll" id="scroll">
      <li><img src="img/scrollImage (0).jpg"></li>
      <li><img src="img/scrollImage (1).jpg"></li>
      <li><img src="img/scrollImage (2).jpg"></li>
      <li><img src="img/scrollImage (3).jpg"></li>
      <li><img src="img/scrollImage (4).jpg"></li>
      <li><img src="img/scrollImage (0).jpg"></li>
    </ul>
  </div>
</body>
</html>

CSS:

.viewPort{
  width: 168px;
  height: 168px;
  position: relative;
  overflow: hidden;
  border: solid 1px #666;
}
.viewPort .scroll{
  width: 10000px;
  height: 168px;
  position: absolute;
  left: 0;
  list-style: none;
  margin: 0;
  padding: 0;
}
.viewPort .scroll li{
  width: 168px;
  height: 168px;
  float: left;
}

JS:

var scroll = document.getElementById('scroll');    // 画轴
var scrollLeft = 0;    // 记录画轴CSS left属性的值
var index = 0;    // 当前显示的画的序号
// 滚动一幅画面,调整画轴scroll的left属性值。
function scrollByOne(){
  var timer = setInterval(function(){
    if (scrollLeft <= -168 * index) {
      clearInterval(timer);
      scrollLeft = -168 * index;
      // 当滚动到最后一幅画面(与第一幅相同)时,重置。
      if (index == 5) {
        scrollLeft = 0;
        scroll.style.left = '0';
        index = 0;
      }
    } else {
      scrollLeft -= 2;
      scroll.style.left = scrollLeft + 'px';
    }
  }, 10);
}
// 滚动,每隔3秒钟滚动一幅。
setInterval(function(){
  ++index;
  scrollByOne();
}, 3000);

代码:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...但是打开微信公众平台界面数字和英文字体异常怎么解决? 微信文字显示异常 哪些品牌的假发看起来比较逼真? 哪些品牌的假发看着逼真? 哪些品牌的假发片比较逼真? 无主之地2这个怎么解决 我在游民星空下了无主之地2,就是那个免安装硬盘版,解压了其中一个之后... 大神求助:我在游民下的无主之地2全DLC免安装中文硬盘版下载,有些... 无主之地2我在游民星空下的,是免安装中文硬盘版 一个正方形的边长是9分米,它的周长是()厘米,面积是()。 快手电商是怎么回事? 下载快手如何做电商呢? 如何使用如何使用iScroll5实现移动滚动效果 js图片滚动问题。无缝滚动图片做到一半,无法写下去了。4张图片,滚动时却只显示了3张。求指导下。。 什么是快手电商? js图片无缝滚动的原理是什么 请教js如何实现截屏功能 js实现图片滚动效果 快手开店必备的工具或者软件有哪些? js中怎么调用windows的截屏工具 下载快手做电商有什么方法吗? 空调清洁剂用后会对空调有什么不好的影响吗? javascript如何截屏 快手下载如何做电商呢? 怎么用JS脚本使多张图片滚动? 如何通过JS实现图片循环滚动? 电脑开机时点了f11 现在我该点什么…急求,刚刚电脑卡死现在开不了机该怎么做 什么软件和网站可以看美剧,没有中文字幕的? IPAD 迅雷播放器 如何导入字幕 快手电商怎么让代发打单 求救啊,用js实现图片左右滚动,鼠标经过图像会在滚动图像下方的固定位置显示放大图像,速度啊!!!!! js图片滚动 多组图片滚动 如何实现 快手电商2019还能做吗?快手电商2019玩法 如何用JS实现在表格内横向滚动图片 js如何控制整个页面滚动条的位置 excel批量替换行不同的字数,怎么做呢? 冰箱肉坏了 臭味怎么除 肉腐烂在冰箱怎么除臭 肉坏冰箱了怎么去除冰箱异味 梦见涔樿溅 农信社与农商银行有什么不同? 农信社和农商行的区别是什么 农信社和农商行,农合行有什么不同? 农村信用社和农商银行有什么区别? 农商银行和商业银行有区别吗 Excel如何批量替换格式 爱钱进锁定期结束资金怎样取出来 真皮沙发需要铺垫子吗? 别人的快手小店为啥进不去呢