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

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

发布网友 发布时间:2022-04-30 16:28

我来回答

1个回答

热心网友 时间:2022-04-22 14:48

要实现图片滚动轮播,可以有很多方式,无非是通过调整外围容器的位置(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
我想下个好点的股市行情软件,光大证券金阳光app怎么样啊? 股票行情软件下载选哪个比较好?光大证券的金阳光app怎么样? 光大证券开户APP是什么 光大用什么炒股软件 家里房顶漏水怎么办 房顶漏水最好补漏方法 中石化薪资揭秘(天津、海南、镇海、中科、茂名) 专科生在茂名石化待遇怎样 茂名石化正式工待遇怎么样 茂名石化待遇如何 729-08胶皮是内能的吗 多吃红色食物保护心血管、补心并增强免疫力 受党内严重警告处分后基础性绩效工资及奖励性绩效工资受什么影响? h6和赤兔怎么选更好?哪款更好? 怎么用js做自动轮播图(不要用jq做的,是js,js!带1,,2,3,4,5的那种... 什么水果补心? 怎样区分哈弗赤兔黄金兔和白银兔 JS特效 按钮实现图片左右轮换(总共4张图,img1.jpg,img2.jpg,img3.j... “新次元激擎座驾”—哈弗赤兔 新车已到店 为什么红色食物能养心 激进的运动派座驾 试驾2021款哈弗赤兔 求大神指点一下用js做一个轮播,比如有五张图,三秒换下一张,到最后_百... 夏季养心吃点红,舒舒服服度苦夏,哪些红色的食物适合夏季服用? 哈弗赤兔黄金兔白色内饰可以换颜色吗 7.7秒破百,年轻人的喜好哈弗赤兔全部拿捏! 吃油炸食品的危害 长期吃油炸食品对身体有什么影响? 怎么改拍一拍怎么说话 为何油炸食品不好?经常吃真的会致癌吗? 为什么不要吃油炸食品? 净水机高压阀坏了会出现什么问题 党内严重警告影响年度绩效工资发放吗 谁帮写一个html css js 组合的轮播图5张图的,左右都能点击,可以前进后 ... 受党内严重警告处分后基础性绩效工资及奖励性绩效工资受什么影响 五色食物入哪些内脏 苹果笔记本有保修卡吗? 党内严重警告影响年度绩效工资发放吗? 那买组装电脑时每个硬件都有保修卡吗 什么食物养心 党内严重警告处分影响绩效奖金吗 哈弗赤兔值得买吗? 什么东西最补心脏? 戴尔笔记本有保修卡吗? 显卡保修卡什么样子 补心润肺之食材有哪些 thinkpad的电脑保修卡外观是否都一样 哈弗赤兔在外观设计上,都有哪些亮点? 信用卡在什么情况下能够冻结,如果冻结了该怎么办呢? 电脑的每个配件都有保修卡吗? 信用卡还款后怎么冻结 戴尔笔记本有保修卡吗