gpt4 book ai didi

html - JQuery - 从其可滚动区域取消链接可拖动元素

转载 作者:行者123 更新时间:2023-12-03 23:46:10 36 4
gpt4 key购买 nike

我正在实现一个拖放功能,其中有一个可滚动的 div 容器(如底部栏),其中包含必须拖动到原始容器上方区域的元素 (div)。
drag unliked from scrollable area
但是,当我在拖放区域中拖放任何元素时,该元素仍与滚动区域“关联”,因为如果我向左或向右滚动底部栏,该元素会跟随并更改其在拖放区域中的位置。好像它仍然在底部栏上。
查询

$('#home .scroll_carrossel .nav-container .personBtn').draggable({
distance: 0,
drag: function(e, ui) {},
revert: function(dropped) {
var dropped = dropped && dropped[0].id == "dropped";
if(!dropped) {
for(var i=0; i < qtdObj; i++) {
posicao(this,'obj'+(i+1), 0, 0 );
if(i > 0){
posicao(this,'obj'+(i+1), 0, i*56.3 );
}
}
}
return !dropped;
}
});

$('#home .droppable').droppable({
accept: '.personBtn',
tolerance: 'intersect',
over: function(event, ui) {
var dragId = $(ui.draggable).attr("id");
$('.personBtn.ui-draggable-dragging').removeClass('backing').addClass('dropping').css("z-index", 10);
},
out: function(event, ui) {
var dragId = $(ui.draggable).attr("id");
$('.personBtn.ui-draggable-dragging').removeClass('dropping').addClass('backing');
},
drop: function(event, ui) {
$('.personBtn.ui-draggable-dragging').addClass('dropping').css("z-index", 0);
}
});

function posicao(tag, objeto, top, left){
if($(tag).attr('id') == objeto){
$(tag).data("uiDraggable").originalPosition = {
top: top, left: left
}
}
}
HTML:
<section id='home'>
<div class="droppable" id="dropped"></div>
<div id="lefty"></div>
<div class='scroll_carrossel'>
<div class="nav-container">
<div class="personBtn" id="obj1" ></div>
<div class="personBtn" id="obj2" ></div>
<div class="personBtn" id="obj3" ></div>
<div class="personBtn" id="obj4" ></div>
...
</div>
</div>
<div id="righty"></div>
</section>
CSS:
#home .droppable {
position: absolute;
width: 846px;
height: 400px;
top: 27px;
}

#home .scroll_carrossel {
width: 100%;
height: 60px;
background-color: #FFF;
position: absolute;
bottom: 15px;
display: flex;
overflow: visible;
}

#home .scroll_carrossel .nav-container{
width: 3384px;
height: 60px;
position: absolute;
left: 0;
top: 0;
}

#home .scroll_carrossel .nav-container .personBtn{
position: absolute;
width: 240px;
height: 240px;
margin: 5px;
display: inline-block;
}

/* for each element */
#home .scroll_carrossel .nav-container #obj1.personBtn {
background-image: url(img/objetos/obj1.png);
background-size: contain;
transform-origin: top left;
transform: scale(0.2);
}
/* and so on... */

#home .scroll_carrossel .nav-container .personBtn.dropping{
-webkit-animation: dropping 0.5s ease-out forwards;
animation: dropping 0.5s ease-out forwards;
transform-origin: center center;
}
@-webkit-keyframes dropping {
100%{transform: scale(1);}
}
@keyframes dropping {
100%{transform: scale(1);}
}

#home .scroll_carrossel .nav-container .personBtn.backing{
-webkit-animation: backing 0.5s ease-out forwards;
animation: backing 0.5s ease-out forwards;
transform-origin: top left;
}
@-webkit-keyframes backing {
100%{transform: scale(0.17);}
}
@keyframes backing {
100%{transform: scale(0.17);}
}
如何在不干扰已放置在上方区域中的元素位置的情况下滚动底部栏(以及位于其中的所有元素)?

最佳答案

您需要将可拖动元素附加到可放置容器:

drop: function(event, ui) {
$('.personBtn.ui-draggable-dragging').addClass('dropping').css("z-index", 0);
$(this).append(ui);
}

关于html - JQuery - 从其可滚动区域取消链接可拖动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62538403/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com