JavaScript - マウスの動きで画面上に特定のテキストを書き込みます

okwaves2024-01-25  206

マウスを動かしたときに画面上に特定のテキストを書き込みたい

例: 「Hello World」

これは画像です (例)

コードはありますが、彼は私が望むものではありません

スクリプト --->


window.focus();
  const output = document.querySelector('output');
  let text = 'A';
  window.addEventListener('mousemove', ({
    x,
    y
  }) => {
    if (x > 100) text = 'W';
    if (x > 400) text = 'X';
    if (y > 100) text = 'B';
    if (y > 400) text = 'J';
    output.textContent += text;
  });

助けてください!!

テキストをどこに表示する必要がありますか?カーソル位置の右側にあるのですか? ピクセルが移動するたびに新しいテキストが作成されます?

– ラモン・ド・フリース

2020 年 9 月 3 日 11:44

@RamondeVries はい。マウスをどこに移動しても、テキストが表示されます

– コキウェバァァ

2020 年 9 月 3 日 11:46

@RamondeVries 手伝ってくれませんか?

– コキウェバァァ

2020 年 9 月 3 日 11:51



------------------------

document.query 用に変更したことに注意してくださいセレクター('#output'); ID「output」のdivを使用したためです。と <output> を使用している場合タグ (?) は、元のコードのままにしておきます。

ここでは、ページのスクロールに合わせて文字が移動します。スクロール中に同じ場所に留まりたい場合は、position: static; を使用します。

  const output = document.querySelector('#output');
  let text = 'Hello World!';
  window.addEventListener('mousemove', ({
      x,
      y
    }) => {
      output.innerHTML += '<div style="position: absolute; left: ' + x + 'px; top: ' + y + 'px;">' + text + '</div>';
  });
<div id="output" style="width: 100%; height: 100%;"></div>

7

補足: 曖昧なサンプル コードに基づいているため、あなたのソリューションは非常に気に入っていますが、このアプローチでは無数の新しい <div> が作成されます。要素。

– あいまい

2020 年 9 月 3 日 12:00

でもテキストだけが必要です。これは言葉です

– コキウェバァァ

2020 年 9 月 3 日 12:00

@obscure はい、これは最適な適切なコードというよりも、実際に試すものだと思いますが、<canvas> のようなものを使用することを除けば、これが方法です。これは、コードに何が欠けているかを OP に示すため、教育的な答えになります。まだほとんどの WordPress より div が多いわけではありません私が見たテーマ ;)

– カダス

2020 年 9 月 3 日 12:07

@kokiwebaaa 「これは単語です」とはどういう意味ですか?

– カダス

2020 年 9 月 3 日 12:09

@Kaddath それにもかかわらず、素晴らしいアイデアです - <canvas>私の頭に浮かんだのはそれだけでした。

– あいまい

2020 年 9 月 3 日 12:12



------------------------

この回答 https://stackoverflow.com/a/7790764/9496199 を変更して、ドットの代わりに hello world というテキストが表示されるようにしました。これがお役に立てば幸いです。

コード:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Example</title>
  <style>
    body {
      height: 3000px;
    }
    .dot {
      width: fit-content;
      height: fit-content;
      background-color: invisible;
      position: absolute;
    }
  </style>
</head>
<body>
<script>
  (function() {
    "use strict";

    document.onmousemove = handleMouseMove;
    function handleMouseMove(event) {
      var dot, eventDoc, doc, body, pageX, pageY;
      
      event = event || window.event; // IE-ism
      
      // If pageX/Y aren't available and clientX/Y
      // are, calculate pageX/Y - logic taken from jQuery
            // Calculate pageX/Y if missing and clientX/Y available
      if (event.pageX == null && event.clientX != null) {
        eventDoc = (event.target && event.target.ownerDocument) || document;
        doc = eventDoc.documentElement;
        body = eventDoc.body;

        event.pageX = event.clientX +
          (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
          (doc && doc.clientLeft || body && body.clientLeft || 0);
        event.pageY = event.clientY +
          (doc && doc.scrollTop  || body && body.scrollTop  || 0) -
          (doc && doc.clientTop  || body && body.clientTop  || 0 );
      }

      // Add a dot to follow the cursor
      dot = document.createElement('div');
      dot.className = "dot";
      dot.innerHTML = "hello world";
      dot.style.left = event.pageX + "px";
      dot.style.top = event.pageY + "px";
      document.body.appendChild(dot);
    }
  })();
</script>
</body>
</html>

0

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。