HTML5 における dialog 要素のテイスト
ダイアログ(また、モーダルボックス、フローティング層として知られている)ユーザーとの対話のためのWebプロジェクトの重要な部分である、我々は最も一般的にアラート()、jsで()を確認しますが、このダイアログが美しくないとカスタマイズすることはできませんので、開発の過程で、一般的にホイールを構築したり、サードパーティを使用して、自分のニーズによると、。
ダイアログボックスの構成
一般的なポップアップボックスの形態
位置:画面の左上、右上、左下、右下、垂直方向中央など
サイズ:幅と高さが固定、幅と高さが固定、幅と高さが固定、など。
開発中のダイアログの形は、位置と大きさがランダムに組み合わされたケースです。
しかし、1つのケース(幅と高さが可変の垂直方向の中央揃え)は、(display:tableを使うか、css3のtranslateやflexを使って)簡単に実現できないので、以下を参照してください。 水平・垂直方向のセンタリングレイアウト
上のダイアログボックスにはコンテンツを入れるコンテナがあり、ダイアログボックスの下にはマスクレイヤー(マスク)があります。マスク層は、ユーザーがポップアップボックスをトリガーした後に形成されるダイアログボックスとページ本体の間の分割層であり、その存在は、ユーザーにより明白な視覚的差異効果を与えることができ、またユーザーがダイアログボックスをトリガーした後の他の不必要なページ本体操作を回避する役割を果たし、よりユーザー体験を生み出すことができる。
プレゼンスに関する問題
ダイアログホイールはたくさんありますが、いろいろな問題があります。
- どのダイアログボックスを選ぶか(選択症候群の人は頭が痛いです)
- ユーザビリティ(APIのシンプルさ、他のサードパーティライブラリへの依存性)
- 拡張性
- ブラウザの互換性サポート
では、ダイアログボックスを簡単に作る方法はあるのでしょうか?もちろんあります。HTML5のdialog要素を使えばいいのです。
HTML5(ダイアログ)
<dialog open>
<h2> Hello world.</h2>
</dialog>
簡単に言うと、上記のコードを使って、「Hello world」という内容のダイアログボックスを作ることができるのです。
ダイアログの表示/非表示の制御も簡単で、表示する場合はopen属性を追加し、非表示にする場合はopen属性を削除します。もちろん、DOM インターフェイス (show(), close()) を使用してダイアログの表示/非表示を制御することもできます。
ダイアログの下のマスク層には ::backgrop 疑似要素を使用でき、その活性化には DOM API の showModal() を使用する必要があります。backgropの性質は、ダイアログの下に位置し、どのz-indexよりも上にあることです。
showModal()を使うとマスクレイヤーだけでなくダイアログコンテナも表示されるので、 ::backdrop を使う場合は show() の代わりに showModal() を使ってください。ESCキーを押すとポップアップレイヤーは閉じますが、DOM APIとして close() も使うことができます。
次のコードで、::backdrop レイヤーを半透明のレイヤーに設定することができます。
dialog::backdrop {
background-color: rgba(0, 0, 0, 0.75);
}
メッセージを表示するための一般的なポップアップレイヤーに加え、より使用頻度の高いカテゴリーとして、フォームを持つポップアップレイヤーがあります。
フォーム付きポップアップレイヤー
HTML5のdialog要素とform要素を組み合わせて、このようなポップアップレイヤーを作ることは可能でしょうか?
回答:はい
form要素とdialog要素を緊密に連携させるためには、どうしたらよいでしょうか。
A: dialog要素にmethod="dialog"という属性を追加して、button要素の属性値をdialog要素に渡せるようにすればいいんです。
<dialog>
<form method="dialog">
<p>OK or Cancel</p>
<button type="submit" value="yes">OK</button>
<button type="submit" value="no">cancel</button>
</form>
</dialog>
<script>
var dialog = document.querySelector('dialog')
dialog.showModal()
dialog.addEventListener('close', function(event) {
console.log(dialog.returnValue)
})
</script>
ブラウザの互換性
HTML5を比較的うまく使っていますが、互換性の問題があり、chromeやoperaは対応が良いですが、Firefoxは実験的な機能ですが、IE、Edge、safariの対応は良くありません。また、iosは対応しておらず、Androidも対応が不十分で、Android6以降の対応のみです。具体的な参考資料 カニース
では、古いブラウザでもHTML5ダイアログに対応させることはできるのでしょうか?まず思いつくのは、es6の新機能に対応したbabel-polyfillのように、ダイアログに対応したpolyfillがあるかどうかですが、実際にそのようなオープンソースプロジェクトが存在するようです A11Y ダイアログ で、それぞれvueとreactの異なるバージョンを提供しています。
以上が今回の内容の全てですが、皆様の学習の一助となり、スクリプトハウスをより支持していただけると幸いです。
関連
-
boostrapのモーダルフラッシュ問題の解決法
-
rtmpストリーミングライブのHTML5再生
-
h5ページ evokeアプリがインストールされていない場合、ダウンロードにジャンプします(iOS、Android)。
-
iPhoneXの画面適応 WeChatアプリとH5でセーフエリア下部の小さな黒いバー
-
複数の画像を編集するためのキャンバス画像エディタの実装方法
-
html5モバイル価格入力キーボードの実装
-
iPhoneXのためのHtml5ページ適応(簡単なことです)
-
ページ上部へのスムーズなスクロールを実現する3つの方法
-
html5 postMessageのフロントエンドクロスドメインとフロントエンドのリスニング方式の例
-
HTML5ページシームレス点滅オープン問題と解決策
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン