ガンガンONLINE 等で漫画を読み進めると最後に HTML なダイアログが出る。
これと同じようなダイアログを作りたい。
サイズは alert や GtkMessageDialog のように文字列の流さに合わせたい。
閉じるボタンも当然付いている状態で出したい。
CSS で縦横センタリング! 要素を画面中央に『ドン!!』と表示する方法 | phiary
検索で一番上にでてくる有名な手段だけど width, height 指定必須。
console.log(div.style.width);
は空文字だ。
不定な流さの文字列タグの横幅を得る手段が見つからない、困った。
別の手段に頭を切り換える必要がありそうだ。
position:absolute で中央に配置するやり方 | YouKnow.jp
CSSで要素を上下や左右から中央寄せする7つの方法 | 株式会社グランフェアズ
transform:translate というのがいいみたいだ。
両方 vender prefix が付いているけど 2018.08 な現在はどうなのかな。
早速試してみよう。
messageBox(id) {
let div = document.createElement("div");
div.style.backgroundColor = "#EEE";
div.style.position = "absolute";
div.style.display = "block";
div.style.zIndex = "101";
// Centering
div.style.left = "50%";
div.style.top = "50%";
div.style.transform = "translate(-50%,-50%)";
// Border
div.style.border = "1px solid #7c93b2";
div.style.borderRadius = "3pt";
div.style.boxShadow = "5px 5px";
//
let paragraph = document.createElement("p");
paragraph.textContent = document.getElementById(id).value;
paragraph.style.textAlign = "center";
//
let close = document.createElement("p");
close.textContent = "Close";
close.style.textAlign = "center";
close.style.backgroundColor = "#CCC";
close.style.border = "1px solid #7c93b2";
close.style.borderRadius = "5pt";
close.addEventListener("click", ()=> {
div.removeChild(paragraph);
div.removeChild(close);
document.body.removeChild(div);
});
div.appendChild(paragraph);
div.appendChild(close);
document.body.appendChild(div);
}
で
vender prefix 無しで safari, firefox, google-chrome イケる!
何も問題ない、お試しは以下に。
ES6 Web TestPage – L’Isola di Niente
ところで google-chrome のデベロッパーツールをよく見ると。。。。。
box-shadow なんて style があるのをポップアップのおかげで知った。
いやいやツールは使ってみるものだ、早速利用しました。