検索
ホームページウェブフロントエンドjsチュートリアルAlertBox ポップアップ レイヤー情報プロンプト ボックス効果の実装手順_JavaScript スキル

模倣ライトボックス効果では、この効果は基本的に実現されており、今回は主に IE6 のジッター問題が修正された際に改善されました。
また、IE6対応のための修正メソッドの追加、オーバーレイの再パッケージ化、プログラムのコンポーネント構造への変更が行われました。
互換性: ie6/7/8、firefox 3.6.8、opera 10.6、safari 5.0.1、chrome 5.0

エフェクトプレビューhttp://demo.jb51.net/js/ AlertBox /index.htm

手順の説明

【実施原理】

ポップアップ レイヤーの基本原理は、模倣ライトボックス効果ですでに説明しました。
重要な点は位置決めです。一般に、ドキュメントの相対的な位置決めには絶対で十分です。
画面とともに移動する、つまりウィンドウを基準にして位置を移動するには、固定位置を使用します。
これらは、固定 IE6 がサポートされていないことを除けば、実装が非常に簡単です。


【ie6対応修正】

IE6 自体は固定位置をサポートしていないため、シミュレーションまたはトリックを通じて間接的にのみ実装できます。
最も独創的な方法は、ウィンドウのスクロールイベント内でポップアップレイヤーの位置を継続的に修正することです。
後に誰かが、リフローによって「奇妙なことに」達成できることを発見しました
ただし、上記の方法には欠点があり、スクロールするとポップアップ レイヤーが「揺れ」、非常に不快になります (イージングなどを使用することで改善できます)。

揺れを避けたい場合は、HTML と CSS を上手に適用することで実現できます。詳細については、14px の紹介を参照してください。
基本は、コンテナを使用してボディを置き換え、その後、動かないボディを絶対に配置することです。
完璧に見えますが、このメソッドには HTML 構造を変更する必要があり、ウィンドウのスクロール イベントなどの関連するものに影響を与える可能性があります。

プログラムでは別の方法が使用されており、背景とボディの表現によって実現されています。以下は互換性のある固定効果です:

コードをコピーコードは次のとおりです:


🎜>body {
_background: url(about:blank) 固定;
.fixable {
top:100px; >_top:expression(( document).documentElement.scrollTop 100);
}

;
fixable




これはより完璧ですが、ボディの背景が固定しかできないことや、エクスプレッションを使用すると比較的大きなリソースを消費することなど、いくつかの問題もあります。
さらに大きな問題は、パーセンテージ値や右/下を使用して配置できないことです。
この問題を解決するために、プログラムは位置決めレイヤーを使用して、一般的な位置決め方法と同じサイズで位置を固定します。このレイヤーを基準にして配置するために使用すると、相対的なウィンドウ配置の効果を実現できます。

互換性のあるプログラムは主に RepairFixed オブジェクトにあります。 まず本体の背景を設定します。



コードをコピーします


コードは次のとおりです:

if (body.currentStyle.backgroundAttachment !== "fixed") { if (body.currentStyle.backgroundImage === "none") { body.runtimeStyle.backgroundRepeat = " no-repeat"; body.runtimeStyle.backgroundImage = "url(about:blank)" } body.runtimeStyle.backgroundAttachment = "fixed";
位置決めレイヤーを再度作成します:




コードをコピーします


コードは次のとおりです:


layer = document.createElement("
");
コードをコピーします

コードは次のとおりです。以下のように:







fixable





加上"overflow:hidden"就可以防止这种情况。

然后弹出层通过append方法修改为"absolute"定位,并插入到这个定位层,这样就能实现fixed效果了。

由于这个定位层比较耗资源,所以在有元素插入时才会插到body中。
在不需要fixed的时候,要用remove方法从定位层中移除,当定位层内没有需要定位元素就会自动从body移除。
ps:隐藏的话expression还会继续执行,要移出文档才行。


【居中效果】

加入居中扩展程序,并且设置center为true,就会自动相对窗口居中。
居中的原理跟仿Lightbox效果是一样的,通过设置负的元素尺寸一半的margin和"50%"的top/left来居中。
要注意的是不是使用fixed定位时,计算需要加上scrollTop/scrollLeft。


【覆盖层】

在仿Lightbox效果中,ie6的覆盖层是通过创建一个覆盖整个页面的层来做的。
使用新的兼容fixed方法后,就不用另外做兼容,按照fixed的效果做就行了。
覆盖层是由AlertBox扩展而来,它其实就是一个大小跟窗口一样,并且跟窗口重合的弹出层。
由于覆盖层一般只需要定义一个就行了,这里把它做成一个OverLay对象,使用时直接调用它的show和close方法。


【遮盖select】

在仿Lightbox效果中介绍过两种遮盖select的方法:隐藏和iframe。
程序是通过iframe来遮盖的,放在ie6的兼容扩展程序中。
在iframe定位时要注意,要定位到弹出层的负的clientTop/clientLeft,这样才能保证边框不会被遮住。


使用技巧

【定位】

除了居中,程序会按照弹出层本身的定位样式来显示。
不是fixed定位时要注意,在ie6是相对当前窗口来定位的,其他都是相对第一屏窗口来定位的。
还要注意,必须声明DOCTYPE,才能正确定位。
程序为了尽量通用,降低了效率(用了4个expression),所以最好还是根据实际情况自己来调整。
ps:需要像定位提示效果那样预设定位的话,可以自行扩展。

【锁定键盘】

使用覆盖层时,为了防止用户通过键盘操作页面,可以在document的keydown中执行preventDefault来禁用。
如果弹出层需要正常操作,只要在弹出层的keydown中执行stopPropagation就行了。

【拖动弹窗】

这里只是简单的加上拖动功能,要注意的是fixed定位时,计算拖动的参考对象是不同的。
更详细的拖动介绍可以看看这个拖动效果


使用说明

实例化时,必须有弹出层作为参数:

new AlertBox("idBox");


オプションのパラメータは、次のようなプログラムのデフォルト属性を設定するために使用されます。
属性: デフォルト値//説明
fixed: false、//位置が固定されているかどうか
zIndex: 1000,// カスケード数
onShow: $$.emptyFunction,// 表示時に実行
onClose: $$.emptyFunction// 閉じた時に実行

次のメソッドも提供されています:
show: ポップアップ レイヤーを表示します。
close: ポップアップ レイヤーを非表示にします。
dispose: プログラムを破棄します。

ie6 と互換性のある拡張機能を追加すると、ie6 の修正された問題が自動的に修正されます。fixSelect 属性に従って選択マスクのバグを修正するかどうかを設定できます。
センタリング拡張機能を追加した後、center 属性に従ってセンタリングするかどうかを設定できます。デフォルトは no です。

RepairFixed は修正されたオブジェクトを修正し、修正する必要がある要素を追加および削除するための追加メソッドと削除メソッドを備えています。IE6 でのみ使用できます。
OverLay オーバーレイ オブジェクトには次の属性があります:
属性: デフォルト値//説明
"color": "#fff",//背景色
"opacity": .5,// 透明度(0-1)
"zIndex": 100, // オーバーレイ値
オーバーレイを表示および非表示にする show メソッドと close メソッドもあります。

パッケージのダウンロード アドレス

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
JavaScriptとWeb:コア機能とユースケースJavaScriptとWeb:コア機能とユースケースApr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンの理解:実装の詳細JavaScriptエンジンの理解:実装の詳細Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)