gpt4 book ai didi

javascript - 使用 javascript 移动元素

转载 作者:行者123 更新时间:2023-11-30 18:40:06 25 4
gpt4 key购买 nike

我构建了一个可以移动 SVG 元素的小型 Javascript 应用程序,现在我尝试使用图像元素而不是 SVG 形状来重建它作为控件。

Javascript + jQuery

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var panning = false;
var direction;

function startPan(dir){
panning = true;
direction = dir;
}

function stopPan(){
panning = false;
}

function pan(){
var item = $("#moveme");
var x = item.position().left;
var y = item.position().top;
var amount = 1;
if(direction == "left"){
x -= amount;
} else if (direction == "right"){
x += amount ;
} else if (direction == "up"){
y -= amount;
} else if (direction == "down"){
y += amount;
}

item.css("left", x);
item.css("top", y);
}

function panLoop(){
if(panning == true){
pan();
}
}
setInterval(panLoop,100);
});
</script>

<style>
.button:hover{
opacity: 0.5;
}

.button{
position: absolute;
}

.compass{
position: absolute;
}

div.pan{
position: absolute;
width: 90px;
height: 90px;
}

#moveme{
position: absolute;
top: 200px;
left: 200px;
}
</style>

<div class="pan">
<img class="button"
style="top: 0px; left: 30px;"
src="images/tu.png"
onmouseover="startPan('up')"
onmouseout="stopPan()" />
<img class="button"
style="top: 30px; right: 0px;"
src="images/tr.png"
onmouseover="startPan('right')"
onmouseout="stopPan()" />

<img class="button"
style="bottom: 0px; left: 30px;"
src="images/td.png"
onmouseover="startPan('down')"
onmouseout="stopPan()" />

<img class="button"
style="top: 30px; left: 0px;"
src="images/tl.png"
onmouseover="startPan('left')"
onmouseout="stopPan()" />

<img class="compass"
style="top: 21px; left: 21px;"
src="images/c.png"/>

</div>

<div id="moveme">
HELLo
</div>

但是它没有调用鼠标悬停事件,我不明白为什么....

这是使用 SVG 的版本:

Working version using Javascript + SVG

工作版本: Working without SVG

最佳答案

请参阅此处 http://jsbin.com/ecihij/edit#source

当你编写你的函数时,你不需要将它们放在 jQuery 文档的 Ready 部分

Jarred 是对的,您还应该使用 jQuery 事件处理程序,请参阅此处更新的示例 http://jsbin.com/ecihij/2/edit .

下面是代码

HTML

<!DOCTYPE html>
<html>
<head>


<style>
.button:hover{
opacity: 0.5;
}

.button{
position: absolute;
}

.compass{
position: absolute;
}

div.pan{
position: absolute;
width: 90px;
height: 90px;
}

#moveme{
position: absolute;
top: 200px;
left: 200px;
}
</style>

<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<div class="pan">


<p class="button bup" style="top: 0px; left: 30px;" > up</p>

<p class="button bright" syle="top: 30px; right: 0px;" >right </p>


<p class="button bdown" style="bottom: 0px; left: 30px;">down </p>

<p class="button bleft" style="top: 30px; left: 0px;" >left </p>

<p class="compass" style="top: 21px; left: 21px;">compass </p>

</div>

<div id="moveme">
HELLo
</div>
</body>
</html>

JavaScript

         var panning = false;
var direction;

function startPan(dir){
panning = true;
direction = dir;
}

function stopPan(){
panning = false;
}

function pan(){
var item = $("#moveme");
var x = item.position().left;
var y = item.position().top;
var amount = 1;
if(direction == "left"){
x -= amount;
} else if (direction == "right"){
x += amount ;
} else if (direction == "up"){
y -= amount;
} else if (direction == "down"){
y += amount;
}

item.css("left", x);
item.css("top", y);
}

function panLoop(){
if(panning === true){
pan();
}
}

setInterval(panLoop,100);

$(document).ready(function(){


$('.bup').mouseover(function(){ startPan('up'); }).mouseout(stopPan);
$('.bright').mouseover(function(){ startPan('right'); }).mouseout(stopPan);
$('.bleft').mouseover(function(){ startPan('left'); }).mouseout(stopPan);
$('.bdown').mouseover(function(){ startPan('down'); }).mouseout(stopPan);



});

关于javascript - 使用 javascript 移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7100817/

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