Minimal Green

はてなブログテーマ『Minimal Green』のデモブログ。はてなブログカスタマイズや、HTML、CSSなどについて書いています。

はてなブログのトップページ一覧形式表示を使ってカード型レイアウトに

ついに、はてなブログでトップページの一覧表示機能ができましたね!最近はてなブログはどんどん便利な仕様が追加されててカスタマイズ好きにとっては嬉しい限りです。
staff.hatenablog.com
今まで一覧表示にするにはCSSでなんとかそれっぽくしたり、/archiveページにJavaScriptでリダイレクトさせたりと無理矢理感があったのですが、これで簡単にトップページを一覧表示で多くの記事をスッキリと表示させることができるようになりました。(ただし、はてなブログProのみ)

f:id:minimalgreen:20191114182114j:plain



このブログにも一覧表示を使ってトップページをカード型レイアウトにするカスタマイズをしました。今回ははてなブログで難しいと思われたカード型レイアウトにするカスタマイズをご紹介します。

トップページを一覧形式にする

f:id:minimalgreen:20191114182202p:plain



まずは管理画面→設定→詳細設定でトップページの表示形式(PC版) にチェックを入れて保存して下さい。トップページの記事数はここでは14にしました。

CSS

CSSのコピペです。以下のコードを管理画面→デザイン→カスタマイズ→デザインCSSに追記して下さい。PC版のみカード型になるように変更しました(スマートフォンでカード型は見づらいため)。

