在滚动时更改视图中特定div的背景颜色的最佳方法是什么?

近点

我正在创建一个广告产品的布局,该产品的功能位于div栏内,该栏占据了浏览器的整个宽度。

我想要它,以便用户滚动时,屏幕中心的div可以将背景颜色从白色更改为浅灰色,以便专注于该功能。然后,当用户继续使用下一个功能时,返回白色。例子:

在此处输入图片说明

我使用jquery scrollTop()来找到滚动位置,然后根据滚动位置设置应突出显示的功能。问题是调整浏览器大小时,功能div会更改高度,而我设置为最大宽度的滚动位置不起作用!以下是我用来生成过渡的相关咖啡脚本。无论屏幕大小或浏览器大小如何,我都如何使它起作用?

$(document).ready ->
  scroll_pos = 0
  $(document).scroll ->
    scroll_pos = $(this).scrollTop()
    scrollBottom = $(window).scrollTop() + $(window).height()

    if scroll_pos < 300
      $("#featureOne").css "background-color", "white"
      $("#featureOne").css "-webkit-box-shadow", "none"
    else if scroll_pos > 300 and scroll_pos < 730
      $("#featureOne").css "background-color", "#eee"
      $("#featureOne").css "-webkit-box-shadow", "0px 5px 15px 5px #eee"
      $("#featureTwo").css "background-color", "white"
      $("#featureTwo").css "-webkit-box-shadow", "none"
    else if scroll_pos > 730 and scroll_pos < 1150
      $("#featureOne").css "background-color", "white"
      $("#featureOne").css "-webkit-box-shadow", "none"
      $("#featureTwo").css "background-color", "#eee"
      $("#featureTwo").css "-webkit-box-shadow", "0px 5px 15px 5px #eee"
      $("#featureThree").css "background-color", "white"
      $("#featureThree").css "-webkit-box-shadow", "none"
    else if scroll_pos > 1150 and scroll_pos < 1700
      $("#featureTwo").css "background-color", "white"
      $("#featureTwo").css "-webkit-box-shadow", "none"
      $("#featureThree").css "background-color", "#eee"
      $("#featureThree").css "-webkit-box-shadow", "0px 5px 15px 5px #eee"
      $("#featureFour").css "background-color", "white"
      $("#featureFour").css "-webkit-box-shadow", "none"
    else if scroll_pos > 1700 and scroll_pos < 2050
      $("#featureThree").css "background-color", "white"
      $("#featureThree").css "-webkit-box-shadow", "none"
      $("#featureFour").css "background-color", "#eee"
      $("#featureFour").css "-webkit-box-shadow", "0px 5px 15px 5px #eee"
      $("#featureFive").css "background-color", "white"
      $("#featureFive").css "-webkit-box-shadow", "none"
    else if scroll_pos > 2050 and scroll_pos < 2450
      $("#featureFour").css "background-color", "white"
      $("#featureFour").css "-webkit-box-shadow", "none"
      $("#featureFive").css "background-color", "#eee"
      $("#featureFive").css "-webkit-box-shadow", "0px 5px 15px 5px #eee"
      $("#featureSix").css "background-color", "white"
      $("#featureSix").css "-webkit-box-shadow", "none"
    else if scroll_pos > 2450 and scroll_pos < 2810
      $("#featureFive").css "background-color", "white"
      $("#featureFive").css "-webkit-box-shadow", "none"
      $("#featureSix").css "background-color", "#eee"
      $("#featureSix").css "-webkit-box-shadow", "0px 5px 15px 5px #eee"
近点

我想到了。因此,我删除了@mu_is_too_short建议我的所有讨厌的.css调用,然后使用此示例中给出的功能:

滚动后检查元素是否可见

这是我的coffescript解决方案:

isScrolledIntoView = (elem) ->
  console.log(elem)
  docViewTop = $(window).scrollTop()
  docViewBottom = docViewTop + $(window).height()
  elemTop = $(elem).offset().top
  elemBottom = elemTop + $(elem).height()
  console.log("elemBottom: " + elemBottom + " docViewBottom: " + docViewBottom + " elemTop: " + elemTop + " docViewTop: " + docViewTop)
  ((elemBottom <= (docViewBottom - 300)) && (elemTop >= (docViewTop)))


shouldHighlight = (elem) ->
  if isScrolledIntoView(elem)
      $(elem).addClass "addHighlight" 
      console.log('test')
    else 
      $(elem).removeClass "addHighlight"


$(document).ready ->
  scroll_pos = 0
  $(document).scroll ->
    scroll_pos = $(this).scrollTop()
    scrollBottom = $(window).scrollTop() + $(window).height()

    shouldHighlight("#featureOne")
    shouldHighlight("#featureTwo")
    shouldHighlight("#featureThree")
    shouldHighlight("#featureFour")
    shouldHighlight("#featureFive")
    shouldHighlight("#featureSix")
    shouldHighlight("#featureSeven")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

滚动时更改徽标div背景颜色

当用户在表格视图中向下滚动时,如何将UINavigationBar背景颜色从透明更改为红色

在视图中测试模块的最佳方法是什么?

滚动到特定的div类时更改div颜色

如何更改列表视图中的背景颜色

滚动超过特定div时更改菜单颜色

滚动超过特定div时如何使粘性导航更改颜色?

jQuery:当div达到特定高度时更改背景颜色

在滚动上更改div的背景颜色

滚动时如何更改背景颜色?

滚动时更改导航栏的背景颜色

页面滚动时更改标题背景颜色

在单个视图中组织多个ASP .Net MVC视图模型的最佳方法是什么?

更改NSView背景颜色的最佳方法

Django,抓取:在抓取时检测“更改”的最佳方法是什么?

Django,剪贴:在剪贴时检测“更改”的最佳方法是什么?

当用户在颜色选择器中选择特定颜色时,如何更改div的背景颜色?

当用户在滚动视图中滚动时,更改RelativeLayout的高度

在 MVC 程序的视图中将类型转换为列表的最佳方法是什么?

在相同颜色的背景上滚动时如何更改textView的颜色?

如何动态更改列表视图中的背景颜色

如果滚动时可见div,则对主体进行动画处理并更改其背景颜色

SwiftUI更改滚动视图内按钮的背景颜色

检测应用程序何时进入我的视图背景的最佳方法是什么?

点击事件时更改div背景颜色

更改活动时的最佳做法是什么?

在Android上逐像素更改png颜色的最佳方法是什么?

vim-根据模式设置状态线颜色以进行更改的最佳方法是什么

vim-根据模式设置状态线颜色以进行更改的最佳方法是什么