記事の冒頭の文章が表示されます。パソコンから閲覧すると、”記事の概要”に設定した文章が表示されます。スマホでもトップページに”記事の概要”の文章がでるようにしたいです。
調べましたが、どうしても類似例が見つけられませんでした。
CSSなどで変更できるか教えていただきたいです。よろしくお願いします。
ブログの状況です。
・最近proにして、パソコンとスマホのコードを別にしました。
・”記事の概要”が表示されているパソコンの方は、トップページにいくとアーカイブページにいくカスタマイズをしています。
ブログURL
http://www.quest-mile.com
はてなブログのトップページに表示させる”記事の概要”が、スマホから閲覧したとき、表示されなくなってしまいました。
自分で消してます :-)
デザインのスマホのタイトル下に書いている style だと思いますが、#header を丸ごと消してます。
/* ### はてなヘッダーの非表示 ### */ #globalheader-container {display:none;} /* ### 余白調整 ### */ #container {padding-top:0px;} /* ### デフォルトの丸いアイコン等の非表示 ### */ #header{ display:none;} /* ★ これで消えてる */
スタイルだけで良い感じの場所に表示するのは難しそうなので、スクリプトを書いて記述をコピーする感じでしょうか。
例えば、こんなのとか。
/* ### ページ更新時に少しスライドさせる ### */ window.onload = function () { autoScroll(); // ★ 以下を追加 $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>"); } var $scrollX = 0; var $speed=0; ...
ただ、これだけだと記述が収まるスペースが無いので、スタイルを調整する必要があります。
例えば、こんな感じとか。
#titlebar .title { line-height: inherit; } #titlebar .title div { font-size: 9px; }
<script type="text/javascript"> /* ### ページ更新時に少しスライドさせる ### */ window.onload = function () { autoScroll(); } var $scrollX = 0; var $speed=0; function autoScroll() { var $sampleBox = document.getElementById( "menu-scroll" ); $sampleBox.scrollLeft = ++$scrollX; $speed+=3; if( $scrollX < 25 ){ setTimeout( "autoScroll()", $speed ); } } </script>
その部分を、以下のようにしてください。
<script type="text/javascript"> /* ### ページ更新時に少しスライドさせる ### */ window.onload = function () { autoScroll(); // ★以下の一行を追加 $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>"); } var $scrollX = 0; var $speed=0; function autoScroll() { var $sampleBox = document.getElementById( "menu-scroll" ); $sampleBox.scrollLeft = ++$scrollX; $speed+=3; if( $scrollX < 25 ){ setTimeout( "autoScroll()", $speed ); } } </script> <!-- 以下の style タグで囲まれている 8行(style タグを含む)を追加 --> <style> #titlebar .title { line-height: inherit; } #titlebar .title div { font-size: 9px; } </style>
script タグの中に一行追加して、style タグを 8行追加してます。
他は変更する必要はありません。
いきなりメインブログをいじるのは嫌だ、というのはとても分かるので、テスト用のブログで試すのであれば、そこの URL を教えてください。
メインブログはプロフィールからたどれるのですが、メイン以外のブログを見つけるのは難しいのですよ。
window.onload = function () { autoScroll(); // ★以下の一行を追加 $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>"); }
の「以下の一行を追加」のところなんですが、#title-bar
を #titlebar
というようにハイフンを削除してください。
$("#titlebar .title").append("<div>" + $("#blog-description").text() + "</div>"); // ↑こういうふうに
記事一覧ページで一つ一つの記事のタイトル下にある”記事の説明”ともいうべき箇所の文章が、はてなブログの編集オプション”記事の概要”で設定した文章ではなく、記事冒頭の文章が表示されてしまう
こちらの対応をやってみました。
タイトル下にブログの説明を入れるカスタマイズに加えて、スクリプトを 15行ほど追加、スタイルシートを 3行追加です。
<script type="text/javascript"> /* ### ページ更新時に少しスライドさせる ### */ window.onload = function () { autoScroll(); $("#title-bar .title").append("<div>" + $("#blog-description").text() + "</div>"); // ★ 以下の 15行を追加 Array.prototype.forEach.call(document.querySelectorAll("a.entry-list-anchor-block"), function(entry) { const max_length = 72; var xhr = new XMLHttpRequest(); xhr.open('GET', entry.href, true); xhr.onload = function(ev) { if (ev.target.status <= 200) { var dc = ev.target.response.querySelector('meta[property="og:description"]'); var e = entry.querySelector(".entry-body > .entry-content > p"); e.innerHTML = dc.content.length > max_length ? (dc.content.substring(0, max_length) + "...") : dc.content; e.style.display = "initial"; } }; xhr.responseType = 'document'; xhr.send(null); }); // ★ 追加は、ここまで。 } var $scrollX = 0; var $speed=0; function autoScroll() { var $sampleBox = document.getElementById( "menu-scroll" ); $sampleBox.scrollLeft = ++$scrollX; $speed+=3; if( $scrollX < 25 ){ setTimeout( "autoScroll()", $speed ); } } </script> <!-- 以下の style タグで囲まれている 8行(style タグを含む)を追加 --> <style> #titlebar .title { line-height: inherit; } #titlebar .title div { font-size: 9px; } /* ★ 以下の 3行を追加 */ a.entry-list-anchor-block .entry-body > .entry-content > p { display: none; } </style>
コメントでも書きましたが、スマホ版の記事一覧では、HTML に「記事の概要」が入っていないので、記事一覧が表示された後に、個々の記事のページから記事一覧を取得して埋め込む、という戦略です。
最初の表示で、本来の機能の記事の先頭がちらっと見えてしまうので、最初はスタイルシートで見えなくしておいて、個別の記事から「記事の概要」を取得した後に見えるようにしています。
後、PC版では「記事の概要」を 116文字くらいで切り詰めているっぽいのですが、スマホの表示だと、それでも長いような感じがしますので、72 文字で切り詰めています。
const max_length = 72;
本当に、本当にありがとうございます!しっかりと”記事の概要”が表示されました。とてもうれしいです!
2017/06/02 08:44:03デザインの関係で、文字数は50字にしました。やっと納得のいくスマホデザインにすることができました。かさねがさねありがとうございます。a-kuma3さんに回答いただけてよかったです。ありがとうございました。
よかった、よかった。
2017/06/02 12:24:51Pro ユーザの PC版ページでは/archive に飛ばさなくても一覧形式を指定できるようになったそうなので、そのうち必要なくなるかもしれませんね。