背景
逛知乎时看见知乎上的卡片式分享链接,挺吸引我的,所谓不折腾不死, 我这样一个不会自己研究又想实现的人,遂寻求谷歌大法解决,最后让我找着了。以下便是实现的过程。
第一步:新建
首先在主题目录下,在next/source/css/js/下新建一个linkcard.js文件,并写入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 window .onload=function ( ) { var LinkCards=document .getElementsByClassName('LinkCard' ); if (LinkCards.length != 0 ){ var LinkCard=LinkCards[0 ]; var link=LinkCard.href; var title=LinkCard.innerText; LinkCard.innerHTML="<style type=text/css>.LinkCard,.LinkCard:hover{text-decoration:none;border:none!important;color:inherit!important}.LinkCard{position:relative;display:block;margin:1em auto;width:390px;box-sizing:border-box;border-radius:12px;max-width:100%;overflow:hidden;color:inherit;text-decoration:none}.ztext{word-break:break-word;line-height:1.6}.LinkCard-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;background-repeat:no-repeat;-webkit-filter:blur(20px);filter:blur(20px);background-size:cover;background-position:center}.LinkCard,.LinkCard:hover{text-decoration:none;border:none!important;color:inherit!important}.LinkCard-content{position:relative;display:flex;align-items:center;justify-content:space-between;padding:12px;border-radius:inherit;background-color:rgba(246,246,246,0.88)}.LinkCard-text{overflow:hidden}.LinkCard-title{display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;max-height:calc(16px * 1.25 * 2);font-size:16px;font-weight:500;line-height:1.25;color:#1a1a1a}.LinkCard-meta{display:flex;margin-top:4px;font-size:14px;line-height:20px;color:#999;white-space:nowrap}.LinkCard-imageCell{margin-left:8px;border-radius:6px}.LinkCard-image{display:block;width:60px;height:auto;border-radius:inherit;margin-bottom:0!important}</style><span class=LinkCard-backdrop style=background-image:url(/images/logo.svg)></span><span class=LinkCard-content><span class=LinkCard-text><span class=LinkCard-title>" +title+"</span><span class=LinkCard-meta><span style=display:inline-flex;align-items:center><svg class=" +"'Zi Zi--InsertLink'" +" fill=currentColor viewBox=" +"'0 0 24 24'" +" width=17 height=17><path d=" +"'M6.77 17.23c-.905-.904-.94-2.333-.08-3.193l3.059-3.06-1.192-1.19-3.059 3.058c-1.489 1.489-1.427 3.954.138 5.519s4.03 1.627 5.519.138l3.059-3.059-1.192-1.192-3.059 3.06c-.86.86-2.289.824-3.193-.08zm3.016-8.673l1.192 1.192 3.059-3.06c.86-.86 2.289-.824 3.193.08.905.905.94 2.334.08 3.194l-3.059 3.06 1.192 1.19 3.059-3.058c1.489-1.489 1.427-3.954-.138-5.519s-4.03-1.627-5.519-.138L9.786 8.557zm-1.023 6.68c.33.33.863.343 1.177.029l5.34-5.34c.314-.314.3-.846-.03-1.176-.33-.33-.862-.344-1.176-.03l-5.34 5.34c-.314.314-.3.846.03 1.177z'" +" fill-rule=evenodd></path></svg></span>" +link+"</span></span><span class=LinkCard-imageCell><img class=LinkCard-image alt=logo src=/images/logo.svg></span></span>" ; for (var i = LinkCards.length - 1 ; i >= 1 ; i--) { LinkCard=LinkCards[i]; title=LinkCard.innerText; link=LinkCard.href; LinkCard.innerHTML="<span class=LinkCard-backdrop style=background-image:url(/images/logo.svg)></span><span class=LinkCard-content><span class=LinkCard-text><span class=LinkCard-title>" +title+"</span><span class=LinkCard-meta><span style=display:inline-flex;align-items:center><svg class=" +"'Zi Zi--InsertLink'" +" fill=currentColor viewBox=" +"'0 0 24 24'" +" width=17 height=17><path d=" +"'M6.77 17.23c-.905-.904-.94-2.333-.08-3.193l3.059-3.06-1.192-1.19-3.059 3.058c-1.489 1.489-1.427 3.954.138 5.519s4.03 1.627 5.519.138l3.059-3.059-1.192-1.192-3.059 3.06c-.86.86-2.289.824-3.193-.08zm3.016-8.673l1.192 1.192 3.059-3.06c.86-.86 2.289-.824 3.193.08.905.905.94 2.334.08 3.194l-3.059 3.06 1.192 1.19 3.059-3.058c1.489-1.489 1.427-3.954-.138-5.519s-4.03-1.627-5.519-.138L9.786 8.557zm-1.023 6.68c.33.33.863.343 1.177.029l5.34-5.34c.314-.314.3-.846-.03-1.176-.33-.33-.862-.344-1.176-.03l-5.34 5.34c-.314.314-.3.846.03 1.177z'" +" fill-rule=evenodd></path></svg></span>" +link+"</span></span><span class=LinkCard-imageCell><img class=LinkCard-image alt=logo src=/images/logo.svg></span></span>" ; } } }
然后在next/layout/_layout.swig文件中引入linkcard.js
1 2 3 4 5 6 7 8 9 {% include '_third-party/rating.swig' %} {% include '_third-party/pangu.swig' %} {% include '_third-party/scroll-cookie.swig' %} {% include '_third-party/bookmark.swig' %} {% include '_third-party/copy-code.swig' %} {% include '_custom/custom.swig' %} + <script type="text/javascript" src="/js/linkcard.js"></script> </body>
第二步:使用
其中需要注意的是linkcard.js文件中有两个图片链接<span class=LinkCard-backdrop style=background-image:url(/images/logo.svg)></span>
以及<span class=LinkCard-imageCell><img class=LinkCard-image alt=logo src=/images/logo.svg></span>
前者是卡片的背景,后者是卡片右侧的logo。
然后使用的话,很简单,只要在引用链接的时候在markdown中以如下格式书写链接就可以:
长弓不是弓长
1 <a href ="http://52chang.wang" class ="LinkCard" > 长弓不是弓长</a >