1. サブフォーム
Web サイトをデザインするときは、
などのいくつかのモーダル サブフォームをデザインする必要があります。このステップは簡単に実装できます。必要なのは div CSS だけです。コードを参照してください:
フォントファミリー: 'Microsoft YaHei';
font-size: 12px;
height: 120px;
left: 50%;
margin-left: -160px;
margin-top: -160px;
不透明度: 1;
位置: 固定;
上部: 50%;
幅: 320px;
Z インデックス: 1110;
}
.modal-window .head
{
高さ: 25px;
カラー: #fff;
背景画像: -moz-linear-gradient (top, #4A8CC5, #2963A5); /* Firefox */
背景画像: -webkit-gradient(linear, 左上, 左下, color-stop(0, #4A8CC5), color-stop(1) , #2963A5)); /* Saf4、Chrome */
フィルター: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4A8CC5', endColorstr='#2963A5', GradientType='0'); */
}
.modal-window .head center
{
padding-top: 2px;
}
上記のhtmlとcssを追加することで、上記のモーダルフォームの効果を簡単に実現できます。このうち、left: 50%; top: 50%; margin-left: -160px; margin-top: -160px; は、このモーダル フォームのセンタリング効果を実現します。
もちろん、モーダル フォームのサイズはスタイル クラス .modal-window で固定されています。これは、モーダル フォームのサイズを変更できないという意味ではありません。たとえば、次のコードを書きました。
コードをコピー
.list-window
{
写真の通り
このステップの実装は非常に簡単であることがわかります。いくつかの重要な行の CSS 属性をマスターすると、このモーダル サブフォームを「完全に悪用」できるようになります。
2. サブフォームの先頭をクリックしたときにサブフォームをドラッグして移動するにはどうすればよいですか? jQ を導入すると、この小さな機能を実装するために必要なスクリプトはわずか数個だけです。信じられないなら、見てみましょう
このコードは非常に短く、さまざまなブラウザでスムーズに実行できます。
実際、その実装原理は非常にシンプルで、大きく 3 つのステップに分けることができます:
①モーダルフォームの先頭でマウスをクリック(マウスダウン)すると、すぐにmousemoveイベントとmouseupイベントをドキュメントにバインドします
② マウスが跳ね上がっていない(マウスアップなし)場合、フォーム内でマウスが移動すると、mouseMove関数が起動し、マウスの移動距離を計算してフォーム全体の位置を時間的に移動させます。
③マウスが上に跳ね返ったとき(mouseup)、mouseUpイベントを呼び出して、ドキュメントにバインドされているmousemoveイベントとmouseupイベントのバインドを解除します。
プロセス全体の原理は次のとおりです。マウスがマウスダウンされると、マウス移動イベントがドキュメントに転送され、ドキュメント上のマウス移動イベントを通じてフォーム全体が処理されます。
さらに、mouseMoveにはちょっとしたトリックがあります。つまり、グローバルのleft変数とtop変数が最後にマウスが停止したときの位置を記録し、次にマウスの位置をleft変数とtop変数と比較します。移動時間を計算して、それに応じてモーダル サブフォーム全体を移動するためのマウスの移動距離を決定します。
このコード部分を分析した結果、フォームやドキュメント上の任意の要素をマウスで簡単に移動できることがわかりました
たとえば、ドラッグ アンド ドロップでフォームのサイズを変更したい場合は、mouseMove イベント ハンドラー関数でフォームのサイズを調整するだけです。もう 1 つの小さなコツを覚えたでしょうか。一歩前進しますか?
setCapture と releaseCapture はそれぞれ何をするのか疑問に思う人もいるかもしれません。実は、これは IE との互換性のためであり、この 2 つの機能を備えているのは IE だけです。 setCapture を使用すると、現在の要素ですべてのマウス イベントをキャプチャできるようになります。これを使用しない場合、IE ブラウザと互換性がない可能性があります。