現在左メインカラム(記事本文)と右サイドバーの2カラムデザインを採用、記事本文が長いとある程度下までスクロールすると右サイドバーはただの空きスペースとして表示される形となります。
[参考]
http://www.masaemon.jp/entry/2014/04/22/tokyo-mita-ramen-jiro-manual
↑中見出し2-3あたりから右サイドバーが空きスペースとなります。
そこで、右サイドバーが空きスペースとなるタイミングで表示を現在の2カラムから記事本文だけの1カラムにする見せ方をしたいと思うのですが、CSSやJavascriptの知識が乏しいレベルの者でも簡単・確実・安全に、何よりはてなブログ上でもきちんと実装できる術をご教示下さい。
【条件等】
・IEの古いバージョンとかは除き、主流ブラウザ(IE、Chrome、Firefox、Safari各最新版)やPC以外のデバイス(スマートフォン等)でも不具合等発生せずに問題なくブログ閲覧できる方法を希望します。
・実装したはてなブログのURLを回答に貼り付けて下さい。
・トップページは本実装の対象外。(※記事詳細ページのみ適用したいのです)
以上、何卒宜しくお願い申し上げます。
ニュルっとアニメーションするわけではないですが、サイドバーの下に記事を流し込んでみる方法です。
(1) はてなブログのダッシュボードから「デザイン」をクリック
(2) 左の「カスタマイズ」をクリック
(3) 「サイドバー」をクリック
(4) 「モジュールを追加」をクリック
(5) 下から二番目の「</> HTML」をクリック
(6) タイトルは空のままで、内容のところに以下のコードを貼り付ける
<script> $(function() { if (document.location.href.match(/\/entry\//) { var aside = $("aside#box2").detach(); aside.insertBefore($("#main-inner article").eq(0)); $("div#main").css("width", "auto"); $(".entry-content h2").css("clear", "none"); $(".entry-content h3").css("clear", "none"); $(".entry-content h4").css("clear", "none"); $(".entry-content h5").css("clear", "none"); $(".ninja_onebutton").css("clear", "none"); $(".ninja_onebutton").css("display", "none"); // 「忍者おまとめボタン」を無効化 } }); </script>
(7) 「適用」をクリック
(8) 「変更を保存する」をクリック
で、記事を確認してみてください。
使ってるテーマのスタイルに強く依存するので、正衛門さんのブログをローカルに落として確認しました。
サイドバーが切れているところです。
はまぞうの枠線が右に飛び出しているのが分かります。
もう少し、下の部分です。
長く書いた記事が、サイドバーの下まで伸びているのが分かると思います。
ただ、このまま使えるわけではなくて、雰囲気の確認だけです。
というのは、以下の制約があるからです。
「忍者おまとめボタン」がちょっと曲者で、そいつが流し込むスタイルが簡単に修正できません。
細かい話なんですが、スクリプトで作りこむ要素に対して、その疑似要素にスタイルを指定しています。
そのうちの一部のスタイルが本文を切ってしまうために、サイドバーの途中で本文がちょん切れて、サイドバーの下に移動してしまいます。
どんな感じになるかは、サイドバーに追加したコードのうち、最後の方の以下の行を削除すると分かります。
$(".ninja_onebutton").css("display", "none"); // 「忍者おまとめボタン」を無効化
もし、提示した形で雰囲気があっている、ということであれば、「忍者おまとめボタン」を有効にしたまま、記事をサイドバーの下に流し込むやり方にチャレンジしてみます :-)
<script> $(function() { if (document.location.href.match(/\/entry\//)) { var aside = $("aside#box2").detach(); aside.insertBefore($("#main-inner article").eq(0)); $("div#main").css("width", "750px"); $(".entry-content h2").css("clear", "none"); $(".entry-content h3").css("clear", "none"); $(".entry-content h4").css("clear", "none"); $(".entry-content h5").css("clear", "none"); $(".ninja_onebutton").css("clear", "left"); $("aside#box2").css({ "z-index": "200", "background-color": "white", "position": "relative" }); var e = document.createElement("DIV"); e.innerHTML = "<style>\n" + ".ninja_onebutton:after {clear: none !important;}\n" + ".ninja_onebutton_output:after {clear: none !important;}\n" + ".ninja_onebutton:after {clear: left !important;}\n" + "</style>\n"; document.body.appendChild(e); } }); </script>
これを、追加したモジュールの内容に書いてみてください。
2カラムから1カラムに切り替わる際は、いきなりパッとなるのではなく、左カラムが右カラムに伸びる過程をアニメーション表示する形だと最高です。
たぶんJavascriptを使えば実装できそうな気はするのですが、はてなブログの使い勝手も考慮した最適解が導き出せないため質問してみました。
もしくは上記以外にステキな空きスペース活用法があれば知りたいです。
※ただしサイドバー内のコンテンツが追尾したりするのは好みません。
1時間ほど早い形となりますが、id:a-kuma3さんをベストアンサーと終了しました。
id:a-kuma3さんに関しては回答がこちらの希望に最も近かったことに加え、こちらからの追加確認に加えて他の方の回答までしっかりフォローする姿勢がベストアンサーどころかベストと判断した次第です。
今後もCSSやJavaScript関連、というよりはてなブログの技術回りでこういった質問をさせていただくかもしれませんが、その際はどうぞヨロシクお願いいたします。
「姿勢が...」とか、そんなのではなく、ただ楽しんでただけで :-)
No.4 のパララックスエフェクトは、サイドバーの構成を知ってて見ている人にとっては、ある意味、最適解かも、と思ってみてました。
コードも短くて応用も効きそうだし、勉強になります。
こういうのが楽しいので、人力検索は止められません。
また、どこぞで会ったときには、よろしく。