js控制div缩放和移动

 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>用键盘控制DIV</title> 
<style type="text/css"> 
html,body{overflow:hidden;} 
body{margin:0;padding:0;} 
pre{color:green;padding:10px 15px;background:#f0f0f0;border:1px dotted #333;font:12px/1.5 Courier New;margin:12px;} 
span{color:#999;} 
#box{position:absolute;top:50px;left:300px;width:100px;height:100px;background:red;} 
</style> 
<script type="text/javascript"> 
window.onload = function () 
{ 
var oBox = document.getElementById("box"); 
var bLeft = bTop = bRight = bBottom = bCtrlKey = false; 

setInterval(function () 
{ 
if (bLeft) 
{ 
oBox.style.left = oBox.offsetLeft - 10 + "px" 
} 
else if (bRight) 
{ 
oBox.style.left = oBox.offsetLeft + 10 + "px" 
} 

if (bTop) 
{ 
oBox.style.top = oBox.offsetTop - 10 + "px" 
} 
else if(bBottom) 
{ 
oBox.style.top = oBox.offsetTop + 10 + "px" 
} 
//防止溢出 
limit(); 
},30); 

document.onkeydown = function (event) 
{ 
var event = event || window.event; 
bCtrlKey = event.ctrlKey; 

switch (event.keyCode) 
{ 
case 37: 
bLeft = true; 
break; 
case 38: 
if(bCtrlKey) 
{ 
var oldWidth = oBox.offsetWidth; 
var oldHeight = oBox.offsetHeight; 

oBox.style.width = oBox.offsetWidth * 1.5 + "px"; 
oBox.style.height = oBox.offsetHeight * 1.5 + "px"; 

oBox.style.left = oBox.offsetLeft - (oBox.offsetWidth - oldWidth) / 2 + "px"; 
oBox.style.top = oBox.offsetTop - (oBox.offsetHeight - oldHeight) / 2 + "px"; 

break; 
} 
bTop = true; 
break; 
case 39: 
bRight = true; 
break; 
case 40: 
if(bCtrlKey) 
{ 
var oldWidth = oBox.offsetWidth; 
var oldHeight = oBox.offsetHeight; 

oBox.style.width = oBox.offsetWidth * 0.75 + "px"; 
oBox.style.height = oBox.offsetHeight * 0.75 + "px"; 

oBox.style.left = oBox.offsetLeft - (oBox.offsetWidth - oldWidth) / 2 + "px"; 
oBox.style.top = oBox.offsetTop - (oBox.offsetHeight - oldHeight) / 2 + "px"; 

break; 
} 
bBottom = true; 
break; 
case 49: 
bCtrlKey && (oBox.style.background = "green"); 
break; 
case 50: 
bCtrlKey && (oBox.style.background = "yellow"); 
break; 
case 51: 
bCtrlKey && (oBox.style.background = "blue"); 
break; 
} 

return false 
}; 
document.onkeyup = function (event) 
{ 
switch ((event || window.event).keyCode) 
{ 
case 37: 
bLeft = false; 
break; 
case 38: 
bTop = false; 
break; 
case 39: 
bRight = false; 
break; 
case 40: 
bBottom = false; 
break; 
} 
}; 
//防止溢出 
function limit() 
{ 
var doc = [document.documentElement.clientWidth, document.documentElement.clientHeight] 
//防止左侧溢出 
oBox.offsetLeft <=0 && (oBox.style.left = 0); 
//防止顶部溢出 
oBox.offsetTop <=0 && (oBox.style.top = 0); 
//防止右侧溢出 
doc[0] - oBox.offsetLeft - oBox.offsetWidth <= 0 && (oBox.style.left = doc[0] - oBox.offsetWidth + "px"); 
//防止底部溢出 
doc[1] - oBox.offsetTop - oBox.offsetHeight <= 0 && (oBox.style.top = doc[1] - oBox.offsetHeight + "px") 
} 
}; 
</script> 
</head> 
<body> 
<pre> 
红色方块为键盘操作区域,您可以进行如下操作: 
上:↑ 下:↓ 左:← 右:→ 
Ctrl + 1 : 背景变为绿色 
Ctrl + 2 : 背景变为黄色 
Ctrl + 3 : 背景变为蓝色 
Ctrl + ↑ : 放大 
Ctrl + ↓ : 缩小 
</pre> 
<div id="box"></div> 
</body> 
</html> 

用键盘控制DIV

 
红色方块为键盘操作区域,您可以进行如下操作: 
上:↑ 下:↓ 左:← 右:→ 
Ctrl + 1 : 背景变为绿色 
Ctrl + 2 : 背景变为黄色 
Ctrl + 3 : 背景变为蓝色 
Ctrl + ↑ : 放大 
Ctrl + ↓ : 缩小 

 

 

在Vue中,可以使用第三方库svg-pan-zoom来实现SVG图像的缩放移动。svg-pan-zoom是一个独立的JavaScript库,可以轻松与Vue集成。以下是在Vue中使用svg-pan-zoom实现SVG缩放移动的基本步骤: 1. 安装svg-pan-zoom库 可以使用npm或yarn来安装svg-pan-zoom库。 ``` npm install svg-pan-zoom --save ``` 2. 导入svg-pan-zoom库 在Vue组件中导入svg-pan-zoom库。 ```javascript import svgPanZoom from 'svg-pan-zoom'; ``` 3. 在Vue组件中创建SVG元素 使用SVG元素来创建SVG图像,并将其添加到Vue组件中。 ```html <template> <div> <svg ref="svg"> <circle cx="50" cy="50" r="40" fill="red"></circle> </svg> </div> </template> ``` 4. 初始化svg-pan-zoom 在Vue组件的mounted钩子函数中初始化svg-pan-zoom库。 ```javascript mounted() { const svg = this.$refs.svg; const panZoom = svgPanZoom(svg, { zoomEnabled: true, controlIconsEnabled: true, fit: true, center: true, minZoom: 0.1, maxZoom: 10, zoomScaleSensitivity: 0.2, panEnabled: true, contain: false, refreshRate: 'auto', beforePan: null, onPan: null, onZoom: null }); } ``` 在上述代码中,我们使用svg-pan-zoom的构造函数来初始化库,并将SVG元素传递给它。通过传递选项参数,我们可以自定义缩放和平移的行为。 5. 在Vue组件中使用svg-pan-zoom 可以使用svg-pan-zoom提供的API方法来实现SVG图像的缩放和平移。 ```javascript // 缩放到指定比例 panZoom.zoom(2); // 缩放到原始比例 panZoom.resetZoom(); // 平移到指定位置 panZoom.pan({x: 50, y: 50}); // 平移到原始位置 panZoom.resetPan(); ``` 以上就是在Vue中使用svg-pan-zoom实现SVG缩放移动的基本步骤。注意,这只是一个简单的示例,实际应用中可能需要更复杂的代码来实现更高级的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值