/* トップページカード型 */
@media (min-width: 768px){
.page-index .archive-entries {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

.page-index .archive-entry {
  margin-bottom: 20px!important;
  padding-bottom: 20px;
  box-sizing: border-box;
  width: calc(50% - 20px);
}

.page-index .entry-thumb {
  float:none;
  display: block;
  width: 100%;
  height: 200px;
  background-position: center center;
  background-size: cover;
  border-radius: 8px;
}
.entry-thumb-link:hover {
  opacity:0.7;
}
}

.page-indexをつけているのはトップページのみでカード型レイアウトを適用させるためです。アーカイブページは元のデザインのままです。
ブレークポイントはここでは767pxにしていますが、テーマに合わせて適宜調整して下さい。

また本文の抜粋文が長くて気になる場合は非表示にして下さい。以下のCSSを追記。

.page-index .entry-description{
  display:none;
}

追記:記事タイトルをサムネイル画像の下に配置する


記事タイトルをサムネイル画像の下の位置に変えたいときは以下のCSSを更に追加して下さい。

f:id:minimalgreen:20191114182250p:plain



@media (min-width: 768px){
.page-index .archive-entry {
    position: relative;
    display: -webkit-flex;
    display: flex;
    flex-direction: column;
}
.page-index .entry-thumb-link {
    order: 1;
    height: 200px;
}
.page-index .archive-entry-header {
    order: 2;
}
.page-index .categories {
    order:3;
}
.page-index .archive-entry-body {
    order:4
}
}

サムネ画像をアイキャッチ画像に置き換える

追記:2017年07月11日以降、はてなブログの仕様変更のため、以下のScriptは不要になりました!
staff.hatenablog.com
はてなブログの改善のお陰でScript無しでもサムネ画像はボケずに表示されます。ありがたい!

サムネイル画像見切れ対策

但し画像が正方形に切り取られているので、見切れることがあります。トップページのサムネイル画像の見切れが気になる場合は以下の記事の「オリジナル画像に変更する Javascript」のscriptコードをフッタに追加してください。その下のCSSは既に記述済みなので追加しなくて大丈夫です。

www.imuza.com


追記:カード型レイアウト別の方法

つばさのーとさんもカード型のカスタマイズ記事書かれています。こちらの方がscriptスッキリしてて表示速度的にも良いかもしれません。(速度パフォーマンス的にこちらの方がおすすめ
是非ご参照下さい。
www.tsubasa-note.blog

ヘッダー下のおすすめ記事をスマートフォンで横スクロールにするカスタマイズ

f:id:syofuso:20170610165949j:plain
ヘッダーの下のおすすめ記事の横並びにするカスタマイズを以前書きました。今回はそれをスマートフォンでは横スクロールで表示するカスタマイズです。
blog.minimal-green.com

JavaScriptを使うのは面倒くさいなあと思ってましたが、JavaScriptを使わなくてもCSSだけ横スクロールできますね。
ちょとはみ出して次の要素を見せれば「横にスクロール出来る」ことはユーザーに伝わりやすいし、ユーザビリティ的にもそんなに問題ないかと思います。

前回のカスタマイズのように縦に記事を並べるとファーストビューに記事タイトルが見えづらくなりますし、横スクロールにした方が見やすいかと思います。
但し、全面的に使い勝手が良い、全ての人にわかりやすいUIではないと思うので使う場合は注意してください。(横スクロールできると気づかないユーザーもいらっしゃるかと)

スマートフォンで横スクロール

このブログに既に実装していますが、スマートフォンではこんな感じです。
f:id:syofuso:20170528055648p:plain
※スクロールバーのデザインは実際のスマートフォンでは違います。

HTML

HTMLは前回のカスタマイズのものとほとんど変りません。div.recommend-containerで囲んでいるだけです。以下のコードに表示したいおすすめ記事の画像とURLをいれて、
デザイン→カスタマイズ→ヘッダ→タイトル下に貼り付けてください。

<div class="recommend-container">
<div class="recommend">
<div class="recommend-box">
  <span class="recommend-image"><a href="記事URL"><img src="画像URL"></a><br></span>
  <span class="recommend-title"><a href="記事URL">記事タイトル</a></span>
</div>
<div class="recommend-box">
  <span class="recommend-image"><a href="記事URL"><img src="画像URL"></a><br></span>
  <span class="recommend-title"><a href="記事URL">記事タイトル</a></span>
</div>
<div class="recommend-box">
  <span class="recommend-image"><a href="記事URL"><img src="画像URL"></a><br></span>
  <span class="recommend-title"><a href="記事URL">記事タイトル</a></span>
</div>
<div class="recommend-box last-box">
  <span class="recommend-image"><a href="記事URL"><img src="画像URL"></a><br></span>
  <span class="recommend-title"><a href="記事URL">記事タイトル</a></span>
</div>
</div>
</div>

CSS

CSSは前回のカスタマイズをしている人は/* ヘッダー下おすすめ記事 */というところを以下のコードに張り替えてください。新しくカスタマイズされる方はそのままデザインCSSに追記して下さい。

/* ヘッダー下おすすめ記事横スクロール */
.recommend {
    width: 1100px;/* コンテンツ幅と合わせる */
    margin: 40px auto;
    display: -webkit-flex;
    display: flex;
    box-sizing: border-box;
}
.recommend-box {
    width: 300px;
    height: 230px; 
    margin-right: 20px;
    padding: 10px;
    border: 2px solid #eee;
    box-sizing: border-box;
}
.last-box {
   margin-right:0;
}
.recommend-image img {
    max-width: 100%;
    height: auto;
}
/* 1100px以下 */
@media screen and (max-width: 1100px) {
    .recommend {
    width: 83.9%;
    margin: 20px auto;
}
    .recommend-box {
    width: 200px;
    height: 200px;
}
}
/* タブレット・スマートフォン向け */
@media screen and (max-width: 768px) {
    .recommend-container {
     overflow-x: auto;
     overflow-y: hidden;
     -webkit-overflow-scrolling: touch;
}
    .recommend {
     margin: 20px auto;
     width: 660px;
}
    .recommend-box {
    width: 150px;
    height: 190px;
}
}
/* iPhone5s以下向け対策 */
@media screen and (max-width: 320px) {
     .recommend {
     width: 550px;
}
   .recommend-box {
    margin-right:10px;
    width: 130px;
    height:180px;
}
}
/* ヘッダー下おすすめ記事横スクロールここまで */

注意点

上記のコードで1100pxとなっているのはこのブログのPC版の場合です。お使いのブログテーマに応じてコンテンツ幅は違うので調整して下さい。また.recommend-boxのwidthやheightも適宜調整して下さい。
さらに要注意なのは、親要素#conatainerや#wrapperなどにoverflow:hiddenが指定されている場合横スクロールできません。その場合は

@media screen and (max-width: 1100px) {
#container {
    overflow: scroll;
}
}

などとし、スクロール出来るようにして下さい。

参照:Appleに学ぶ、横スクロールナビを組む時のCSSメモ - Qiita

はてなブログのトップページをWordPressの固定フロントページっぽくし、ホームページとして活用する方法

Twitterでちょろっと書いたのですが、はてなブログでもWordPressの固定フロントページっぽくビジネスサイト風のトップページを作ることができます。これではてなブログをビジネスサイトやホームページのように活用することができます。
まずはDEMOページをご覧ください。(PC向け)

[:contents]


DEMOページ
f:id:syofuso:20170610170444j:plain

※このカスタマイズはdisplay:noneを多用しているため、SEOの観点からはあまりおすすめはできません。どうしてもはてなブログから移転したくなくてはてなブログでホームページが作りたい方向けです。出来れば普通にWordPressでやりましょうw
seopack.jp

別のやり方を書きました。
blog.minimal-green.com

 

トップページ用の記事を作る

ポイント
①日付を9999年にする、1ページ1記事にする
②固定記事のカスタムURLをhomeにする
③記事内にHTML/CSS全部直接書く 。
④デザインCSSでサイドバーとアーカイブページのトップページへのリンクを消す(できればページャーも)

まず「管理画面→設定→詳細設定」からトップページの記事数(PC版)を1記事にします。
トップページ固定用の記事のカスタムURLをentry/homeとなるようにします。

このカスタマイズのポイントはトップページ用のデザインためのCSSをstyleタグで囲って直接記事内に書くことです。こうすることでトップページにのみ適用させたいCSSをデザインCSSに書かずに済みます。.page-indexをつけてデザインCSSに書くと個別記事ページやアーカイブページなどの他のページでも読み込むことになり無駄に重くなります。

トップページのデザインを作るには、普通にサイトを作るときのように記事内にHTMLを書いていくだけです。
※ちなみに↑の黒板のCSSは以前記事にしています。
design.syofuso.com

トップページからサイドバー・日付などを消してシングルカラムにする

サイドバーを消す必要は無いのですが、サイドバーを消したほうがより”ビジネスサイト風”になりますね。
以下のようにstyleタグで囲ってトップページ用の記事内に書きます。

<style>
/* サイドバー・日付・コメントを消す */
#box2,
.entry-header,
.entry-footer {
display: none;
}
/* テーマによって調整 */
#content {
width: 100%;
}
#main {
max-width: 1200px;
width: 100%;
float: none;
margin: 60px auto 30px;
}
/* 以下トップページ用のデザイン向けのCSSを書く */
</style>

#content や#mainの幅はテーマによって調整が必要となります。

サイドバーの最新記事やアーカイブページページからトップページを消す

f:id:syofuso:20170430232111p:plain
トップページ用の記事は普通の記事と同じなのでサイドバーの最新記事やアーカイブページに表示されます。問題ないと言えば問題ないですが、最新記事にずっと固定ページが出て来るのは不自然なので消してしまいましょう。
このアイデアは主にid:ausnichtsさんの以下の記事を参考にしています。
www.imuza.com

以下のCSSをデザインCSSに記述します。

/* 月間アーカイブから9999年を消す */
.archive-module-year[data-year="9999"] {
display: none;
}
/* アーカイブページから特定の記事を消す */
.archive-entry[data-uuid="10328749687241678111"] {
display: none;
}
/* 最新記事の一番目の要素を消す */
.recent-entries-item:first-child {
display: none;
}

トップページ用の記事固有のdata-uuidの数字をアーカイブページのソースから調べます。9999年のトップページ用の記事のところに以下のような記述があるので数字をメモして上記のCSSに入れます。

<section class="archive-entry autopagerize_page_element" data-uuid="10328749687241678111">

これでトップページ用の記事をアーカイブページから消すことが出来ました。
f:id:syofuso:20170430232915p:plain
サイドバーの最新記事や月間アーカイブからも9999年の記事は消えましたね。
f:id:syofuso:20170430232057p:plain

最新記事をトップページに表示する方法

トップページに最新記事一覧がないと、やはりブログとしては困りますね。RSSを読む込むなどの方法もあるのかもしれませんが、ここでは単に「サイドバーの最新記事」を記事内移動させるscriptを置くだけです。
サイドバーの関連記事を記事下に移動させるのと同じです。
はてなブログで記事下に関連記事を出すカンタンな方法 - ボクココ

トップページ用の記事内の最新記事一覧を表示したい場所に以下の記述をします。

<div id="recentArticle"></div>
<script>
var timer = setInterval(function() {
if (typeof jQuery != 'undefined') {
$("#recentArticle").html($(".hatena-module-recent-entries").html());
clearInterval(timer);
}
}, 1000)
</script>

後は3カラムで横並びになるようCSSを書きます。ここはテーマやトップページのデザインによって調整してみて下さい。


トップページの記事へのページャー(次へ)を消す

最新記事(ほんとは2番め)の個別記事にはトップページ用の記事へのページャーが表示されてしまいます。これを消すには
はてなブログのトップページを固定して企業サイト風にする方法 - IMUZA.com
この記事の「ページャーのトップページへのリンクを消す」をご参照下さい。

はてなブログのビジネス活用や企業のオウンドメディアに

はてなブログには企業向けにオウンドメディア構築サービス「はてなブログMedia」というサービスがあります。「それどこ」や「SUUMOタウン」「みんなのごはん」など人気メディアで活用されています。
とても自由度の高い良いサービスですが、お値段も相応でしょうし、個人事業主や自営業の方にはちょっと厳しいかもしれません。
そういうとき、はてなブログで手軽にビジネスサイトが構築できれば、ビジネスサイトやオウンドメディアを始めるきっかけに良いのではと思います。

まとめ

ここまで書いてなんですが、こんな面倒なことをするならWordPressでやれと自分でも思いますwでもはてなブログでずっとブログ書いてて離れたくない!というはてな愛の強い方には良いかもしれません。
ちなみにDEMOページのテーマは最近テーマストアに投稿されたid:codomisu さんの『Codomisu Flat』をインストールして使っています。
hitsuzi.hatenablog.com
フラットデザインでオシャレなテーマですので是非是非。スライダーの付け方も詳しく書いてくださっています。

カスタマイズサービスの宣伝

やっぱりよくわからない、自分でやるのは面倒くさいという方は有料のカスタマイズサービスもやっていますのでご依頼いただければ幸いです。
ブログカスタマイズ依頼
トップページの固定フロントページ化のお見積目安は10,000円~18,000円(トップページカスタマイズのみの場合)となります。

はてなブログのAMP用CSSを書くときの注意点

f:id:syofuso:20170610170544j:plain
はてなブログのAMP版のCSSを記述出来るようになりましたね。おかげで今までAMP対応を見送ってた方も見直してAMP対応始めた方も多いと思います。カスタマイズ依頼案件でもAMP対応を依頼されることが多くなりました。
基本的にはPC版のデザインCSSと同じように書けばよいのですが、AMP用CSSには制約があったり、元々デフォルトで指定されてるCSSがあるためうまく表示されないことがあります。

サイドバーの最新記事にリボンラベルを付ける方法【変数を用いた高度なカスタマイズ】

f:id:syofuso:20170610170627j:plain
先日はてなブログのサイドバーモジュールに新しい機能が追加されましたね。
staff.hatenablog.com
何か出来ないかなあと、カスタマイズを試してみました。

色々な表現が出来ると思うのですが、今回は以下の2点を取り入れたデザインを作ります。


サイドバーのカスタマイズ・サムネイルにリボン(帯)を付ける
・2列表示にする(段組み)
続きを読む

はてなブログのサイドバーに画像を貼り付ける方法

f:id:syofuso:20170610170910j:plain
最近Adobe CCを導入してIllustratorを使っています。なんだかんだ言って有料のソフトウェアは使いやすいですね。解説もネットに多いですし。
印刷物を作る機会が増えて、無料の画像編集ソフトでは限界がありましたが、Adobe CC導入して良かったです。まだ全然使いこなせてませんが…

続きを読む

数字表記におすすめのGoogle Font はてなブログの日付にどうぞ

f:id:syofuso:20170408210311j:plain
このブログではブログタイトルと日付にGoogle FontのJosefin Sansを指定しています。全体にWeb Fontを指定すると見出しやタイトルなど一部分にフォント指定すると、デザインのアクセントになりおすすめです。今回は日付の表示、数字の表示に最適なGoogle Fontについて書いていきます。

はてなブログテーマMinimal Greenでは日付は

    .entry-header .date {font-family: Helvetica, Arial, sans-serif;}

と指定しています。 Arialではこんな感じ。
f:id:syofuso:20170318171503p:plain
Helvetica, Arialもとても見やすいフォントなのでこのままでも良いんですが、ちょっとデザインを印象的に見せたい時にはディテールに変化を付けると良いと思うので、日付のデザインを変えてみましょう。

この記事が気に入ったらいいねの代わりに、Twitter、読者登録、Feedlyのフォローボタンを設置するカスタマイズ

f:id:syofuso:20170408210309j:plain
記事下のシェアボタンの下にバイラルメディア風の「この記事が気に入ったらフォロー」バナーを置いてみました。
よくWordPressでは見かけますよね。そのデザインを応用して「この記事が気に入ったらフォロー」バナーにアレンジしました。
Facebookページは持っていない方も多いでしょうし、フォローボタンの方が使いやすいかなと。コピペで使えるので是非はてなブログにも導入してみて下さい。

こんな感じのデザイン

f:id:syofuso:20170313235215p:plain

HTML&jQuery

記事下に以下のコードを追記してください。

