首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在滚动鼠标轮时更改图像

在滚动鼠标轮时更改图像
EN

Stack Overflow用户
提问于 2017-04-07 19:19:14
回答 1查看 1.9K关注 0票数 2

代码语言:javascript
复制
var myimages=[
  "images/dad.png",
  "images/terminal.png",
  "images/hi.png",
  "images/hengameh.png",
  "images/shrinedefense.png"
]
var slideshow=document.getElementById("slideshowers")
var nextslideindex=0
function rotateimage(e){
  var evt=window.event || e
  var delta=evt.detail? evt.detail*(-120) : evt.wheelDelta
  nextslideindex=(delta<=-120)? nextslideindex+1 : nextslideindex-1
  nextslideindex=(nextslideindex<0)? myimages.length-1 : (nextslideindex>myimages.length-1)? 0 : nextslideindex
  slideshow.src=myimages[nextslideindex]
  if (evt.preventDefault)
    evt.preventDefault()
  else
    return false
}
var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"

if (slideshow.attachEvent)
  slideshow.attachEvent("on"+mousewheelevt, rotateimage)
else if (slideshow.addEventListener)
  slideshow.addEventListener(mousewheelevt, rotateimage, false)
代码语言:javascript
复制
<img id="slideshowers" class="cover-images" src="http://www.ammaryar.ir/images/dad.png" />

嗨,我想改变形象,同时滚动鼠标轮。你可以在下面的链接中找到我想要的:http://www.ammaryar.ir右边有一个灯笼,我有四个不同颜色的灯笼。我想改变这些灯笼,而你滚动鼠标轮。我做了点什么,但不太正常。如果你移动你的鼠标在灯笼图片上,并试图滚动,图像变化随机和重复。我不需要随意更改和重复,我有5个菜单标签,我认为每个菜单有特定的图像,而你滚动鼠标轮。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 20:16:52

代码语言:javascript
复制
const pageHeight = document.documentElement.scrollHeight - window.innerHeight,
      imgElement = document.getElementById('img'),
      images     = ['http://lorempixel.com/400/200/city/1',
                   'http://lorempixel.com/400/200/city/2',
                   'http://lorempixel.com/400/200/city/3',
                   'http://lorempixel.com/400/200/city/4'];
let   lastImage  = 0;

document.addEventListener('scroll', () => {
  let index = parseInt(document.documentElement.scrollTop / pageHeight * images.length);
  index = Math.min(index, images.length - 1); // Prevent few pixel overflow

  if (index !== lastImage) { // If we need to display different image
    lastImage = index;
    imgElement.src = images[lastImage];
  }
});
代码语言:javascript
复制
body {
  height: 700vh;
  margin: 0;
}
img {
  position: fixed;
  top: 0;
}
代码语言:javascript
复制
<img id="img" src="http://lorempixel.com/400/200/city/1"/>

引用another answer我自己的话

  • document.documentElement.scrollHeight - window.innerHeight是我们感兴趣的身高。它是整个文档的高度被视口高度降低了。我们为什么要减价?因为无论我们当前的滚动位置是什么,我们永远不会完全从文档中滚动,也就是说,我们总是会看到它的某些部分,该部分等于viewport的高度。
  • document.documentElement.scrollTop / pageHeight将相对于文档的高度给出我们的滚动位置,即我们滚动的文档的百分比。它将是从0到1范围内的数字,但我们感兴趣的范围是从0到4,因此乘以。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43285626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档