Bloggerテンプレート自作 #11:シェアボタン(SNSボタン)を作る
前回の「個別記事ページを作る」に引き続き、今回は「シェアボタンを作る」を実践してみようと思う。
シェアボタン(SNSボタン)は、ボタンひとつでSNSに投稿できるようにするボタンリンクを指し、このテンプレートでは「Facebook」「Twitter」「はてなブックマーク」「Pocket」「LINE」の5つのボタンを実装することにした。
というわけで、今回は このシェアボタンを実装する方法についてまとめることにする。
作業工程
HTML
<!-- 個別記事ページ -->
<b:includable id='single-post'>
<div class="post-area">
<!-- 個別記事を表示させる処理(前回の記事を参照) -->
<!-- SNSボタン -->
<b:include name='sns' />
</div>
</b:includable>
<!-- SNSボタン -->
<b:includable id='sns'>
<div class="share-area">
<ul>
<!-- Facebook -->
<li class="facebook">
<a expr:href='"https://www.facebook.com/sharer/sharer.php?u=" + data:post.url'
expr:onclick='"window.open(this.href, \"_blank\", \"height=430,width=640\"); return false;"'
expr:title='data:top.shareToFacebookMsg' rel='nofollow' target='_blank'><i class="fab fa-facebook-f"></i></a>
</li>
<!-- Twitter -->
<li class="twitter">
<a expr:href='"http://twitter.com/share?url=" + data:post.url' expr:title='data:top.shareToTwitterMsg'
rel='nofollow' target='_blank'><i class="fab fa-twitter"></i></a>
</li>
<!-- はてな -->
<li class="hatena">
<a expr:href='"https://b.hatena.ne.jp/add?mode=confirm&url=" + data:post.url + "&title=" + data:post.title'
rel='nofollow' target='_blank' title='Hatena で共有する'>B!</a>
</li>
<!-- Pocket -->
<li class="pocket">
<a expr:href='"https://getpocket.com/edit?url=" + data:post.url + "&title=" + data:post.title'
rel='nofollow' target='blank' title='Pocket で共有する'><i class="fab fa-get-pocket"></i></a>
</li>
<!-- LINE -->
<li class="line">
<a expr:href=""http://line.me/R/msg/text/?" + data:post.url" rel='nofollow' target='_blank'
title='LINE で共有する'><i class="fa fa-comment"></i></a>
</li>
</ul>
</div>
</b:includable>
<b:includable id='single-post'>
<div class="post-area">
<!-- 個別記事を表示させる処理(前回の記事を参照) -->
<!-- SNSボタン -->
<b:include name='sns' />
</div>
</b:includable>
<!-- SNSボタン -->
<b:includable id='sns'>
<div class="share-area">
<ul>
<!-- Facebook -->
<li class="facebook">
<a expr:href='"https://www.facebook.com/sharer/sharer.php?u=" + data:post.url'
expr:onclick='"window.open(this.href, \"_blank\", \"height=430,width=640\"); return false;"'
expr:title='data:top.shareToFacebookMsg' rel='nofollow' target='_blank'><i class="fab fa-facebook-f"></i></a>
</li>
<!-- Twitter -->
<li class="twitter">
<a expr:href='"http://twitter.com/share?url=" + data:post.url' expr:title='data:top.shareToTwitterMsg'
rel='nofollow' target='_blank'><i class="fab fa-twitter"></i></a>
</li>
<!-- はてな -->
<li class="hatena">
<a expr:href='"https://b.hatena.ne.jp/add?mode=confirm&url=" + data:post.url + "&title=" + data:post.title'
rel='nofollow' target='_blank' title='Hatena で共有する'>B!</a>
</li>
<!-- Pocket -->
<li class="pocket">
<a expr:href='"https://getpocket.com/edit?url=" + data:post.url + "&title=" + data:post.title'
rel='nofollow' target='blank' title='Pocket で共有する'><i class="fab fa-get-pocket"></i></a>
</li>
<!-- LINE -->
<li class="line">
<a expr:href=""http://line.me/R/msg/text/?" + data:post.url" rel='nofollow' target='_blank'
title='LINE で共有する'><i class="fa fa-comment"></i></a>
</li>
</ul>
</div>
</b:includable>
まず、SNSボタンはリストの中にリンクを設置する形になっており、これを <b:includable id='sns'> 内にまとめている。これを <b:include name='sns' /> で呼び出せるようにしており、個別記事ページ内でSNSボタンを表示させたい位置に <b:include name='sns' /> を挿入すれば表示させることができるようにした。
CSS
/* SNSボタン
---------------------------------------------------------------------------- */
.share-area {
padding-top: 20px;
margin: 0 25px;
}
.share-area ul {
display: flex;
list-style: none;
padding: 0;
margin: 0;
}
.share-area li {
height: 50px;
line-height: 50px;
width: 100%;
text-align: center;
}
.share-area a {
display: block;
text-decoration: none;
font-size: 20px;
color: white;
}
.share-area ul li {
margin-left: 0;
}
.share-area ul li a:hover {
opacity: 0.6;
}
.facebook a {
background-color: #35629a;
}
.twitter a {
background-color: #55acee;
}
.hatena a {
font-family: Verdana;
font-weight: bold;
background: #2c6ebd;
}
.pocket a {
background: #ee4056;
}
.line a {
background: #00B900;
}
---------------------------------------------------------------------------- */
.share-area {
padding-top: 20px;
margin: 0 25px;
}
.share-area ul {
display: flex;
list-style: none;
padding: 0;
margin: 0;
}
.share-area li {
height: 50px;
line-height: 50px;
width: 100%;
text-align: center;
}
.share-area a {
display: block;
text-decoration: none;
font-size: 20px;
color: white;
}
.share-area ul li {
margin-left: 0;
}
.share-area ul li a:hover {
opacity: 0.6;
}
.facebook a {
background-color: #35629a;
}
.twitter a {
background-color: #55acee;
}
.hatena a {
font-family: Verdana;
font-weight: bold;
background: #2c6ebd;
}
.pocket a {
background: #ee4056;
}
.line a {
background: #00B900;
}
CSSは、リンクを display: block; でアイコンのように整形し、リスト全体を display: flex; でヨコ並びにするような記述になっている。アイコンは display: block; で横幅いっぱいに広がるようにしているので、画面のサイズによって幅が可変するような設定になっている。なので、基本的にデバイスのサイズによってデザインが崩れることはない。
スポンサーリンク
スポンサーリンク
コメント
2 件のコメント :
こんにちは。「smart」テンプレートを使おうとしているものです。自分が書いている文はあまりSNSで共有できるものではないため、本文の下にあるSNSボタンを取り除き、何もないメイン文にしたいですが。その場合は上に書かれているHTMLやCSSの部分をすべて逆に除外すればきれいになりますか?ご返答いただければ幸いです。
>匿名さんへ
除外すれば表示されなくなるはずです
ただし、アドセンスの表示位置がズレるなど、レイアウトが崩れる部分が出るかも知れません
コメントを投稿