<div class="p-entry__push">
  <div class="p-entry__pushThumb" style="background-image: url('アイキャッチ用画像URL')"></div>
  <div class="p-entry__pushLike">
    <p>この記事が気に入ったら
      <br>フォロー・購読をお願いします。
    </p>
    <ul class="social-icon">
      <li><a class="hatena" href="http://blog.hatena.ne.jp/はてなID/ブログドメイン/subscribe" onclick="window.open('http://blog.hatena.ne.jp/はてなID/ブログドメイン/subscribe', '', 'width=500,height=400'); return false;"><i class="blogicon-hatenablog lg"></i> </a></li>
      <li><a class="twitter" href="https://twitter.com/ユーザーID" target="_blank"><i class="blogicon-twitter"></i></a></li>
      <li><a class="feedly" href="http://feedly.com/i/subscription/feed/http://ブログURL/feed" target="_blank"><i class="blogicon-rss"></i></a></li>
    </ul>
    <p class="p-entry__note">読者登録で最新情報をお届けします</p>
  </div>
</div>
<!-- 画像を記事の一番上のものに変える -->
<!--jQueryを使用-->
<script src="https://code.jquery.com/jquery-1.9.1.min.js" type="text/javascript"></script>
<script>
(function ($) {
    $(function() {
        var src = $('.entry-content img:visible:first').attr('src');
        if (!src) return;
        $('.p-entry__pushThumb').css('background', 'url(' + src + ')');
        $('.p-entry__pushThumb').css('background-size', 'cover');
        $('.p-entry__pushThumb').css('background-position', 'center');
    });

})(jQuery);
</script>

注意点

上記のコードはご自分のブログやtwitterアカウントに合わせて以下のように変更してください。設置後、きちんと動作するかクリックして確かめてください。


・画像を用意しはてなフォトライフなどにアップロードし、'アイキャッチ用画像URL'に画像アドレスを指定してください。
http://blog.hatena.ne.jp/はてなID/ブログドメイン/subscribe

・ここははてなIDとブログドメインにブログURLからhttp://を抜いたものを入れて下さい。2箇所あるのでご注意。

https://twitter.com/ユーザーID

・ユーザーIDのところにtwitterアカウントの@を抜いたものを入れて下さい。
・Feedlyはhttp://を含めたブログURLを入れて下さい。

CSS

デザインCSSに以下のコードを追記してください。

/* この記事が気に入ったらフォロー */
/* フォローボタン */
ul.social-icon {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: center;
    justify-content: center;
    list-style-type: none;
    -webkit-padding-start: 0;/* user agent stylesheet の無効化 */
}
.social-icon li a {
    display: block;
    margin: 0 5px 5px 0;
    color: #fff;
    width: 50px;/* 丸ボタンの幅 */
    height: 50px;/* 丸ボタンの高さ */
    line-height: 50px;/* 高さに揃える */
    border-radius: 50%;
    text-align:center;
}
.social-icon .hatena {
    background: #fff;
    color: #3d3f44;
  }
.social-icon .hatena .lg {
    font-size: 1.3333333333333333em;
    line-height: .75em;
    vertical-align: -20%;
}
.social-icon .twitter {
    background: #00a1e9;
    color: #fff;
}
.social-icon .feedly {
    background: #87c040;
    color: #fff;
}
/* この記事が気に入ったらバナー */
.p-entry__push {
    margin-bottom: 20px;
    display: table;
    table-layout: fixed;
    width: 100%;
    background-color: #2b2b2b;
    color: #fff;
}
 
.p-entry__pushThumb {
    display: table-cell;
    min-width: 240px;
    background-position: center;
    background-size: cover;
}
 
.p-entry__pushLike {
    display: table-cell;
    padding: 20px;
    text-align: center;
    vertical-align: middle;
    line-height: 1.4;
    font-size: 18px;
}
 
.p-entry__note {
    margin-top: 15px;
    font-size: 12px;
    color: #fff;
}
@media screen and (max-width: 480px) {
.social-icon li a {
    width: 40px;
    height: 40px;
    line-height: 40px;
}
}

一応レスポンシブデザインでスマートフォンにも対応しています。フォローボタンの丸が小さいかもしれないので、気になる方は.social-icon li a のwidth、heightを変更して調整してみて下さい。

もっとカッコいいデザイン

もっとカッコいいデザインの「この記事が気に入ったらフォローボタン」のカスタマイズはFOXISMさんの記事をご参照下さい。(他力)私も他のブログで使わせていただいてます。

www.foxism.jp

「この記事が気に入ったらいいね!」の導入は

「この記事が気に入ったらいいね!」をはてなブログに導入するにはケー (id:photoblg) さんの記事をご参照下さい。
www.weblog-life.net

このカスタマイズは、元のコードを公開されている
ichitaso.com
とケーさんの記事を参考にさせていただいきました。

この記事が気に入ったらはてブ!ボタンはid:korekaiさんが紹介されています。
koreimakaidesuka.hatenablog.com