###前提・実現したいこと
横幅100%,縦幅100vhのareaの中にクリックする度にイメージをランダム表示させたいです。(どんなデバイスで見てもそのデバイスの横幅、縦幅に合わせてランダムに出せるために100%,100vhにしました。)
スクロールもなくし、あくまでデバイスで見える領域上に全てのイメージが収まって、かつ、ランダムに散らばっていくことが理想です。
###発生している問題・エラーメッセージ
javascriptでclientHeightで縦の幅を取ってます。
そして、overflow:hidden;で範囲外は見えないようにしてます。
teratailで似た質問があって応用してやってみたのですが、ランダムに出る数値が見える範囲に収まらない数値で出てデベロッパーツールでは見えて、通常の画面では見えなかったりしています。
ランダム値を出す範囲設定ができない、どうすれば範囲内に収まったランダム値が出せるのかいまいち分からないです。
ランダムの部分に関しては理解が足りない状態ですが、何かご教授いただけたら幸いです。
何卒宜しくお願い申し上げます。
###該当のソースコード
html
1<body> 2 3 <div id = "area"> 4 </div> 5 6</body>
css
1body { 2 text-align: center; 3 overflow: hidden; 4 line-height: 1; 5 background-image: url(img/texture03.jpg); 6 background-position: center center; 7 background-repeat: no-repeat; 8 background-attachment: fixed; 9 background-size: cover; 10} 11 12div{ 13 display: inline-block; 14} 15 16#area{ 17 width: 100%; 18 height: 100vh; 19 display: flex; 20 align-items: center; 21 flex-direction: column; 22} 23
javascript
1var ch = document.getElementById("area").clientHeight; 2console.log(ch); 3 4function setRandomLeft(imageWidth) { 5 return (Math.random() * (document.getElementById("area").clientWidth - imageWidth)); 6} 7 8function setRandomTop(imageHeight) { 9 return (Math.random() * (document.getElementById("area").clientHeight - imageHeight)); 10} 11 12document.getElementById("start").addEventListener("click", function () { 13var image = document.createElement("img"); 14 image.src = "img/neko00.png"; 15 image.style.position = "relative"; 16 17 var rT = setRandomTop("150"); 18 var rL = setRandomLeft("150"); 19 20 image.style.top = rT+"px"; 21 image.style.left = rL+"px"; 22}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。