【问题标题】:Infinite looping columns in both directions双向无限循环列
【发布时间】:2013-01-05 22:03:18
【问题描述】:

我一直在研究两栏网站,当您滚动时:A 栏上升,B 栏下降。我实现了无限滚动,但我想知道的是:是否可以将一列克隆/附加到另一列,例如在一定的滚动长度上:

一旦滚动出视图:

  • A 列框将移动到 B 列末尾
  • B 列框将移至 A 列末尾

技术上仍然是无限的,但是将盒子从一列循环到另一列 - 将一个溢出到另一个并再次返回。

这种方法不好,还是只在每一列上使用无限滚动更好?什么是绊倒我,因为我是 JS 和 jQuery 的新手,是逻辑,以及实现这一点的最佳方法是什么。

*仅以图像为例,盒子的数量可能要高得多,例如每列 10 个。

到目前为止我的代码:http://jsfiddle.net/djsbaker/vqUq7/1/

我目前的克隆/追加尝试:

var ele = document.getElementById("box");
var arr = jQuery.makeArray(ele);
var data = (ele)[0];

$(window).scroll(function() {  
  if ( $(window).scrollTop() >= 1000) {
    $(data).clone().appendTo('body');
  } else {
    ..
  }
});

【问题讨论】:

  • 我至少从你的代码中删除了那个凌乱的 jquery....jsfiddle.net/oceog/KPHgv
  • 不太明白你想做什么,如果我滚动到页面顶部,你想将 A 列附加到 B 列的到吗?如果我滚动到底部?
  • @eicto 很抱歉,我在让 jQuery 与 Prototype 一起工作时做噩梦 :(
  • 滚动的pater noster
  • 这是一个非常酷的想法。我猜你只需要在你击中滚动的任一端时继续移动列。不断追加和扩展长度是一个坏主意,而且没有必要。

标签: javascript jquery html infinite-scroll multiple-columns


【解决方案1】:

无限滚动。完成:the Fiddle http://jsfiddle.net/PgMUP/14/

你已经设置好了一切。

代码(整理了一点):

var num_children = $('#up-left').children().length;
var child_height = $('#up-left').height() / num_children;
var half_way = num_children * child_height / 2;
$(window).scrollTop(half_way);
var ul = '#up-left'; 
var dr = '#down-right'; 
function crisscross() {
    $(ul).css('bottom', '-' + window.scrollY + 'px');
    $(dr).css('bottom', '-' + window.scrollY + 'px');
    var ulc = $(ul).children();
    var drc = $(dr).children();
    var corners = [ulc.first(),ulc.last(),drc.last(),drc.first()];
    if (window.scrollY > half_way ) {
        $(window).scrollTop(half_way - child_height);
        corners[2].appendTo(ul);    
        corners[0].prependTo(dr);
    } else if (window.scrollY < half_way - child_height) {
        $(window).scrollTop(half_way);
        corners[1].appendTo(dr);
        corners[3].prependTo(ul);
    }
}
$(window).scroll(crisscross);

它按照您的图表所示工作。闪烁是因为触发了浏览器回流造成的。我相信一个更好的方法是简单地交换两个div之间的属性,而不是分离然后插入div。说出你在其中的任何内容,图像、文本、颜色、css 类,只需使用大型通用交换功能进行交换即可。然后,由于容器本身将保持固定。

我添加了包含 div 并交换了内部 div,因此保留了列的大小结构,但这不起作用。

【讨论】:

  • 你假设盒子的高度和数量没有改变(OP:“盒子的数量可能要高得多,例如每列 10 个”)。
  • 并非如此。他们可以很好地改变。您只需将 1500 和 1000 之间的差值更新为框的高度。我会把它放进去,谢谢。
  • Uhmmm .. 我错过了那个盒子一个被转移到右边......我看到的只是绿色盒子,但问题是将它移动到右边,所以红色应该出现在右边一个
  • 谢谢。目前正在玩小提琴。如果它是双向的,会有多邪恶?
  • @DBUK 我同意。我是这样弄的。我是如何滚动的。
猜你喜欢
  • 2017-01-09
  • 2018-10-11
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多