javascript - 当 div 位于视口(viewport)左侧时,jQuery 切换类

标签 javascript jquery html css

我有一个关于 jQuery 的小问题。 我正在尝试创建一个具有水平滚动布局的网站。使用此布局,我想知道当元素位于视口(viewport)左侧时是否可以切换类。当此 div 位于屏幕左侧时,我希望 div 更大,并在被视口(viewport)隐藏时返回到以前的大小。几乎像 iTunes 封面幻灯片效果。 http://www.jqueryrain.com/demo/jquery-coverflow/ . 我知道可以使用 ScrollTop 进行垂直滚动,使用 jQuery 进行偏移函数,但我没能找到一种方法来使用水平滚动。

这是html

<div id="wrap">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
</div>

这是CSS

html {
  height:100%;
}

body {
  height:100%;
  overflow-x:scroll;
  overflow-y:hidden;
  width: auto;
}

#wrap {
}

div {
  width:150px;
  height:150px;
  border:1px solid black;
  display:inline-block;
  white-space:nowrap;
}

这里是 jsfiddle http://jsfiddle.net/x8x8z76a/

如果有人能帮助我,我将不胜感激。 非常感谢。

最佳答案

我做了一个小FIDDLE在这里。

如果您想添加/删除检测精度,您可以轻松修改 nearOffsetPixels

JS:

var lastScrollLeft = 0;
var divOffsetRight = $('#9').offset().left + $('#9').width();
var nearOffsetPixels = 5;
$(window).scroll(function() {
    var documentScrollLeft = $(document).scrollLeft();
    var documentScrollRight;
    if (lastScrollLeft != documentScrollLeft) {
        lastScrollLeft = documentScrollLeft;
        documentScrollRight = documentScrollLeft + $(window).innerWidth();
        if((documentScrollRight > divOffsetRight - nearOffsetPixels) &&
          (documentScrollRight < divOffsetRight + nearOffsetPixels)) alert('reached');
    }
});

希望它有用!

关于javascript - 当 div 位于视口(viewport)左侧时,jQuery 切换类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27696201/

相关文章:

javascript - 没有特定单词的行匹配的正则表达式

javascript - 在 contentEditable <div> 上设置光标位置

jquery - 获取 img 请求的响应

javascript - 使用 JQuery 解析 JSON 嵌套数组

javascript - 循环遍历具有特定样式的所有元素

javascript - 将 d3.js 表添加到现有的 html

javascript - Angular Material md-选择多个水平对齐

javascript - 用 Angular 解析 html

javascript - 如何在 AngularJS 循环中调用第二个顺序 Promise 设计模式方法?

html - 使用内联 CSS 动画制作 HTML 横幅广告