gpt4 book ai didi

javascript - 在较小的父 div 内包含一个较大的可拖动子 div

转载 作者:行者123 更新时间:2023-12-03 03:27:00 25 4
gpt4 key购买 nike

我想防止较大的 div 被拖出较小的 div,就像 facebook 对其个人资料图片所做的那样。有谁知道我将如何做到这一点?

祝劳伦斯一切顺利

在下面的链接中,我举了一个例子来说明我的意思。

draggable_outside

PS:抱歉,我没有在代码片段中使用 JS 部分,这是我的第一篇文章。我在 HTML 部分将其编写为脚本。

.wrapper {
width: 400px;
height: 300px;
display: flex;
align-items: center;
justify-content: center;
}

.parent {
background: gray;
display: block;
width: 100px;
height: 100px;
}

.child {
position: absolute;
width: 200px;
height: 200px;
display: block;
background: blue;
opacity: 0.5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$('.child').draggable();
});
</script>

<div class="wrapper">
<div class="parent">
<div class="child">
</div>
</div>
</div

最佳答案

您可以使用 jQuery draggable 函数,如下所示。在拖动事件中,如果 x 和 y 跨越边界,我们将重置它们。

参见 fiddle here

.wrapper {
width: 400px;
height: 300px;
display: flex;
align-items: center;
justify-content: center;
}

.parent {
background: gray;
display: block;
width: 100px;
height: 100px;
}

.child {
position: absolute;
width: 200px;
height: 200px;
display: block;
background: blue;
opacity: 0.5;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$('.child').draggable(
{

drag: function(event, ui) {
var offset = $(this).offset();
var xPos = offset.left;
var yPos = offset.top;
$('#posX').text('x: ' + xPos);
$('#posY').text('y: ' + yPos);
// console.log(xPos);
// console.log(yPos);
if(ui.position.left>250)
{
ui.position.left=250;
}
if(ui.position.left<-40)
{
ui.position.left=-40;
}
if(ui.position.top<-90)
{
ui.position.top=-90;
}

if(ui.position.top>200)
{
ui.position.top=200;
}

}
});

});





</script>
<div class="wrapper">
<div class="parent">
<div class="child">
</div>
</div>
</div

关于javascript - 在较小的父 div 内包含一个较大的可拖动子 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46279977/

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