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