|
|
|
@ -3,7 +3,7 @@ |
|
|
|
<top-search /> |
|
|
|
<ele-card :body-style="{ padding: '16px 8px' }"> |
|
|
|
<div class="article-list"> |
|
|
|
<div v-for="(item, index) in data" :key="item.id" class="list-item"> |
|
|
|
<div v-for="item in data" :key="item.id" class="list-item"> |
|
|
|
<div class="list-item-body"> |
|
|
|
<div style="flex: 1"> |
|
|
|
<ele-text size="md">{{ item.title }}</ele-text> |
|
|
|
@ -53,15 +53,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="list-item-extra"> |
|
|
|
<el-image |
|
|
|
fit="cover" |
|
|
|
:src="item.cover" |
|
|
|
:preview-src-list="previewList" |
|
|
|
:initial-index="index" |
|
|
|
:hide-on-click-modal="true" |
|
|
|
:preview-teleported="true" |
|
|
|
style="width: 100%; height: 100%" |
|
|
|
/> |
|
|
|
<img-grid :images="item.covers" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-divider style="margin: 0; opacity: 0.6" /> |
|
|
|
@ -77,16 +69,17 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script lang="ts" setup> |
|
|
|
import { ref, computed } from 'vue'; |
|
|
|
import { ref } from 'vue'; |
|
|
|
import { Star, CollectionTag, ChatLineSquare } from '@element-plus/icons-vue'; |
|
|
|
import TopSearch from '../project/components/top-search.vue'; |
|
|
|
import ImgGrid from './components/img-grid.vue'; |
|
|
|
|
|
|
|
interface Item { |
|
|
|
id: number; |
|
|
|
title: string; |
|
|
|
content: string; |
|
|
|
time: string; |
|
|
|
cover: string; |
|
|
|
covers: string[]; |
|
|
|
tags: string[]; |
|
|
|
user: string; |
|
|
|
avatar: string; |
|
|
|
@ -101,16 +94,16 @@ |
|
|
|
|
|
|
|
const page = ref(2); |
|
|
|
|
|
|
|
const previewList = computed(() => { |
|
|
|
return data.value.map((item) => item.cover); |
|
|
|
}); |
|
|
|
|
|
|
|
const query = () => { |
|
|
|
loading.value = true; |
|
|
|
setTimeout(() => { |
|
|
|
loading.value = false; |
|
|
|
page.value++; |
|
|
|
data.value = data.value.concat(data.value.slice(0, 3)); |
|
|
|
data.value = data.value.concat( |
|
|
|
data.value.slice(0, 3).map((d, i) => { |
|
|
|
return { ...d, id: data.value.length + i + 1 }; |
|
|
|
}) |
|
|
|
); |
|
|
|
}, 1000); |
|
|
|
}; |
|
|
|
|
|
|
|
@ -121,8 +114,14 @@ |
|
|
|
content: |
|
|
|
'Element, 一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的组件库, 提供了配套设计资源, 帮助你的网站快速成型。', |
|
|
|
time: '2 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/RZ8FQmZfHkcffMlTBCJllBFjEhEsObVo.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/WLXm7gp1EbLDtvVQgkeQeyq5OtDm00Jd.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/4Z0QR2L0J1XStxBh99jVJ8qLfsGsOgjU.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/ttkIjNPlVDuv4lUTvRX8GIlM2QqSe0jg.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/fAenQ8nvRjL7x0i0jEfuDBZHvJfHf3v6.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/LrCTN2j94lo9N7wEql7cBr1Ux4rHMvmZ.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: 'SunSmile', |
|
|
|
avatar: |
|
|
|
@ -137,8 +136,14 @@ |
|
|
|
content: |
|
|
|
'Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是, Vue 被设计为可以自底向上逐层应用。', |
|
|
|
time: '4 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/WLXm7gp1EbLDtvVQgkeQeyq5OtDm00Jd.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/4Z0QR2L0J1XStxBh99jVJ8qLfsGsOgjU.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/ttkIjNPlVDuv4lUTvRX8GIlM2QqSe0jg.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/fAenQ8nvRjL7x0i0jEfuDBZHvJfHf3v6.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/LrCTN2j94lo9N7wEql7cBr1Ux4rHMvmZ.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/yeKvhT20lMU0f1T3Y743UlGEOLLnZSnp.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: '你的名字很好听', |
|
|
|
avatar: |
|
|
|
@ -153,8 +158,14 @@ |
|
|
|
content: |
|
|
|
'Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化。', |
|
|
|
time: '12 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/4Z0QR2L0J1XStxBh99jVJ8qLfsGsOgjU.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/ttkIjNPlVDuv4lUTvRX8GIlM2QqSe0jg.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/fAenQ8nvRjL7x0i0jEfuDBZHvJfHf3v6.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/LrCTN2j94lo9N7wEql7cBr1Ux4rHMvmZ.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/yeKvhT20lMU0f1T3Y743UlGEOLLnZSnp.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/CyrCNmTJfv7D6GFAg39bjT3eRkkRm5dI.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: '全村人的希望', |
|
|
|
avatar: |
|
|
|
@ -169,8 +180,14 @@ |
|
|
|
content: |
|
|
|
'Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成, 让构建单页面应用变得易如反掌。', |
|
|
|
time: '14 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/ttkIjNPlVDuv4lUTvRX8GIlM2QqSe0jg.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/fAenQ8nvRjL7x0i0jEfuDBZHvJfHf3v6.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/LrCTN2j94lo9N7wEql7cBr1Ux4rHMvmZ.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/yeKvhT20lMU0f1T3Y743UlGEOLLnZSnp.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/CyrCNmTJfv7D6GFAg39bjT3eRkkRm5dI.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/RZ8FQmZfHkcffMlTBCJllBFjEhEsObVo.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: 'Jasmine', |
|
|
|
avatar: |
|
|
|
@ -184,8 +201,14 @@ |
|
|
|
title: 'Sass', |
|
|
|
content: 'Sass 是世界上最成熟、稳定、强大的专业级 CSS 扩展语言。', |
|
|
|
time: '10 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/fAenQ8nvRjL7x0i0jEfuDBZHvJfHf3v6.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/LrCTN2j94lo9N7wEql7cBr1Ux4rHMvmZ.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/yeKvhT20lMU0f1T3Y743UlGEOLLnZSnp.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/CyrCNmTJfv7D6GFAg39bjT3eRkkRm5dI.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/RZ8FQmZfHkcffMlTBCJllBFjEhEsObVo.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/WLXm7gp1EbLDtvVQgkeQeyq5OtDm00Jd.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: '酷酷的大叔', |
|
|
|
avatar: |
|
|
|
@ -200,8 +223,14 @@ |
|
|
|
content: |
|
|
|
'Axios 是一个基于 promise 的 HTTP 库, 可以用在浏览器和 node.js 中。', |
|
|
|
time: '16 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/LrCTN2j94lo9N7wEql7cBr1Ux4rHMvmZ.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/yeKvhT20lMU0f1T3Y743UlGEOLLnZSnp.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/CyrCNmTJfv7D6GFAg39bjT3eRkkRm5dI.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/RZ8FQmZfHkcffMlTBCJllBFjEhEsObVo.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/WLXm7gp1EbLDtvVQgkeQeyq5OtDm00Jd.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/4Z0QR2L0J1XStxBh99jVJ8qLfsGsOgjU.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: 'SunSmile', |
|
|
|
avatar: |
|
|
|
@ -216,8 +245,14 @@ |
|
|
|
content: |
|
|
|
'webpack 是一个模块打包器。webpack 的主要目标是将 JavaScript 文件打包在一起, 打包后的文件用于在浏览器中使用。', |
|
|
|
time: '6 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/yeKvhT20lMU0f1T3Y743UlGEOLLnZSnp.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/CyrCNmTJfv7D6GFAg39bjT3eRkkRm5dI.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/RZ8FQmZfHkcffMlTBCJllBFjEhEsObVo.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/WLXm7gp1EbLDtvVQgkeQeyq5OtDm00Jd.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/4Z0QR2L0J1XStxBh99jVJ8qLfsGsOgjU.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/ttkIjNPlVDuv4lUTvRX8GIlM2QqSe0jg.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: '全村人的希望', |
|
|
|
avatar: |
|
|
|
@ -232,8 +267,14 @@ |
|
|
|
content: |
|
|
|
'Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型, 使其轻量又高效。', |
|
|
|
time: '8 小时前', |
|
|
|
cover: |
|
|
|
covers: [ |
|
|
|
'https://cdn.eleadmin.com/20200610/CyrCNmTJfv7D6GFAg39bjT3eRkkRm5dI.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/RZ8FQmZfHkcffMlTBCJllBFjEhEsObVo.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/WLXm7gp1EbLDtvVQgkeQeyq5OtDm00Jd.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/4Z0QR2L0J1XStxBh99jVJ8qLfsGsOgjU.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/ttkIjNPlVDuv4lUTvRX8GIlM2QqSe0jg.jpg', |
|
|
|
'https://cdn.eleadmin.com/20200610/fAenQ8nvRjL7x0i0jEfuDBZHvJfHf3v6.jpg' |
|
|
|
], |
|
|
|
tags: ['EleAdminPro', 'UI框架', '设计语言'], |
|
|
|
user: 'Jasmine', |
|
|
|
avatar: |
|
|
|
@ -260,9 +301,7 @@ |
|
|
|
.list-item-extra { |
|
|
|
width: 280px; |
|
|
|
height: 175px; |
|
|
|
border-radius: 6px; |
|
|
|
margin-left: 12px; |
|
|
|
overflow: hidden; |
|
|
|
} |
|
|
|
|
|
|
|
@media screen and (max-width: 880px) { |
|
|
|
|