或者您可以使用jQuery-UI来创建可调整大小的窗口。
我解决了在尝试使用jQuery ui resizable小部件与具有滚动溢出的div时遇到的一些问题。问题在于调整大小的手柄位于滚动条内部。
为了解决这个问题,我创建了三个嵌套在一起的div。
第一个是包装器,用于设置div的初始大小。
第二个是用于手柄的,其大小应设置为其父div(包装器div)的100%。您将需要调整z-index以将它们定位在最终滚动条上方。
第二个div还应包含可拖动的手柄div和窗口div,其中包含所有窗口内容。
可拖动的手柄div(.draggable)和窗口div(.window)都需要相对定位。这样它们就可以正确地彼此定位,而可拖动的手柄也不会覆盖您的滚动条。
.window div应缩放为父div的100%,就像之前的div一样。这个div将具有滚动溢出。现在,因为这等于100%的handles div,所以当您使用jQuery ui调整handles div的大小时,它也会调整此div的大小。
将可拖动的 div 的宽度设置为 100%,高度可以根据需要设定,但是增加的高度会将窗口 div 推下去,然后您需要给手柄 div 添加相同数量的 padding-bottom 以修复此问题。 您还需要将 handles div 的 overflow 设置为 visible。
在完成所有这些操作之后,添加所需的样式即可。很难解释,但我希望这有意义。以下是所有代码,并希望它能更好地解释。这绝对可以让您缩小窗口、移动 div,并且还可以使用滚动溢出与 div。
HTML:
<!DOCtype html>
<html lang="en">
<head>
<title>Adjustable Window</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="../css/adjWindow.css">
<link rel="stylesheet" type="text/css" href="../jquery-ui-1.11.4/jquery-ui.min.css">
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript" src="../jquery-ui-1.11.4/jquery-ui.min.js"></script>
<script type="text/javascript" src="../js/adjWin.js"></script>
</head>
<body id="top">
<div class="winWrap">
<div class="handles">
<div class="draggable"><p>Window Title</p></div>
<div class="window">
<div class="windowContent">
</div>
</div>
</div>
</div>
</body>
</html>
CSS
.winWrap {
position: relative;
width: 500px;
height: 500px;
}
.draggable {
position: relative;
width: 100%;
height: 20px;
box-shadow: inset 0px 0px 6px rgba(0,0,0,0.9);
background-color: rgba(255,255,255,0.5);
text-align: center;
z-index: 1;
}
.draggable p {
padding: 2px;
margin: 0px;
cursor: default;
}
.handles {
position: relative;
width: 100%;
height: 100%;
padding-bottom: 20px;
overflow: visible;
box-shadow: 20px 15px 20px rgba(0,0,0,0.4);
z-index: 1;
}
.window {
position: relative;
width: 100%;
height: 100%;
overflow: scroll;
background-color: rgba(0,0,0,0.1);
box-shadow: inset 0px 0px 10px rgba(0,0,0,0.7);
}
.windowContent{
position: absolute;
}
使用可调整大小的小部件时,建议使用minHeight和minWidth选项,否则您的窗口将能够调整大小到几乎为零,并可能导致一些烦人的副作用,例如使div变得非常小,需要重新加载页面以单击调整大小的手柄。在我看来,这样做也更加专业。
对于可拖动的小部件,您需要针对要移动的整个div的包装器进行定位,然后将其句柄设置为我们放置在window div中的可拖动div。
$(document).ready(function () {
'use strict';
$('.handles').resizable({minHeight: 100, minWidth: 100});
$('.winWrap').draggable({handle: '.draggable'});
});
.css()
设置大小,它会将样式添加到内联中。问题是一旦设置了大小,我就无法拖动调整元素的大小为比设置的大小更小。 - chustar