javascript ランダムに動くhtml要素を作る
- 作成日 2020.10.21
- 更新日 2022.07.13
- javascript
- javascript
javascriptで、Math.randomを使用して、ランダムに動くhtml要素を作るサンプルコードを記述してます。
環境
- OS windows10 pro 64bit
- Apache 2.4.43
- ブラウザ chrome 103.0.5060.114
Math.random使い方
Math.randomは、0~1範囲の浮動小数点の擬似乱数を返してくれます。
console.log(Math.random());
// 乱数 0.7139781936203189
これを利用して、要素のポジションの「%」を変更していきます。
サンプルコード
以下は、
「実行」ボタンをクリックすると、丸い要素がランダムにポジションを変えて出力される
サンプルコードとなります。
※cssには「bootstrap5」を使用してます。「bootstrap5」は、IEのサポートを終了してます。関数はアロー関数を使用してます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>mebeeサンプル</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css">
</head>
<style>
.main {
margin: 0 auto;
margin-top: 200px;
display: flex;
flex-direction: column;
align-items: center;
font-size: 30px;
}
#sub {
background-color: #C82333;
position: relative;
height: 300px;
width: 300px;
}
#rand {
position: absolute;
transition: .1s;
transform: translate(-50%, -50%);
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #fff;
left: 50%;
top: 50%;
}
</style>
<script>
const hoge = (elm) => {
//初期値 50% 50%に設定
let randtop = randleft = 50;
// 0.1秒ごとに実行
const move = setInterval(() => {
console.log(randtop, randleft);
if (Math.random() * 2 < 1) {
randtop++;
// 100%になった場合
if (randtop === 100) randtop--;
} else {
randtop--;
// 0%になった場合
if (randtop === 0) randtop++;
};
if (Math.random() * 2 < 1) {
randleft++;
// 100%になった場合
if (randleft === 100) randleft = 99;
} else {
randleft--;
// 0%になった場合
if (randleft === 0) randleft = 1;
};
rand.style.left = randleft + "%"; // document.getElementById('rand');を省略
rand.style.top = randtop + "%"; // document.getElementById('rand');を省略
}, 100);
}
window.onload = () => {
// クリックイベントを登録
btn.onclick = () => { hoge(btn); }; // document.getElementById('btn');を省略
}
</script>
<body>
<div class="main container">
<div id="sub">
<div id="rand"></div>
</div>
<div class="row">
<button id="btn" type="button" class="btn btn-warning">
実行
</button>
</div>
</div>
</body>
</html>
要素がランダムに作成されていることが確認できます。
-
前の記事
C# Atanメソッドを使用して直角三角形の角度を求める 2020.10.21
-
次の記事
javascript Optional chainingを使用する 2020.10.21
コメントを書く