または、jQuery-UIを使用してサイズ変更可能なウィンドウを作成できます。
私は先に進み、スクロールオーバーフローが発生したdivでjQueryuiサイズ変更可能なウィジェットを使用しようとしたときに発生したいくつかの問題に対処しました。問題は、サイズ変更ハンドルがスクロールバーの内側に配置されていたことでした。
これを修正するために、3つのdivを互いにネストしました
最初のものはラッパーであり、divの開始サイズを設定する場所です。
2つ目はハンドル用で、そのサイズは親div(ラッパーdiv)の100%に設定する必要があります。z-indexを調整して、最終的なスクロールバーに配置する必要があります。
2番目のdivには、ドラッグ可能なハンドルdivとすべてのウィンドウコンテンツが配置されるウィンドウdivも含まれている必要があります。
ドラッグ可能なハンドルdiv(.draggable)とウィンドウdiv(.window)の両方を相対的に配置する必要があります。それらが互いに適切に配置され、ドラッグ可能なハンドルがスクロールバーの上に重ならないようにします。
.window divは、前のdivと同じように、親divの100%にスケーリングする必要があります。これはスクロールオーバーフローが発生します。jQuery uiを使用してハンドルdivのサイズを変更すると、これはハンドルdivの100%に等しいため、このdivのサイズも変更されます。
ドラッグ可能なdivを幅100%、高さを任意の高さに設定しますが、高さを追加すると、ウィンドウdivがハンドルdivよりもさらに下に押し出され、ハンドルdivに同量のパディングボトムを追加する必要があります。これを修正します。また、handlesdivオーバーフローを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;
}
jQueryとjQuery-UIサイズ変更可能なウィジェットでminHeightオプションとminWidthオプションを使用することをお勧めします。そうしないと、ウィンドウのサイズをほとんどゼロに変更でき、divを小さくしてリロードする必要があるなどの厄介な副作用を引き起こす可能性があります。サイズ変更ハンドルをクリックするページ。また、私の意見では、よりプロフェッショナルに見えます。
ドラッグ可能なウィジェットの場合、移動するdiv全体のラッパーをターゲットにしてから、ウィンドウdivに配置したドラッグ可能なdivのハンドルを指定します。
/*global $, jQuery, alert*/
$(document).ready(function () {
'use strict';
$('.handles').resizable({minHeight: 100, minWidth: 100});
$('.winWrap').draggable({handle: '.draggable'});
});