修改:最新页面改时间轴

This commit is contained in:
xugaoyi 2020-03-03 17:22:50 +08:00
parent c30c21408f
commit 121180f5bf
4 changed files with 198 additions and 56 deletions

View File

@ -41,7 +41,7 @@ module.exports = [
]
},
{text: '关于', link: '/pages/81d9f505441078e0/'},
{text: '最新', link: '/pages/8818d4830dac5e2a/'},
{text: '时间轴', link: '/pages/8818d4830dac5e2a/'},
// {text: '前端', link: '/01.前端/01.JavaScript/01.JavaScript中的名词概念'},
// {text: '页面', link: '/02.页面/01.html-css/00.flex布局语法'},

View File

@ -1,6 +1,9 @@
//
body
background: none
a,input,button{outline: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0); -webkit-focus-ring-color: rgba(0, 0, 0, 0);}
// md
.theme-default-content .but
background $accentColor

View File

@ -1,8 +1,8 @@
const re = /.*\/(.*?)\.(html|md)/
export function getPagesList(posts) {
console.log('------')
let pagesList = {}
let tagGroup = {}
// 过滤非文章页
posts = filterNotArticle(posts)
@ -14,9 +14,12 @@ export function getPagesList(posts) {
const pathArr = post.relativePath.split('/')
return {
...post,
// ...post,
title: post.title,
path: post.path,
// lastUpdated: post.lastUpdated,
updateTimestamp: date.getTime(), // 更新日期的时间戳
filename: execs ? execs['1'] : '',
// filename: execs ? execs['1'] : '',
formatDay: formatDate(date),
year: date.getFullYear(),
tag: /\./g.test(pathArr[0]) ? pathArr[1].split('.')[1] : pathArr[0] // 区分是单独合集的笔记还是文章
@ -28,7 +31,6 @@ export function getPagesList(posts) {
let pageYearArr = []
let pageYearObj = {}
pages.forEach( page => {
// 全部
if (!pageYearObj[page.year]){
pageYearArr.push({
@ -44,30 +46,31 @@ export function getPagesList(posts) {
})
}
// 按标签分组
//console.log(page.tag)
if (!pagesList[page.tag]) {
pagesList[page.tag] = []
} else {
// 加入标签属性
if (!tagGroup[page.tag]) {
tagGroup[page.tag] = []
}
})
// 根据标签分组
pagesList['全部'] = pageYearArr
console.log(pagesList)
}
// 按年份分组
function pageGrouping(){
for (let item in tagGroup) { // 循环标签
for(let i in pageYearArr) { // 循环全部
const filterTag = pageYearArr[i].pageList.filter(page => { // 按标签过滤
return page.tag === item
})
if (filterTag.length) { // 该年份中有数据才加入
tagGroup[item].push({
year: pageYearArr[i].year,
pageList: filterTag
})
}
}
}
pagesList.tagGroup = tagGroup
pagesList.allPage = pageYearArr // 加入全部
return pagesList
}
@ -107,7 +110,8 @@ function formatDate(date) {
if (!(date instanceof Date)) {
return
}
return `${date.getFullYear()}/${zero(date.getMonth() + 1)}/${zero(date.getDate())}`
// return `${date.getFullYear()}/${zero(date.getMonth() + 1)}/${zero(date.getDate())}`
return `${zero(date.getMonth() + 1)}-${zero(date.getDate())}`
}
// 补0

View File

@ -5,33 +5,45 @@ permalink: /pages/8818d4830dac5e2a
sidebar: false
article: false # 不显示最近更新栏,以及不参与到最近更新文章数据计算
comment: false
editLink: false
---
<!-- <div class="tags">
{{getTags}}
<span class="active">全部</span>
<span>JavaScript文章</span>
<span>Vue文章</span>
<span>《JavaScript教程》笔记</span>
<span>《ES6 教程》笔记</span>
<span>JavaScript文章</span>
<span>Vue文章</span>
<span>《JavaScript教程》笔记</span>
<span>《ES6 教程》笔记</span>
<span>JavaScript文章</span>
<span>Vue文章</span>
<span>《JavaScript教程》笔记</span>
<span>《ES6 教程》笔记</span>
<span>JavaScript文章</span>
<span>Vue文章</span>
<span>《JavaScript教程》笔记</span>
<span>《ES6 教程》笔记</span>
<span>JavaScript文章</span>
<span>Vue文章</span>
<span>《JavaScript教程》笔记</span>
<span>《ES6 教程》笔记</span>
</div> -->
<div class="tags">
<span :class="{active: currentTag === '全部'}" :style="randomBgcolor()" @click="toggleTag('全部')">全部</span>
<span
:class="{active: currentTag === key}"
v-for="(item, key) of getPages.tagGroup"
:style="randomBgcolor()"
@click="toggleTag(key)"
>
{{key}}
</span>
</div>
<!-- <transition-group class="timeline-wrapper"> -->
<div class="timeline-wrapper">
<transition-group tag="ul"> <!--tag转为ul-->
<li class="desc" key="0">只争朝夕,不负韶华!( •̀ ω •́ )✧</li>
<template v-for="yearItem in tagPages()">
<li :key="yearItem.year">
<h3 class="year">{{yearItem.year}}</h3>
<div class="year-wrapper">
<transition-group tag="span"> <!--tag转为ul-->
<router-link :to="item.path" v-for="item in yearItem.pageList" :key="item.path.slice(-6)">
<span class="date">{{item.formatDay}}</span>
<span class="title">{{item.title}}</span>
</router-link>
</transition-group>
</div>
</li>
</template>
</transition-group>
</div>
<!--
<ul class="page-guide-ul">
<li
class="page-guide-row"
@ -46,7 +58,7 @@ comment: false
<div @click="loadMore" class="page-guide-btn" v-if="showBtn">
<div ref="btn">{{btnInfo}}</div>
</div>
</div> -->
<script>
import { getTopKPosts, getPagesList } from '../.vuepress/theme/util/getTopKPosts'
@ -54,7 +66,8 @@ import { getTopKPosts, getPagesList } from '../.vuepress/theme/util/getTopKPosts
export default {
data() {
return {
pagesList: {},
currentTag: "全部",
step: 20,
posts: [],
page: 1,
@ -71,9 +84,10 @@ export default {
},
computed: {
getTags() {
getPagesList(this.posts)
getPages() {
return getPagesList(this.posts)
},
topPublishPosts() {
// return this.getTopKPosts(this.page * this.step)
return getTopKPosts(this.posts, this.page * this.step)
@ -81,7 +95,31 @@ export default {
},
methods: {
// 根据标签获取数据
tagPages() {
if (this.currentTag === "全部") {
return this.getPages.allPage
} else {
return this.getPages.tagGroup[this.currentTag]
}
},
// 切换标签
toggleTag(tag) {
this.currentTag = tag
},
// 随机背景色
randomBgcolor() {
const bgcs = [
'#11a8cd',
'#F8B26A',
'#67CC86',
'#E15B64',
'#F47E60',
'#849B87'
]
return { background: `${bgcs[Math.floor(Math.random() * bgcs.length)]}`}
},
@ -135,6 +173,8 @@ export default {
</script>
<style scoped lang="stylus" rel="stylesheet/stylus">
.tags
margin 30px 0
span
@ -148,12 +188,107 @@ export default {
color: #fff;
line-height: 13px;
font-size: 13px;
box-shadow: var(--box-shadow);
transition: all .5s;
opacity: 0.9;
box-shadow: 2px 2px 5px #ccc;
&.active
transform: scale(1.2);
opacity: 1;
&:not(.active):hover
transform: scale(1.1);
transform: scale(1.05);
.v-enter{
opacity: 0;
transform: translateX(30px);
}
.v-leave{
opacity: 0;
}
ul
list-style: none;
.timeline-wrapper ul
box-sizing: border-box;
margin: 4rem auto;
position: relative;
&:after
content: " ";
position: absolute;
top: 14px;
left: 0;
z-index: -1;
margin-left: -2px;
width: 4px;
height: 100%;
background: #EAECEF;
>li
transition: transform 0.25s ease-in-out 0.08s;
margin-bottom: 50px;
.year
margin: 0;
font-weight: 700;
font-size: 26px;
.desc,.year
position: relative;
.desc:before,.year:before
content: " ";
position: absolute;
z-index: 2;
left: -20px;
top: 50%;
margin-left: -4px;
margin-top: -4px;
width: 8px;
height: 8px;
background: #fff;
border: 1px solid #EAECEF;
border-radius: 50%;
.year-wrapper
padding-left: 0!important;
a
display: flex;
padding: 30px 0 10px;
list-style: none;
border-bottom: 1px dashed #EAECEF;
position: relative;
color: #666;
transition: all .25s;
.date
width: 40px;
line-height: 30px;
font-size: 13px;
margin-right: 5px;
color: #999;
&:before
content: " ";
position: absolute;
left: -19px;
top: 41px;
width: 6px;
height: 6px;
margin-left: -4px;
background: #fff;
border-radius: 50%;
border: 1px solid #EAECEF;
z-index: 2;
&:hover
text-decoration:none
color: $accentColor
.date
color: $accentColor
.date:before
background: $accentColor
.page-guide-ul {
padding-left: 0;