javascript - 更改滚动条上的背景颜色

标签 javascript jquery scroll position background-color

我想要创建一个如下页 http://readymag.com/ 所示的效果背景颜色根据滚动位置而变化,但不知道如何去做,我无法理解他们的代码。

我见过一些从一种颜色更改为另一种颜色的示例,但我不确定如何使用多种颜色进行更改。 (我希望能够指定每种颜色)

任何帮助将不胜感激。

迈克尔。

最佳答案

这里有一个简单的方法:

HTML

<body onscroll="scroll()">
  ...
</body>

JavaScript

// HSL Colors
var colors = [
  [0, 100, 50],
  [113, 75, 25],
  [240, 87, 40],
  [328, 24, 40]
],

el = document.getElementsByTagName('body')[0],   // Element to be scrolled
length = colors.length,                          // Number of colors
height = Math.round(el.offsetHeight / length);   // Height of the segment between two colors

function scroll() {
  var i = Math.floor(el.scrollTop / height),     // Start color index
      d = el.scrollTop % height / height,        // Which part of the segment between start color and end color is passed
      c1 = colors[i],                            // Start color
      c2 = colors[(i+1)%length],                 // End color
      h = c1[0] + Math.round((c2[0] - c1[0]) * d),
      s = c1[1] + Math.round((c2[1] - c1[1]) * d),
      l = c1[2] + Math.round((c2[2] - c1[2]) * d);
  el.style['background-color'] = ['hsl(', h, ', ', s+'%, ', l, '%)'].join('');
}

工作示例:http://jsbin.com/elolud/2/edit

关于javascript - 更改滚动条上的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844723/

相关文章:

javascript - 单击后隐藏下拉菜单在重新悬停后不显示

php - 带有 Bootstrap 的 PHP 的 HTML 菜单看起来不一样

listview - 如何在 flutter 中将 ListView 滚动到底部

angularjs - 如何从底部开始滚动列表?

javascript - Paperscope 和 paperjs

javascript - 使用计数器提交后重定向

javascript - 使用 scrollTop 替换粘性导航栏以获得 60 FPS 性能的替代方案?

javascript - 在jQuery中如何将被 "mouseover"事件检测到的优先级赋予子元素

javascript - 如何使用 jQuery UI 检测我拖到窗口外的情况?

html - 当DIV没有足够的空间但保持DIV居中时,如何使滚动条出现?