HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

【HTML】要素がスクロールされたときにスクリプトを実行する方法(onscroll属性の使い方)

Webページでは、要素がスクロールされたタイミングで何らかの処理を実行したいケースがよくあります。そんなときに活躍するのが onscroll 属性(onscrollイベント)です。

要素がスクロールされると、onscroll 属性に設定した処理が自動的に発火します。この記事では、実際に動作するサンプルコードを使って、onscroll属性の基本的な使い方を解説します。

onscroll属性の実装例

以下のサンプルでは、青い枠のボックス内をスクロールすると、テキストの色が青色に変化する仕組みになっています。実際にコードをコピーしてブラウザで開き、ボックスをスクロールしてみてください。

<!DOCTYPE html>
<html>
<head>
  <style>
    #myid {
      width   : 250px;
      height  : 80px;
      border  : 2px solid blue;
      overflow: scroll;
    }
  </style>
</head>
<body>
  <p>ボックスをスクロールしてください。</p>
  <div id = "myid" onscroll = "display()">これはデモ用のテキストです。これはデモ用のテキストです。これはデモ用のテキストです。これはデモ用のテキストです。
  <br><br></div>
  <script>
    function display() {
      document.getElementById("myid").style.color = "blue";
    }
  </script>
</body>
</html>

コードの解説

このサンプルのポイントは以下の通りです。

  • CSS側: #myid に対して overflow: scroll; を指定することで、固定サイズのボックス内にスクロールバーを表示させています。
  • HTML側: <div> 要素に onscroll = "display()" を設定し、スクロール時に display() 関数が呼び出されるようにしています。
  • JavaScript側: display() 関数内で document.getElementById() を使って対象要素を取得し、文字色を青(blue)に変更しています。

addEventListenerを使った書き方

HTML属性に直接記述する代わりに、JavaScriptの addEventListener() メソッドを使っても同じ動作を実現できます。こちらの方がHTMLとJavaScriptを分離できるため、保守性の高いコードになります。

document.getElementById("myid").addEventListener("scroll", function() {
  this.style.color = "blue";
});

onscrollイベントは、無限スクロールやスクロール連動アニメーションなど、さまざまなUI実装の基礎となる重要なイベントです。ぜひ基本的な使い方をマスターしておきましょう。

  1. HTMLで要素がクリックされたときにスクリプトを実行する方法(onclick属性の使い方)

    HTMLで要素がクリックされたときにスクリプトを実行したい場合は、onclick属性を使用します。この属性をボタンやリンクなどの要素に追加することで、クリックの瞬間に任意のJavaScript関数を呼び出すことができます。onclick属性の基本構文onclick属性には、クリック時に実行したいJavaScriptのコードや関数名を指定します。以下が基本的な書き方です。<要素名 onclick = 実行したい関数名()>テキスト</要素名>実装例以下のコードでは、ボタンがクリックされるとdisplay()関数が呼び出され、指定したidの段落にメッセージが表示されます。実

  2. HTMLで要素がフォーカスを取得したときにスクリプトを実行する方法

    HTMLでは、onfocus属性を使用することで、要素がフォーカスを取得した瞬間にJavaScriptを実行できます。 onfocus属性とは onfocus属性は、テキスト入力欄やボタンなどのフォーム要素がユーザーによって選択され(フォーカスされ)、入力可能な状態になったときに、指定したスクリプト(関数)を呼び出すイベントハンドラです。 主な活用シーンとしては、以下のようなものが挙げられます。 入力欄がフォーカスされたときに背景色を変えて、現在どの項目を編集中か視覚的に強調する 入力欄のプレースホルダーやヒントテキストを表示する バリデーションメッセージやガイダンスを動的に切り替える 実