フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲覧をリアルタイムで追跡し、商品の意味を効果的に伝え、優れたコミュニケーション効果を実現します。では、フローティング広告はどのように実装されるのでしょうか? 実は、フローティング広告の実装は難しくありません。詳細は次のとおりです。 * { マージン: 0; パディング: 0; } 画像 { 位置: 絶対; 左: 0; } p { テキスト配置: 中央; 行の高さ: 40px; } <img src="images/left_ad.png" alt=""> <p>私は本文1です</p> <p>私は本文2です</p> <p>私は本文3です</p> <p>私は本文4です</p> <p>私は本文5です</p> <p>私は本文6です</p> <p>私は本文7です</p> <p>私は本文8です</p> <p>私は本文9です</p> <p>私は本文10です</p> <p>私は本文11です</p> <p>私は本文12です</p> <p>私は本文13です</p> <p>私は本文14です</p> <p>私は本文15です</p> <p>私は本文16です</p> <p>私は本文17です</p> <p>私は本文18です</p> <p>私は本文19です</p> <p>私は本文20です</p> <p>私は本文21です</p> <p>私は本文22です</p> <p>私は本文23です</p> <p>私は本文24です</p> <p>私は本文25です</p> <p>私は本文26です</p> <p>私は本文27です</p> <p>私は本文28です</p> <p>私は本文29です</p> <p>私は本文30です</p> <p>私はテキスト31です</p> <p>私はテキスト32です</p> <p>私はテキスト33です</p> <p>私は本文34です</p> <p>私は本文35です</p> <p>私はテキスト36です</p> <p>私はテキスト37です</p> <p>私はテキスト38です</p> <p>私はテキスト39です</p> <p>私はテキスト40です</p> <p>私はテキスト41です</p> <p>私はテキスト42です</p> <p>私はテキスト43です</p> <p>私はテキスト44です</p> <p>私は本文45です</p> <p>私はテキスト46です</p> <p>私はテキスト47です</p> <p>私はテキスト48です</p> <p>私はテキスト49です</p> <p>私はテキスト50です</p> //1. 操作対象となる要素を取得します。const oAdImg = document.querySelector("img"); //2. 広告画像の上部の値を計算する = (ビューポートの高さ - 広告の高さ)/2 const screenHeight = getScreen().height; const imgHeight = oAdImg.offsetHeight; 定数 offsetY = (画面の高さ - 画像の高さ) / 2; // コンソールログ(オフセットY); //3. 計算された上部の値を広告画像に設定します // oAdImg.style.top = offsetY + 'px'; アニメーションのイーズ(oAdImg, { "上": オフセットY }); //4. Webページのスクロールイベントをリッスンする window.onscroll = function() { //Web ページのスクロール距離を取得します //広告画像の上部の値 + Web ページのスクロール距離 let pageOffsetY = getPageScroll().y; アニメーションのイーズ(oAdImg, { "top": offsetY + pageOffsetY }); }; // ブラウザのビューポートの幅と高さ関数 getScreen() { 幅、高さを指定します。 if (window.innerWidth) { 幅 = ウィンドウの内側の幅; 高さ = window.innerHeight; } そうでない場合 (document.compatMode === "BackCompat") { 幅 = document.body.clientWidth; 高さ = document.body.clientHeight; } それ以外 { 幅 = document.documentElement.clientWidth; 高さ = document.documentElement.clientHeight; } 戻る { 幅: 幅、 高さ: 高さ } } // イーズアニメーション関数easeAnimation(ele, obj, fn) { 間隔をクリアします(ele.timerId); ele.timerId = setInterval(関数() { // フラグ変数は、すべてのプロパティがアニメーションを完了したかどうかを示すために使用されます。let flag = true; for (let key in obj) { ターゲットをobj[キー]とします。 // 1. 要素の現在の位置を取得します。let style = getComputedStyle(ele); begin = parseInt(style[key]) || 0 とします。 // 2. 可変レコードステップサイズを定義する // 式: (終了位置 - 開始位置) * イージング係数 (0 ~ 1) ステップ = (ターゲット - 開始) * 0.3 とします。 // 3. 新しい位置を計算します。begin += step; (Math.abs(Math.floor(step)) > 1) の場合 { フラグ = false; } それ以外 { 開始 = ターゲット; } // 4. 要素の位置をリセットします。ele.style[key] = begin + "px"; } //アニメーションが実行されたかどうかを判定する if (flag) { //アニメーションが終了したら、タイマーをオフにします。clearInterval(ele.timerId); // fn 関数が渡されたかどうかを判断し、渡された場合は実行し、そうでない場合は実行しません fn && fn(); } }, 100); } //ウェブページのスクロール距離関数 getPageScroll() { x, y とします。 if (window.pageXOffset) { x = ウィンドウのページXオフセット; y = ウィンドウのYオフセット; } そうでない場合 (document.compatMode === "BackCompat") { ドキュメントの左端をスクロールします。 ドキュメントの先頭部分をスクロールします。 } それ以外 { ドキュメント要素の左スクロール。 y = document.documentElement.scrollTop; } 戻る { x: x, y: y } } レンダリング これで、JavaScript でフォローアップ広告を実装するためのサンプルコードに関する記事は終了です。JavaScript フォローアップ広告に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Nginx プロセス管理とリロードの原則の詳細な説明
MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...
1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...
今日も私のページが文字化けしていたので、インターネットで関連する問題を検索しました。この方法はかなり...
Windows 10 1903 は、2019 年に Microsoft がリリースした Windo...
jdk をインストールします: Oracle 公式ダウンロード https://www.oracl...
el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...
序文InnoDB はデータをテーブルスペースに保存します。デフォルト設定では、初期サイズが 10 M...
1. コマンドの紹介ipcs コマンドは、Linux のプロセス間通信機能の状態を報告するために使用...
文章1) Ubuntuイメージをダウンロードする docker プル Ubuntu 2) 画像を見る...
目次準備する5つの武器…のためにオブジェクト.キーオブジェクト.getOwnPropertyName...
負荷分散の概要Nginx の負荷分散実装を紹介する前に、負荷分散の分類について簡単に説明します。負荷...
以前、MySQL クエリ文の実行プロセスについての記事がありました。ここでは、更新文の実行プロセスを...
昨夜、ブラウザのレンダリングプロセスに関するエッセイを書きましたが、小さなコードで説明しただけでした...
事前に言っておく気まぐれですが、MySQL の order by sorting にどのようなルール...
序文最近、職場でこの要件に遭遇し、リモート接続を確立するのに 1 時間以上かかりました。ローカル コ...