使用wheel事件更改类

时间:2019-07-19 07:51:30

标签: javascript

我希望使用wheel事件触发元素颜色的更改。颜色的变化是通过循环上课而发生的。类变化仅应发生在增量差大于50时大于50或小于-50。交互作用应该感觉像是一种滑动更改为另一种颜色,因此,类别更改应仅在最大差异出现在三角洲或“峰值”,反之则是“波谷”和底部。我在下面概述了一个峰值。

delta: 1
delta: 6
delta: 21
delta: 42
delta: 48
delta: 67
delta: 77
delta: 79    <————— HERE
delta: 77
delta: 75
delta: 72
delta: 70
delta: 66
delta: 64
delta: 59
delta: 55
delta: 51
delta: 47
delta: 45
delta: 41
delta: 37
delta: 35
delta: 32
delta: 29
delta: 26
delta: 24
delta: 22
delta: 20
delta: 19
delta: 17
delta: 16
delta: 14
delta: 13
delta: 12
delta: 11
delta: 10
delta: 9
delta: 8
delta: 7
delta: 6
delta: 5
delta: 4
delta: 3
delta: 2
delta: 1

当前它的工作方式是:

delta: 1
delta: 6
delta: 21
delta: 42
delta: 48
delta: 67    <————— HERE
delta: 77    <————— HERE
delta: 79    <————— HERE
delta: 77    <————— HERE
delta: 75    <————— HERE...
delta: 72
delta: 70
delta: 66
delta: 64
delta: 59
delta: 55
delta: 51
delta: 47
delta: 45
delta: 41
delta: 37
delta: 35
delta: 32
delta: 29
delta: 26
delta: 24
delta: 22
delta: 20
delta: 19
delta: 17
delta: 16
delta: 14
delta: 13
delta: 12
delta: 11
delta: 10
delta: 9
delta: 8
delta: 7
delta: 6
delta: 5
delta: 4
delta: 3
delta: 2
delta: 1

我该如何实现?任何帮助将不胜感激。

const container = document.querySelector('main')
const classes = ['white', 'black', 'purple', 'blue', 'orange']

let index = 0
let lastDelta
let topDelta

function changeColour(event) {
    event.preventDefault()
    console.log(`delta: ${event.deltaY}`)
    // console.log(`index: ${index}`)
    if (event.deltaY > 50) {
        if (index === index.length - 1) {
            index = 0
        } else {
            index++
        }
        container.classList = classes[index]
    } else if (event.deltaY < -50) {
        if (index === 0) {
            index = index.length - 1
        } else {
            index++
        }
        container.classList = classes[index]
    } else {
        event.deltaY = 0
    }

}

container.addEventListener('wheel', changeColour)
main {
  height: 100px;
  width: 100px;
  border: 1px solid black;
}

.white {
  background-color: white;
}
.black {
  background-color: black;
}
.purple {
  background-color: purple;
}
.blue {
  background-color: blue;
}
.orange {
  background-color: orange;
}
<main>

</main>

0 个答案:

没有答案