JQuery:将元素滚动到视口中
我想做“ 滚动到 ”的反面:也就是说,我不想滚动到div,而是希望div滚动到我。 “我”是以下行之一(twitter bootstrap row
):
+-------------+-----------+ +-------------+-----------+ +-------------+ | +-------------+ | +---click-----+ div | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+-----------+ +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+-----------+ +-------------+ | +-------------+ | +-------------+ | +---click-----+ div | +-------------+ | +-------------+ | +-------------+ | +-------------+ | +-------------+-----------+ +-------------+-----------+
请参阅,当我单击左下方的一行时,视口会滚动到内容div。 我想要相反的:我想要这个div(一个即时创建的twitter bootstrap col-nn
,而不是在它自己的高容器内语义上“滑动”)滚动到位。
因此,在点击时, row
必须以某种方式检测到div
不在视线范围内。 这似乎是可能的; 但是移动的div部分怎么样?
Row title row row row row row
THIS IS THE DIV
我构建了这个jsFiddle,以说明如何实现你所说的内容,即如果我理解你想要的东西。 我使用CSS3过渡来促进实际动画,因为在更改DIV
的“top”属性时超时为0ms而触发。 在我提供的示例中,我将DIV
的顶部对齐到所单击的行的顶部。 显然,如果你愿意,可以将它改为浮动在中心(通过做一些数学运算)。
希望它指出你正确的方向!
HTML
正如您的问题所提供的……
CSS
#details { transition: top 0.2s ease-in-out; }
JavaScript的
$(document).ready(function () { $("#details").css("top", $(".my_row:first").offset().top); $(".my_row").click(function () { var row = $(this); setTimeout(function () { $("#details").css("top", row.offset().top); }, 0); }); });