見出し画像

[Blogger #010] ホーム画面の記事一覧にスニペット表示、配置調整

前回の続きで、ホーム画面の記事一覧をいじくります。

スクリーンショット 2021-01-31 214502

前回までで、こんな感じ。ピクチャが小さいし、記事本文の書き出しとかがない。タイトルは上にしたい。などなど。まずは、記事の書き出し部分をとってきて表示するスニペットを導入。参考サイトは、ここ。

CSS部分

snippet を追加。 category-item とか date あたりを修正。Hover は斜め左上に動き、青っぽい影にした。 

  /****************************************
         記事一覧
 *****************************************/
 #list{
     display: flex;
     flex-wrap: wrap;
     justify-content: space-between;
     align-items: flex-start;
 }
 #list a{
     color: inherit;
 }
 .list-item{
	  width:100%;
     margin: 8px 0 10px;
     background: var(--background-color);
	  color: #000;
	  position: relative;
	  z-index: 1;
 }
 .snippet-body {
   font-size: 15px;
 }
 .list-item:hover {
     box-shadow: 5px 5px 4px #00d0dd;
     transform: translate(-0.1em,-0.1em);
     transition: all 0.3s ease 0s;
 }
 .list-item >a{
     position: absolute;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     text-indent:-999px;
     z-index: 2;
 }
 .list-item-inner{
     padding: .2em .5em .2em;
     border-top: none;
     display: flex;
     flex-direction: column;
     justify-content: space-around;
     flex-grow: 1;
 }
 .list-item-date{
     color: #AAA;
     font-size: 80%;
	  text-align:right;
 }
 .list-item-category{
     display: flex;
     flex-wrap: wrap;
     justify-content: flex-end;
     margin-top: .2em;
     margin-bottom: .4em;
     font-size: 80%;
     font-weight: bold;
 }
 .list-item-category-item{
     display: block;
     margin-top: .1em;
     margin-left: .1em;
     /*padding: .3em 1em;*/
     border-radius: 2px;
     background: var(--accent-color);
     color: #FFF;
	  position: relative;
	  z-index:3;
 }
.list-item-category-item >a{
   display: block;
   padding: .3em 1em;
 }
 .list-item-category-item:hover {
   opacity: 0.6;
 }
 .list-item-img{
   display: block;
   width: 100%;
   padding: .3em;
   align-self: auto;
 }
 .list-item-title{
   margin: .5em .5em 0 .5em;
   font-weight: bold;
   font-size:18px;
   padding: 0.2em;
   height: fit-content;
   overflow: hidden;
   display: flex;
   align-items: center;
 }
 .list-item article{
   display: flex;
 }

HTML の list-item 部分

list-item-title を一番上に持ってきて、タイトルが上にくるようにした。
スニペットを追加した。投稿日と最終更新日のスクリプトを埋め込んだ。投稿日、更新日のSVGアイコンを使うため、SVGセクションを追加した。結果はこんな感じ。

	<div class='list-item'>        
		<h3 class='list-item-title'><data:post.title/></h3>
       <article>
         <b:if cond='data:post.thumbnailUrl'>
           <a expr:href='data:post.url'>
             <img class='list-item-img' expr:src='resizeImage(data:post.firstImageUrl, 480, &quot;2:1&quot;)'/>
           </a>
         </b:if>
         <div class='list-item-inner'>
           <!--スニペット追加-->
           <div class='snippet-body'>
             <b:eval expr='snippet(data:post.body, { length: 60 })'/>
           </div>
           <p class='list-item-category'>
             <b:loop values='data:post.labels' var='label'>
               <span class='list-item-category-item'>
                 <a expr:href='data:label.url'><data:label.name/></a>
               </span>
             </b:loop>
           </p>
           <p class='list-item-date'>
             <script type='text/javascript'>
               // 投稿日と最終更新日
               var published=new Date(&quot;<data:post.timestampISO8601/>&quot;);
               var updated =new Date(&quot;<data:post.lastUpdatedISO8601/>&quot;);
               var pp_Y = &quot;&quot;+published.getFullYear();
               var pp_M = (&quot;0&quot;+(published.getMonth()+1)).slice(-2);
               var pp_D = (&quot;0&quot;+published.getDate()).slice(-2);
               var dd_Y = &quot;&quot;+updated.getFullYear();
               var dd_M = (&quot;0&quot;+(updated.getMonth()+1)).slice(-2);
               var dd_D = (&quot;0&quot;+updated.getDate()).slice(-2);
               var jsdate = &quot;<svg class='svg'><use xlink:href='#svg-pen'/></svg> &quot; + pp_Y+&quot;/&quot;+pp_M+&quot;/&quot;+pp_D+&quot; &quot;;
               var jsdate2= &quot;&quot;;
               if(dd_D == pp_D &amp;&amp; dd_M == pp_M &amp;&amp; dd_Y == pp_Y){
               }else{
               jsdate2= &quot;<svg class='svg'><use xlink:href='#svg-sync'/></svg> &quot; +dd_Y+&quot;/&quot;+dd_M+&quot;/&quot;+dd_D+&quot;&quot;;
               }
               document.write(jsdate + jsdate2)
             </script>
           </p>
         </div>
 		</article>
   	<a expr:href='data:post.url'/>
   </div>

各カスタマイズの参考にしたサイト

まずは、最終更新日。投稿日、更新日が一緒の場合は更新日を表示しないようにして、更新マークアイコンも消えるようにスクリプト内に埋め込んだ。

投稿日のほうには、先頭に鉛筆アイコンが欲しいので、ここを参考に追加。
まあ、最終的には、SVGで埋め込んだので、こことは違うかも。

SVGでのアイコン埋め込み方法は、ここ。英語だけど、一番シンプルな説明で分かりやすかった。ちなみに、参考にしている、”ふじろじっく”さんところも、SVG埋め込んであるみたい。まとまっているので、一旦、SVGセクション丸ごと貰っちゃいました。iタグ、<i class="fab fa-twitter"></i>みたい になっているところを順次入れ替えたり、自分が使っているアイコン追加して整備する予定。

(2021/03/02追記)ホバーアニメーションの対応もこの時してたのを忘れてました。参考記事のリンク探してて、ここに入れてないの気づきました。


とりあえず、今日は、ここまで。

完成形はこんな感じ。だいぶ、よくなってきた。形だけで、記事は全く増えず。これでいいのか、このブログ??

スクリーンショット 2021-02-01 155415


いいなと思ったら応援しよう!