こんにちはこんにちは!!
夏ですね! 真夏ですね!!
ところで最近、ライブドアの一部の人気ブログで、サイドバーの挙動に「んん?」って思ったことありませんか!
…百聞は一見にしかずってことで、実際の例をみてみましょう!
※PC版のみです
ハムスター速報 (左のサイドバーを見ながら、下にスクロールしてください)
痛いニュース(ノ∀`) (右のサイドバーを見ながら、下にスクロールしてください)
ある程度スクロールすると、サイドバーの広告がぴたっと固定されますね!
これって流行りなんでしょうか…!
そんなわけで、もしかしたら同じことをやりたい人が他にもいるのかも?と思って、
コピペで使えるJavaScriptにしてみました!
↓ 動作サンプルです!
スクロールしたらサイドバーの広告を固定するスクリプトの動作サンプル
↓ コードはこれです! 適当にコピペしてブログに貼り付けてね!
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type="text/javascript"> (function($) { $(document).ready(function() { /* Ads Sidewinder by Hamachiya2. http://d.hatena.ne.jp/Hamachiya2/20120820/adsense_sidewinder */ var main = $('#main'); // メインカラムのID var side = $('#side'); // サイドバーのID var wrapper = $('#ad1'); // 広告を包む要素のID var w = $(window); var wrapperHeight = wrapper.outerHeight(); var wrapperTop = wrapper.offset().top; var sideLeft = side.offset().left; var sideMargin = { top: side.css('margin-top') ? side.css('margin-top') : 0, right: side.css('margin-right') ? side.css('margin-right') : 0, bottom: side.css('margin-bottom') ? side.css('margin-bottom') : 0, left: side.css('margin-left') ? side.css('margin-left') : 0 }; var winLeft; var pos; var scrollAdjust = function() { sideHeight = side.outerHeight(); mainHeight = main.outerHeight(); mainAbs = main.offset().top + mainHeight; var winTop = w.scrollTop(); winLeft = w.scrollLeft(); var winHeight = w.height(); var nf = (winTop > wrapperTop) && (mainHeight > sideHeight) ? true : false; pos = !nf ? 'static' : (winTop + wrapperHeight) > mainAbs ? 'absolute' : 'fixed'; if (pos === 'fixed') { side.css({ position: pos, top: '', bottom: winHeight - wrapperHeight, left: sideLeft - winLeft, margin: 0 }); } else if (pos === 'absolute') { side.css({ position: pos, top: mainAbs - sideHeight, bottom: '', left: sideLeft, margin: 0 }); } else { side.css({ position: pos, marginTop: sideMargin.top, marginRight: sideMargin.right, marginBottom: sideMargin.bottom, marginLeft: sideMargin.left }); } }; var resizeAdjust = function() { side.css({ position:'static', marginTop: sideMargin.top, marginRight: sideMargin.right, marginBottom: sideMargin.bottom, marginLeft: sideMargin.left }); sideLeft = side.offset().left; winLeft = w.scrollLeft(); if (pos === 'fixed') { side.css({ position: pos, left: sideLeft - winLeft, margin: 0 }); } else if (pos === 'absolute') { side.css({ position: pos, left: sideLeft, margin: 0 }); } }; w.on('load', scrollAdjust); w.on('scroll', scrollAdjust); w.on('resize', resizeAdjust); }); })(jQuery); </script>
ただし、この方法は、今のところライブドアの一部の特別な契約(?)をしているブログがやっているだけなので、
他の人がマネするとAdsenseポリシー違反になるかもしれません><
やるなら自己責任でね!
(普通の人がやってもokなのかどうかは、一応Googleに問い合わせ中です)
(追記)
と思ったら、さっそくGoogleから返事がきたので共有しますね!
大変恐れ入りますが、いかなる方法でもお客様が Google 広告の動作を変更することは許可しておりません。
スクロールしても広告が表示されるような設定はご遠慮くださいませ。
お問い合わせのウェブ サイトがプログラム ポリシーに違反している場合は、Google で該当のアカウントに対して所定の措置を取らせていただきます。
ざんねん…><