フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲覧をリアルタイムで追跡し、商品の意味を効果的に伝え、優れたコミュニケーション効果を実現します。では、フローティング広告はどのように実装されるのでしょうか? 実は、フローティング広告の実装は難しくありません。詳細は次のとおりです。 * { マージン: 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 プロセス管理とリロードの原則の詳細な説明
目次1. 動的型付けとは何ですか? 2. データ型2.1 プリミティブ型 (6 つのプリミティブ型、...
数年前、Taobaoのモバイル版の左下隅に面白い丸いボタンがあったことを覚えています。それをクリック...
目次1. 初期化構造2. 蛇の色のレンダリング3. ヘビの動き4. ヘビの死を判定する方法 ヘビの死...
1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...
この記事では、商品詳細ページの虫眼鏡を実装するためのVueの具体的なコードを参考までに共有します。具...
1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...
1. ビューポートの概要モバイル ブラウザは通常、画面よりも幅の広い仮想ウィンドウにページをレンダリ...
Seurat は、単一細胞解析用の重量級の R パッケージです。使用したことがある人なら誰でも、その...
目次1.watchは一般的なデータ(数値、文字列、ブール値)の変更を監視します。 1. 数値2. 文...
データのバックアップと復元に関する最初の記事を皆さんに共有します。具体的な内容は次のとおりです。基本...
この記事では、ショッピングカートの完全な機能を実現するためのjQueryの具体的なコードを参考までに...
地球の円周率と半径、検索ポイントの経度と緯度から、検索ポイントと検索データテーブル間の距離はNキロメ...
オンラインショッピングモールデータベース - ユーザー情報データ運用プロジェクトの説明電子商取引の台...
序文:データベースのバックアップの重要性は、特にデータの損失が深刻な結果を招く可能性がある実稼働環境...
目次1.Vue.js の機能: 2.Observer.js 関数 (データハイジャック): 3. C...