====== Modal Dialog ======
===== 要求 =====
* 素早く簡単に Modal Dialiaog が実装できるよう、コンポーネント化したい。
===== Code =====
import { ref, reactive } from 'https://cdnjs.cloudflare.com/ajax/libs/vue/3.0.2/vue.esm-browser.js';
const ModalContainer = {
template: `
===== Props =====
* size: サイズ
* title: タイトル
* enableBackdrop: バックドロップの有効化
===== Slots =====
* header スロット
* body スロット
* footer スロット
===== Events =====
* None
===== Demo =====
==== BS4 の実装 ====
==== BS3 の実装 ====
◆ BS3
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.fade.in {
opacity: 1;
}
.modal-backdrop.in {
filter: alpha(opacity=50);
opacity: .5;
}
.modal-backdrop.fade {
filter: alpha(opacity=0);
opacity: 0;
}
.modal {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1040;
display: none;
overflow: hidden;
-webkit-overflow-scrolling: touch;
outline: 0;
}
.modal-backdrop {
position: absolute;
top: 0;
right: 0;
left: 0;
background-color: #000;
}
.fade {
opacity: 0;
-webkit-transition: opacity .15s linear;
-o-transition: opacity .15s linear;
transition: opacity .15s linear;
}
* div のネストや指定が必要な CSS クラスもほぼ同様
手動でモーダルを表示するには、いろいろとやることがある
* div.modal.fade を div.modal.fade.in に変更
* div.modal-backdrop の z-index を削除
* これでも裏のページがスクロールしてしまうので、以下の対策を。。。
https://coliss.com/articles/build-websites/operation/javascript/prevent-page-scrolling-when-a-modal-is-open.html