【JavaScript】ランダムな数字や画像を切り替えるシンプルコード3選

logs Log

 Webサイトを弄り始めた最初期の頃は、HTML・CSSを本当に弄り倒してました。

 JavaScriptも例外ではなく、HTML・CSSと同じく今考えるとしょーもない情熱の掛け方をWebサイトに向けていたような気がします。

1枚の画像からランダムに表示を切り替える(おみくじ風)JavaScript

 1枚の長い画像を「のぞき窓」で見る仕組み

 これに使用している画像は、5つの結果が縦に並んだ「長いフィルム」のような画像です。

 ボタンを押すと、このフィルムを裏側で「0 / 64 / 128 / 192 / 256」ピクセル分だけシュッと上に動かして、窓から見える絵を切り替えています。

 昔のゲーム機も、この「1枚の大きな画像から必要な部分だけを映し出す」という仕組みで動いていました。この方法なら、画像を何枚も用意する必要がなく、一瞬で表示を切り替えられるのがメリットです。

全てのコードを表示する(クリックで開閉)
<div class="centered-container">
   <button class="circle-btn">ここをクリック</button>
  <div class="viewer"></div>
</div>

<style>
.centered-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  width: 100%;
  margin-top: 50px;
}

.circle-btn {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  border: none;
  background-color: #007bff;
  color: white;
  font-size: 10px;
  cursor: pointer;
  box-shadow: 0 4px 6px rgba(0,0,0,0.1);
  transition: transform 0.1s;
}

.circle-btn:active {
  transform: scale(0.95);
}

.viewer {
  width: 64px;
  height: 64px;
  border: 1px solid #ccc;
  background-image: url('画像.png');
  background-size: 64px 320px;
  background-repeat: no-repeat;
}
</style>

<script>
const btn = document.querySelector('.circle-btn');
const display = document.querySelector('.viewer');

btn.addEventListener('click', () => {
  const randomIndex = Math.floor(Math.random() * 5); 
  const offset = randomIndex * 64;
  display.style.backgroundPosition = `0 -${offset}px`;
});
</script>

1〜30の中から重複せずに複数の数字を選ぶJavaScript

 複数の数字をランダムに選ぶツール

 1から30までの数字の中から、重複しないように6つの数字を自動で選び出すプログラムです。

 当番決めや、グループ分けの番号選びなど、「公平に数字を決めたい時」に役立つ仕組みをシンプルに作っています。
 選ばれた数字は見やすいように、自動的に小さい順に整列して表示されるようになっています。

 今は1〜30にしていますが、数字を書き換えれば1〜100にもできます。

全てのコードを表示する(クリックで開閉)
<div class="centered-container2">
  <button class="circle-btn2">ここをクリック</button>
  <div class="result-area2"></div>
</div>

<style>
.centered-container2 {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  width: 100%;
  margin-top: 50px;
}
.circle-btn2 {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  border: none;
  background-color: #28a745;
  color: white;
  font-size: 10px;
  cursor: pointer;
  box-shadow: 0 4px 6px rgba(0,0,0,0.1);
  transition: transform 0.1s;
}
.circle-btn2:active {
  transform: scale(0.95);
}
.result-area2 {
  margin-top: 10px;
  font-size: 20px;
  font-weight: bold;
  letter-spacing: 5px;
  color: #333;
  min-height: 2.5em;
  display: flex;
  align-items: center;
  justify-content: center;
}
</style>

<script>
const actionBtn = document.querySelector('.circle-btn2');
const resultDisplay = document.querySelector('.result-area2');

actionBtn.addEventListener('click', () => {
  const selectedNumbers = [];
  // 1〜30の範囲に設定(ここを変えるだけでカスタマイズ可能)
  const maxNumber = 30; 
  const numberPool = Array.from({length: maxNumber}, (_, i) => i + 1);

  for (let i = 0; i < 6; i++) {
    const randomIndex = Math.floor(Math.random() * numberPool.length);
    selectedNumbers.push(numberPool.splice(randomIndex, 1));
  }

  selectedNumbers.sort((a, b) => a - b);
  resultDisplay.textContent = selectedNumbers.join(' ');
});
</script>

1〜100の中からランダムに1つの数字を選ぶJavaScript

 指定した範囲の中から、完全にランダムで1つの数字を選び出すプログラムです。

 複雑な処理を省き、「ボタンを押すと数字が出る」という単機能に絞ることで、動作の軽さとコードの読みやすさを重視してます。
 1から100という広い範囲に設定しているので、様々な場面での「ランダムな選択」にそのまま使えます。

全てのコードを表示する(クリックで開閉)
<div class="centered-container3">
  <button class="circle-btn3">数字を選ぶ</button>
  <div class="result-area3"></div>
</div>

<style>
.centered-container3 {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  width: 100%;
  margin-top: 50px;
}

.circle-btn3 {
  padding: 10px 20px;
  border-radius: 5px; 
  border: none;
  background-color: #007bff;
  color: white;
  font-size: 14px;
  cursor: pointer;
  box-shadow: 0 4px 6px rgba(0,0,0,0.1);
  transition: transform 0.1s;
}

.circle-btn3:active {
  transform: scale(0.95);
}

.result-area3 {
  margin-top: 10px;
  font-size: 32px; 
  font-weight: bold;
  color: #333;
  min-height: 2em;
  display: flex;
  align-items: center;
  justify-content: center;
}
</style>

<script>
const pickBtn = document.querySelector('.circle-btn3');
const pickDisplay = document.querySelector('.result-area3');

pickBtn.addEventListener('click', () => {
  // 1から100の間でランダムに1つ選ぶ
  const min = 1;
  const max = 100;
  const pickedNumber = Math.floor(Math.random() * (max - min + 1)) + min;
  
  pickDisplay.textContent = pickedNumber;
});
</script>

まとめ:JavaScriptを使った懐かしいギミック

 これらのJavaScriptを使った仕組みを、昔はWebサイトの中で遊びの1つとして使っていました。
 Webサイトの中でチャットが流行っていた時期がありましたが、ネトゲのチャットの様なものがWebサイトの中にコンテンツとしてあったのを覚えています。
 その中で今回紹介したJavaScriptの仕組みをチャット利用者が使って遊んでいました。

 その当時を振り返り、こんなのあったなと思い出し、ここに書き残します。

コメント