javascript 拖动层
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Drag and Drop example</title>
<style type="text/css">
#a {height:50px;width:50px;left:10px;top:50px;border:1px solid pink;position:absolute;background-color:#EFEFFF;}
#b {height:50px;width:50px;left:70px;top:50px;border:1px solid pink;position:absolute;background-color:#FFEFFE;}
</style>
<script type="text/javascript">
/*
Copyright Robert Nyman, http://www.robertnyman.com
Free to use if this text is included
// modified slightly based on Prototype
*/
function getStyle(oElm, strCssRule){
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle){
var css = document.defaultView.getComputedStyle(oElm, null);
strValue = css ? css.getPropertyValue(strCssRule) : null;
}
else if(oElm.currentStyle){
strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
return p1.toUpperCase();
});
strValue = oElm.currentStyle[strCssRule];
}
return strValue;
}
function Draggable(el)
{
var xDelta = 0, yDelta = 0;
var xStart = 0, yStart = 0;
// remove the events
function enddrag()
{
document.onmouseup = null;
document.onmousemove = null;
}
// fire each time it's dragged
function drag(e)
{
e = e || window.event;
xDelta = xStart - parseInt(e.clientX);
yDelta = yStart - parseInt(e.clientY);
xStart = parseInt(e.clientX);
yStart = parseInt(e.clientY);
el.style.top = (parseInt(el.style.top) - yDelta) + 'px';
el.style.left = (parseInt(el.style.left) - xDelta) + 'px';
}
// initiate the drag
function md(e)
{
e = e || window.event;
xStart = parseInt(e.clientX);
yStart = parseInt(e.clientY);
el.style.top = parseInt(getStyle(el,'top')) + 'px';
el.style.left = parseInt(getStyle(el,'left')) + 'px';
document.onmouseup = enddrag;
document.onmousemove = drag;
return false;
}
// tie it into the element
el.onmousedown = md;
}
window.onload = function()
{
new Draggable(document.getElementById('a'));
new Draggable(document.getElementById('b'));
}
</script>
</head>
<body>
<div id="a">test</div>
<div id="b">test</div>
</body>
</html>
<html lang="en">
<head>
<title>Drag and Drop example</title>
<style type="text/css">
#a {height:50px;width:50px;left:10px;top:50px;border:1px solid pink;position:absolute;background-color:#EFEFFF;}
#b {height:50px;width:50px;left:70px;top:50px;border:1px solid pink;position:absolute;background-color:#FFEFFE;}
</style>
<script type="text/javascript">
/*
Copyright Robert Nyman, http://www.robertnyman.com
Free to use if this text is included
// modified slightly based on Prototype
*/
function getStyle(oElm, strCssRule){
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle){
var css = document.defaultView.getComputedStyle(oElm, null);
strValue = css ? css.getPropertyValue(strCssRule) : null;
}
else if(oElm.currentStyle){
strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
return p1.toUpperCase();
});
strValue = oElm.currentStyle[strCssRule];
}
return strValue;
}
function Draggable(el)
{
var xDelta = 0, yDelta = 0;
var xStart = 0, yStart = 0;
// remove the events
function enddrag()
{
document.onmouseup = null;
document.onmousemove = null;
}
// fire each time it's dragged
function drag(e)
{
e = e || window.event;
xDelta = xStart - parseInt(e.clientX);
yDelta = yStart - parseInt(e.clientY);
xStart = parseInt(e.clientX);
yStart = parseInt(e.clientY);
el.style.top = (parseInt(el.style.top) - yDelta) + 'px';
el.style.left = (parseInt(el.style.left) - xDelta) + 'px';
}
// initiate the drag
function md(e)
{
e = e || window.event;
xStart = parseInt(e.clientX);
yStart = parseInt(e.clientY);
el.style.top = parseInt(getStyle(el,'top')) + 'px';
el.style.left = parseInt(getStyle(el,'left')) + 'px';
document.onmouseup = enddrag;
document.onmousemove = drag;
return false;
}
// tie it into the element
el.onmousedown = md;
}
window.onload = function()
{
new Draggable(document.getElementById('a'));
new Draggable(document.getElementById('b'));
}
</script>
</head>
<body>
<div id="a">test</div>
<div id="b">test</div>
</body>
</html>
欢迎沟通及共同进步
QQ:1441299
Email:1441299@qq.com
越折腾越快乐!
分类:
前端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端