<template>
|
<div class="recent-posts" id="recent-posts">
|
<div class="recent-post-item">
|
<div class="miniTag" v-if="isTop==1">置顶</div>
|
<div class="post_cover left_radius" v-if="index%2==0">
|
|
<a :href="jumpURL" target="_blank" class="no-underline" v-if="articleFileType==5"
|
@click="showMsg(articleFileType,jumpURL)">
|
<div class="block left_radius"></div>
|
<img class="post_bg" :src="coverFileURL" :onerror="img404" :alt="title">
|
</a>
|
<router-link :to="{path:'/mdDetail',query:{id:id}}" :title="title" v-else>
|
<div class="block left_radius"></div>
|
<img class="post_bg" :src="coverFileURL" :onerror="img404" :alt="title">
|
</router-link>
|
</div>
|
|
<div class="post_cover right_radius" v-else>
|
<a :href="jumpURL" target="_blank" class="no-underline" v-if="articleFileType==5"
|
@click="showMsg(articleFileType,jumpURL)">
|
<div class="block left_radius"></div>
|
<img class="post_bg" :src="coverFileURL" :onerror="img404" :alt="title">
|
</a>
|
<router-link :to="{path:'/mdDetail',query:{id:id}}" :title="title" v-else>
|
<div class="block right_radius"></div>
|
<img class="post_bg" :src="coverFileURL" :onerror="img404" :alt="title">
|
<!-- <img class="post_bg" src="https://unpkg.zhimg.com/ahzo@1.0.3/blogpic/1.jpg" onerror="this.onerror=null,this.src="/img/404.jpg"" :alt="title"> -->
|
</router-link>
|
</div>
|
|
<div class="recent-post-info">
|
|
<a :href="jumpURL" target="_blank" class="article-title" v-if="articleFileType==5"
|
@click="showMsg(articleFileType,jumpURL)">
|
<a-icon type="lock" style="color:rgba(0,0,0,.25)" v-if="authStatus==3" />
|
<a-icon type="stop" style="color:rgba(0,0,0,.25)" v-if="authStatus==2" />
|
{{title}}
|
<a-badge :count="1" dot v-if="isAnyUpdate==1" title="最近有更新"></a-badge>
|
</a>
|
|
<router-link :to="{path:'/mdDetail',query:{id:id}}" class="article-title" v-else>
|
<a-icon type="lock" style="color:rgba(0,0,0,.25)" v-if="authStatus==3" />
|
<a-icon type="stop" style="color:rgba(0,0,0,.25)" v-if="authStatus==2" />
|
{{title}}
|
<a-badge :count="1" dot v-if="isAnyUpdate==1" title="最近有更新"></a-badge>
|
</router-link>
|
<!-- <a class="article-title" href="/mdDetail" :title="title"> {{title}}</a> -->
|
<div class="article-meta-wrap" style="display: flex;">
|
<span class="post-meta-date">
|
<a-icon type="calendar" />
|
<span class="article-meta-label"></span>
|
<time datetime="2022-01-13T06:25:00.000Z" title=" 2022-01-13 14:25:00"> {{publishDate}} </time>
|
</span>
|
<span class="article-meta__separator" style="margin: 0px 3px ;"> | </span>
|
|
<span class="article-meta">
|
<a-icon type="book" />
|
<router-link :to="{path:'/articleList',query:{typeId:articleTypeId}}"
|
class="article-meta__categories"> {{articleTypeName}}</router-link>
|
<span v-if="articleFileType==5">
|
<span v-if="jumpURL !=null && jumpURL!=''">
|
<span class="article-meta__separator" style="margin: 0px 3px ;">|</span>
|
<span class="post-meta-date">
|
<a-icon type="share-alt" />
|
<a :href="jumpURL" target="_blank" class="no-underline"> 外链 </a>
|
</span>
|
</span>
|
|
<span v-else>
|
<span class="article-meta__separator" style="margin: 0px 3px ;">|</span>
|
<span class="post-meta-date">
|
<a-icon type="thunderbolt" />碎碎念
|
</span>
|
</span>
|
</span>
|
<!-- <a class="article-meta__categories" href="#"> {{tag}}</a> -->
|
</span>
|
</div>
|
<div class="content">
|
{{introduce}}
|
</div>
|
</div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import {
|
NotificationOutlined
|
} from '@ant-design/icons-vue';
|
|
export default {
|
methods: {
|
showMsg(articleFileType, jumpURL) {
|
if (articleFileType == 5 && (jumpURL == null || jumpURL == "")) {
|
this.$message.info('这只是一句碎碎念,没有更多内容啦', 3);
|
return
|
}
|
}
|
},
|
components: {
|
NotificationOutlined
|
},
|
props: {
|
"index": {
|
default: 0,
|
},
|
"id": {
|
default: 0,
|
},
|
"articleTypeId": {
|
default: null
|
},
|
"isTop": {
|
default: 0,
|
},
|
"authStatus": {
|
default: 1,
|
},
|
"title": {
|
default: "",
|
},
|
"articleTypeName": {
|
default: "",
|
},
|
"introduce": {
|
default: "",
|
},
|
"publishDate": {
|
default: "",
|
},
|
"updateDate": {
|
default: "",
|
},
|
"coverFileURL": {
|
default: "",
|
},
|
"isAnyUpdate": {
|
default: "",
|
},
|
"articleFileType": {
|
default: 1,
|
},
|
"jumpURL": {
|
default: "",
|
}
|
},
|
data() {
|
return {
|
img404: "this.onerror='';this.src=\"http://t.inleft.com/share/media_photo/1.jpg\"",
|
}
|
}
|
}
|
</script>
|
|
<style lang="less">
|
@card-bg: #f5f8fa;
|
@card-box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1), -8px -8px 18px rgba(255, 255, 255, 1);
|
@ahzoo-proportion: 1;
|
@cursorURL: "https://blog.ahzoo.cn/blogpic/normal.cur";
|
@global-font-size: 14px;
|
@font-color: #666;
|
@title-clolr: dimgray;
|
@card-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0.2), 0 0 0 rgba(255, 255, 255, 0.8), inset 9px 9px 15px rgba(0, 0, 0, 0.1), inset -9px -9px 15px rgba(255, 255, 255, 1);
|
|
.recent-post-item {
|
position: relative;
|
|
a {
|
position: initial;
|
}
|
}
|
|
.miniTag {
|
z-index: 1;
|
position: absolute;
|
right: 8px;
|
top: 8px;
|
transform: rotate(30deg);
|
box-shadow: aliceblue;
|
}
|
|
// #recent-posts>.recent-post-item:not(:first-child) {
|
// margin-top: 1rem;
|
// }
|
#recent-posts>.recent-post-item {
|
margin-top: 1rem;
|
}
|
|
#recent-posts>.recent-post-item {
|
display: -webkit-box;
|
display: -moz-box;
|
display: -webkit-flex;
|
display: -ms-flexbox;
|
display: box;
|
display: flex;
|
-webkit-box-orient: horizontal;
|
-moz-box-orient: horizontal;
|
-o-box-orient: horizontal;
|
-webkit-flex-direction: row;
|
-ms-flex-direction: row;
|
flex-direction: row;
|
-webkit-box-align: center;
|
-moz-box-align: center;
|
-o-box-align: center;
|
-ms-flex-align: center;
|
-webkit-align-items: center;
|
align-items: center;
|
border-radius: 12px 8px 8px 12px;
|
|
-webkit-transition: all .3s;
|
-moz-transition: all .3s;
|
-o-transition: all .3s;
|
-ms-transition: all .3s;
|
transition: all .3s;
|
|
background: @card-bg;
|
-webkit-box-shadow: @card-box-shadow;
|
box-shadow: @card-box-shadow;
|
|
}
|
|
.recent-post-item a {
|
// color: #99a9bf;
|
text-decoration: none;
|
word-wrap: break-word;
|
-webkit-transition: all .2s;
|
-moz-transition: all .2s;
|
-o-transition: all .2s;
|
-ms-transition: all .2s;
|
transition: all .2s;
|
overflow-wrap: break-word;
|
background-color: transparent;
|
}
|
|
.recent-post-item {
|
padding-left: calc(1.2rem * @ahzoo-proportion) !important;
|
padding-right: calc(1.2rem * @ahzoo-proportion) !important;
|
// font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Lato, Roboto, 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
line-height: 2;
|
|
img {
|
max-width: 100%;
|
-webkit-transition: all .2s;
|
-moz-transition: all .2s;
|
-o-transition: all .2s;
|
-ms-transition: all .2s;
|
transition: all .2s;
|
border-style: none;
|
}
|
}
|
|
.recent-post-item * {
|
//cursor: url(@cursorURL), auto !important;
|
font-size: @global-font-size;
|
color: @font-color;
|
}
|
|
* {
|
tap-highlight-color: transparent;
|
-webkit-tap-highlight-color: transparent;
|
box-sizing: border-box;
|
}
|
|
#recent-posts>.recent-post-item .post_cover {
|
// position: sticky;
|
position: inherit;
|
|
width: 33%;
|
opacity: .8;
|
padding: calc(1.2rem * @ahzoo-proportion) calc(0.2rem * @ahzoo-proportion);
|
overflow: hidden;
|
height: 100%;
|
-webkit-mask-image: -webkit-radial-gradient(#fff, #000);
|
}
|
|
#recent-posts>.recent-post-item .left_radius {
|
border-radius: 8px 0 0 8px;
|
}
|
|
#recent-posts>.recent-post-item .right_radius {
|
-webkit-box-ordinal-group: 2;
|
-moz-box-ordinal-group: 2;
|
-o-box-ordinal-group: 2;
|
-ms-flex-order: 2;
|
-webkit-order: 2;
|
order: 2;
|
border-radius: 0 8px 8px 0;
|
border-top-left-radius: 0px;
|
border-top-right-radius: 8px;
|
border-bottom-right-radius: 8px;
|
border-bottom-left-radius: 0px;
|
}
|
|
.block.left_radius {
|
background: linear-gradient(to right, transparent, @card-bg 98%);
|
position: absolute;
|
width: 100%;
|
height: calc(100% - 2.2rem * @ahzoo-proportion);
|
z-index: 2;
|
top: calc(1.1rem * @ahzoo-proportion);
|
}
|
|
#recent-posts>.recent-post-item .post_cover img.post_bg {
|
border-radius: 15px;
|
width: 100%;
|
height: 100%;
|
-webkit-transition: all .6s;
|
-moz-transition: all .6s;
|
-o-transition: all .6s;
|
-ms-transition: all .6s;
|
transition: all .6s;
|
object-fit: cover;
|
}
|
|
.block.right_radius {
|
background: linear-gradient(to left, transparent, @card-bg 98%);
|
position: absolute;
|
width: 100%;
|
height: calc(100% - 2.2rem * @ahzoo-proportion);
|
z-index: 2;
|
top: calc(1.1rem * @ahzoo-proportion);
|
}
|
|
#recent-posts>.recent-post-item>.recent-post-info {
|
width: 77%;
|
padding: 0px calc(1.2rem * @ahzoo-proportion);
|
display: flex;
|
flex-direction: column;
|
overflow: hidden;
|
|
a {
|
text-decoration: none;
|
-webkit-transition: all .2s;
|
-moz-transition: all .2s;
|
-o-transition: all .2s;
|
-ms-transition: all .2s;
|
transition: all .2s;
|
overflow-wrap: break-word;
|
}
|
}
|
|
#recent-posts>.recent-post-item>.recent-post-info>.article-title {
|
order: 1;
|
font-weight: 600;
|
color: @title-clolr;
|
font-size: 1.6em;
|
margin-bottom: 0.3rem;
|
line-height: 1.4;
|
-webkit-transition: all .2s ease-in-out;
|
-moz-transition: all .2s ease-in-out;
|
-o-transition: all .2s ease-in-out;
|
-ms-transition: all .2s ease-in-out;
|
transition: all .2s ease-in-out;
|
|
display: -webkit-box;
|
overflow: hidden;
|
-webkit-box-orient: vertical;
|
/* autoprefixer: off */
|
-webkit-line-clamp: 2;
|
/* autoprefixer: on */
|
}
|
|
|
|
#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap {
|
order: 3;
|
color: #858585;
|
font-size: 90%;
|
flex-wrap: wrap;
|
|
.article-meta-label {
|
padding-right: 0.2rem;
|
}
|
}
|
|
#recent-posts>.recent-post-item>.recent-post-info>.content {
|
opacity: 0;
|
line-height: .8;
|
transition: all .25s;
|
color: #999;
|
margin-bottom: 19px;
|
text-overflow: ellipsis;
|
order: 2;
|
margin: 0;
|
|
display: -webkit-box;
|
overflow: hidden;
|
-webkit-box-orient: vertical;
|
/* autoprefixer: off */
|
-webkit-line-clamp: 3;
|
/* autoprefixer: on */
|
|
}
|
|
#recent-posts>.recent-post-item>.recent-post-info>.article-title:hover {
|
color: #448aff;
|
}
|
|
|
|
//div本体阴影
|
#recent-posts>.recent-post-item:hover {
|
-webkit-box-shadow: @card-hover-box-shadow;
|
box-shadow: @card-hover-box-shadow;
|
}
|
|
// 图片缩放
|
#recent-posts>.recent-post-item:hover img.post_bg {
|
-webkit-transform: scale(.9);
|
-moz-transform: scale(.9);
|
-o-transform: scale(.9);
|
-ms-transform: scale(.9);
|
transform: scale(.9);
|
-webkit-box-shadow: @card-hover-box-shadow;
|
box-shadow: @card-hover-box-shadow;
|
}
|
|
//内容缩放 内容显示
|
#recent-posts>.recent-post-item:hover .recent-post-info .content {
|
opacity: 1;
|
line-height: 1.8;
|
transition: all .25s;
|
}
|
|
#recent-posts>.recent-post-item .post_cover img.post_bg:hover {
|
transform: scale(.9);
|
}
|
|
#recent-posts>.recent-post-item .post_cover img.post_bg:hover {
|
-webkit-transform: scale(1.1);
|
-moz-transform: scale(1.1);
|
-o-transform: scale(1.1);
|
-ms-transform: scale(1.1);
|
transform: scale(1.1);
|
}
|
|
@media screen and (max-width:768px) {
|
#recent-posts .recent-post-item .recent-post-info .article-title {
|
font-size: 1.32em !important;
|
margin-bottom: 0 !important;
|
}
|
}
|
|
@media screen and (min-width: 769px) {
|
#recent-posts>.recent-post-item>.recent-post-info>.content {
|
opacity: 0;
|
line-height: .8;
|
transition: all .25s;
|
color: #999;
|
margin-bottom: 10px;
|
display: -webkit-container;
|
-webkit-line-clamp: 3;
|
text-overflow: ellipsis;
|
overflow: hidden;
|
}
|
}
|
|
@media screen and (max-width: 768px) {
|
#recent-posts>.recent-post-item>.recent-post-info {
|
width: 69%;
|
font-size: 12px !important;
|
margin: .7rem 0;
|
}
|
}
|
|
@media screen and (max-width: 768px) {
|
#recent-posts>.recent-post-item>.recent-post-info>.content {
|
opacity: 1;
|
line-height: 1.7;
|
color: #999;
|
display: -webkit-container;
|
-webkit-line-clamp: 3;
|
text-overflow: ellipsis;
|
overflow: hidden;
|
}
|
}
|
|
@media screen and (min-width: 769px) {
|
#recent-posts>.recent-post-item {
|
height: 15em;
|
}
|
}
|
|
@media screen and (max-width: 768px) {
|
#recent-posts .recent-post-item {
|
height: 12em !important;
|
padding: 0;
|
-webkit-flex-direction: row;
|
-ms-flex-direction: row;
|
flex-direction: row;
|
}
|
}
|
|
@media only screen and (max-width: 768px) {
|
@ahzoo-proportion: 0.65;
|
@global-font-size: 12px;
|
}
|
</style>
|