Javascript 具有固定表面积的可调整大小和可拖动div
是否可以制作具有固定表面积的可调整大小和可拖动的div 示例:我有一个表面积为10000px²(100x100px)的正方形div,然后我将宽度(鼠标在角落或边缘)更改为50px,高度现在应自动更改为200px,以便表面积保持10000px² 然后我想把它拖到整个页面,重新调整大小等等Javascript 具有固定表面积的可调整大小和可拖动div,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,是否可以制作具有固定表面积的可调整大小和可拖动的div 示例:我有一个表面积为10000px²(100x100px)的正方形div,然后我将宽度(鼠标在角落或边缘)更改为50px,高度现在应自动更改为200px,以便表面积保持10000px² 然后我想把它拖到整个页面,重新调整大小等等 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQ
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Draggable - Default functionality</title>
<link rel="stylesheet"
href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-
ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-
ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<style>
#draggable { width: 100px; height: 100px; padding: 0.5em; border:
1px solid;}
</style>
<script>
$(function() {
$( "#draggable" ).draggable().resizable();
});
</script>
</head>
<body>
<div id="draggable" class="ui-widget-content">
<p>Drag me around</p>
</div>
</body>
</html>
jQuery UI可拖动-默认功能
#可拖动{宽度:100px;高度:100px;填充:0.5em;边框:
1px固体;}
$(函数(){
$(“#可拖动”).draggable().resizeable();
});
把我拖来拖去
好的,这是代码,我有可调整大小和可拖动的div,但现在我需要固定表面积(例如10000px²),正如我前面提到的…您可以使用jquery的UI来完成所有这些 用于允许拖动, 用于允许调整大小 使用,您可以让jquery修改div,使其符合所需的任何高度/宽度规则。尝试以下操作:
(function(draggable) {
var elm = document.getElementById(draggable);
elm.onmousedown = drag;
function stop() {
document.onmouseup = null;
document.onmousemove = null;
}
function drag(e) {
if (e.target == elm) {
var absX = e.clientX;
var absY = e.clientY;
var left = parseInt(getComputedStyle(elm).left, 10);
var top = parseInt(getComputedStyle(elm).top, 10);
var relX = absX - left;
var relY = absY - top;
document.onmouseup = stop;
document.onmousemove = function(e) {
var absX = e.clientX;
var absY = e.clientY;
elm.style.left = absX - relX + "px";
elm.style.top = absY - relY + "px";
}
}
}
})("box");
(function(resizeable) {
var elm = document.getElementById(resizeable);
var wHandler = elm.childNodes[1];
var hHandler = elm.childNodes[3];
wHandler.onmousedown = resizeW;
hHandler.onmousedown = resizeH;
function stop() {
elm.style.cursor = "";
document.body.style.cursor = "";
document.onmouseup = null;
document.onmousemove = null;
}
var w = 100;
var h = 100;
var area = w * h;
function resizeW(e) {
elm.style.cursor = "w-resize";
document.body.style.cursor = "w-resize";
var left = parseInt(window.getComputedStyle(elm, null)["left"], 10);
document.onmouseup = stop;
document.onmousemove = function(e) {
var absX = e.clientX;
var width = absX - left;
var height = area / width;
elm.style.width = width + "px";
elm.style.height = height + "px";
}
}
function resizeH(e) {
elm.style.cursor = "n-resize";
document.body.style.cursor = "n-resize";
var top = parseInt(window.getComputedStyle(elm, null)["top"], 10);
document.onmouseup = stop;
document.onmousemove = function(e) {
var absY = e.clientY;
var height = absY - top;
var width = area / height;
elm.style.height = height + "px";
elm.style.width = width + "px";
}
}
})("box");
虽然有一个小错误,我想。无法修复它。当您调整宽度时,它是可以的,但是当您调整高度,然后移动div时,它会滞后或w/e。检查小提琴。除此之外,它工作正常。您没有任何代码?发布一些html或css代码…否则很难帮助您;)我发现了这个,我可以使用它,但我不知道如何指定固定表面积零件。。我没有任何代码,当我发现如何做时,我会写它…你的代码工作正常:@APAD1。。。除了面积保持不变!我认为你应该用一些代码做一个例子。你能给我一个我需要的规则的例子吗?是的,有一个小错误,但它给出了窍门。但是处理程序超过了盒子的大小,不是吗?所以盒子的宽度和高度比我想象的小了3倍。这个盒子正好是100x100px。处理程序位于框内,绝对位于
位置。它们不会影响盒子。你可以改变它们的外观。好的,谢谢你,我把它们(opticaly)放在盒子外面,现在可以了,谢谢你的帮助:)