Javascript 粘性边缘-在旋转木马内获取单元格的边缘

Javascript 粘性边缘-在旋转木马内获取单元格的边缘,javascript,jquery,Javascript,Jquery,我正在开发一个应用程序,它有一个自定义的旋转木马,并且希望能够直观地移动项目的内部内容,使其始终处于可见状态,直到项目真正超出范围 ^因此,当.item移到左侧位置时。您将使用什么技术来检测边以动态定位.unit padding left值?因此,即使项目开始移出位置,该单元格内的文本始终可见 //最新小提琴 $(文档).ready(函数(){ //console.log(“准备就绪!”); 函数IsElementViewPort(el){ //为使用jQuery的用户提供特别奖励 if(jQ

我正在开发一个应用程序,它有一个自定义的旋转木马,并且希望能够直观地移动项目的内部内容,使其始终处于可见状态,直到项目真正超出范围

^因此,当.item移到左侧位置时。您将使用什么技术来检测边以动态定位.unit padding left值?因此,即使项目开始移出位置,该单元格内的文本始终可见

//最新小提琴

$(文档).ready(函数(){
//console.log(“准备就绪!”);
函数IsElementViewPort(el){
//为使用jQuery的用户提供特别奖励
if(jQuery的类型==“函数”&&el实例jQuery){
el=el[0];
}
var rect=el.getBoundingClientRect();
返回(
rect.top>=0&&
rect.left>=0&&

使用jquery进行此操作让我有点痛苦,因为我认为最好使用requestAnimationFrame…但是,为了回答您的具体问题,可以使用类似的方法(为了解释这一点,我特别将两个聚合值作为单独的变量):


我对你们的代码做了一些调整——并没有检查标签是否在视口中,而是检查标签是否从左侧移出视口

if ($(labelGroups[i]).offset().left < 0) {
  $(labelGroups[i]).closest(".item").addClass("stick");
} else {
  $(labelGroups[i]).closest(".item").removeClass("stick");
if($(labelGroups[i]).offset().left<0){
$(labelGroups[i])。最近(“.item”).addClass(“stick”);
}否则{
$(labelGroups[i])。最近(“.item”)。removeClass(“stick”);
除此之外,我还在
compensateadding()
函数中添加了一些条件和偏移值


请参考此内容。

我刚刚更新了它,创建了一个类似的标记和方法-我在实际应用程序中使用的代码位。我有一些isElementvisible的东西,可以用来指示元素正在隐藏-以激活左填充形式-这是我正在寻找的东西-但它仍然不是s桌子。最新的卡诺塞满了多行和不同宽度的物品。我该如何稳定它这是个伟大的人——如果它走到尽头没有空间了——你能解开它吗?@TheOldCounty我不明白你说的是什么——你能解开它吗?我已经把木块粘在了边缘,这样它就不会与其他幻灯片重叠。检查t他的——我的意思是——当它快要被压碎的时候,它就被释放了。但是没关系——我认为这很好
$(document).ready(function() {
  function animateMe(){
    $(".item").animate({
      left: "-=5"
    }, 1000, function() {
      amountMovedLeft += 5;
      if(amountMovedLeft >= amountUntilUnitHitsLeft){
        $(".unit").animate({
          right: "+=5"
        }
      }
    });
  }

  var amountMovedLeft = 0;
  var unitWidthHalf = $('.unit').width()/2;
  var itemWidthHalf = $('.item').width()/2;
  var amountUntilUnitHitsLeft = itemWidthHalf - unitWidthHalf;
  setInterval(function(){ 
    animateMe();
  }, 1000);
});
if ($(labelGroups[i]).offset().left < 0) {
  $(labelGroups[i]).closest(".item").addClass("stick");
} else {
  $(labelGroups[i]).closest(".item").removeClass("stick");