ガンガンONLINE 等で漫画を読み進めると最後に HTML なダイアログが出る。
これと同じようなダイアログを作りたい。
サイズは alert や GtkMessageDialog のように文字列の流さに合わせたい。
閉じるボタンも当然付いている状態で出したい。
CSS で縦横センタリング! 要素を画面中央に『ドン!!』と表示する方法 | phiary
検索で一番上にでてくる有名な手段だけど width, height 指定必須。
1 | console.log (div.style.width); |
は空文字だ。
不定な流さの文字列タグの横幅を得る手段が見つからない、困った。
別の手段に頭を切り換える必要がありそうだ。
position:absolute で中央に配置するやり方 | YouKnow.jp
CSSで要素を上下や左右から中央寄せする7つの方法 | 株式会社グランフェアズ
transform:translate というのがいいみたいだ。
両方 vender prefix が付いているけど 2018.08 な現在はどうなのかな。
早速試してみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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 があるのをポップアップのおかげで知った。
いやいやツールは使ってみるものだ、早速利用しました。