diff --git a/.commitlintrc.js b/.commitlintrc.js
index b03ace4a..f5710b03 100644
--- a/.commitlintrc.js
+++ b/.commitlintrc.js
@@ -6,7 +6,7 @@ const packages = fs.readdirSync(path.resolve(__dirname, 'packages'))
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
- 'scope-enum': [2, 'always', [...packages]],
+ 'scope-enum': [2, 'always', ['docs', ...packages]],
'footer-max-line-length': [0],
},
}
diff --git a/docs/.vuepress/public/images/big-banner.jpg b/docs/.vuepress/public/images/big-banner.jpg
index 4dd9c10f..70bf620c 100644
Binary files a/docs/.vuepress/public/images/big-banner.jpg and b/docs/.vuepress/public/images/big-banner.jpg differ
diff --git a/docs/.vuepress/public/images/home-bg.jpg b/docs/.vuepress/public/images/home-bg.jpg
new file mode 100644
index 00000000..95636186
Binary files /dev/null and b/docs/.vuepress/public/images/home-bg.jpg differ
diff --git a/docs/1.前端/10.开发/1px解决方案.md b/docs/1.前端/10.开发/1px解决方案.md
index d8d73a41..786cf2cc 100644
--- a/docs/1.前端/10.开发/1px解决方案.md
+++ b/docs/1.前端/10.开发/1px解决方案.md
@@ -7,8 +7,7 @@ tags:
- html
- css
- develop
-top: false
-type: null
+banner: /images/big-banner.jpg
---
在日常移动端前端应用开发中,经常遇到一个问题就是 1px的线在移动端 Retina屏下的渲染并未达到预期。以下总几种不同场景下的 1px解决方案。
diff --git a/docs/README.md b/docs/README.md
index a146d4bf..219152e7 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,5 +1,5 @@
---
home: true
-# banner: https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F2019-08-20%2F5d5bb3ec573e4.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1651329706&t=5dac9f133df18a9cdcef5003e33f0b03
-# mobileBanner: https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg9.51tietu.net%2Fpic%2F2019-091215%2Fg1s4d0voiqog1s4d0voiqo.jpg&refer=http%3A%2F%2Fimg9.51tietu.net&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1651329706&t=b0bc39d9dc448a3e77c6f5f0b544f516
+banner: /images/big-banner.jpg
+motto: 世间的美好总是不期而遇,恬静而自然。
---
diff --git a/packages/theme/src/client/components/BackToTop.vue b/packages/theme/src/client/components/BackToTop.vue
index 725e2059..63c7b507 100644
--- a/packages/theme/src/client/components/BackToTop.vue
+++ b/packages/theme/src/client/components/BackToTop.vue
@@ -1,9 +1,12 @@
@@ -83,6 +90,20 @@ const socialList = useSocialList()
+
+
+
+
{{ postStat.postTotal }}
+
+
+
+ {{ postStat.categoryTotal }}
+
+
+
+ {{ postStat.tagTotal }}
+
+
@@ -131,5 +152,30 @@ const socialList = useSocialList()
height: 24px;
}
}
+
+ .post-stat {
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ border-top: 1px solid var(--c-border);
+ margin-top: 0.75rem;
+ padding-top: 1rem;
+
+ .post-stat-item {
+ text-align: center;
+ color: var(--c-text-quote);
+ .icon {
+ width: 32px;
+ height: 32px;
+ color: var(--c-text-lightest);
+ }
+ span {
+ display: inline-block;
+ width: 100%;
+ font-size: 20px;
+ font-weight: 500;
+ }
+ }
+ }
}
diff --git a/packages/theme/src/client/components/HomeBigBanner.vue b/packages/theme/src/client/components/HomeBigBanner.vue
index cba25da7..b643f7eb 100644
--- a/packages/theme/src/client/components/HomeBigBanner.vue
+++ b/packages/theme/src/client/components/HomeBigBanner.vue
@@ -2,15 +2,19 @@
import { usePageFrontmatter, withBase } from '@vuepress/client'
import { isLinkHttp } from '@vuepress/shared'
import { computed, onMounted, ref } from 'vue'
-import type { PlumeThemeHomeFrontmatter } from '../../shared'
+import type {
+ PlumeThemeHomeFrontmatter,
+ PlumeThemeLocaleOptions,
+} from '../../shared'
+import { useThemeLocaleData } from '../composables'
+import { scrollTo } from '../utils'
+import { ArrowBottomIcon } from './icons'
const frontmatter = usePageFrontmatter()
const MOBILE_WIDTH = 716
const bannerImg = ref(frontmatter.value.banner || '')
-const hasBanner = computed(
- () => !!(frontmatter.value.banner || frontmatter.value.mobileBanner)
-)
+const hasBanner = computed(() => !!bannerImg.value)
const bannerStyle = computed(() => {
if (!hasBanner.value) return ''
const url = isLinkHttp(bannerImg.value)
@@ -37,21 +41,112 @@ onMounted(() => {
window.addEventListener('resize', handleResize, false)
window.addEventListener('orientationchange', handleResize, false)
})
+let screenHeight = 0
+const arrowHandle = (): void => {
+ if (!screenHeight) {
+ screenHeight =
+ document.documentElement.clientHeight || document.body.clientHeight
+ screenHeight -=
+ document.querySelector('.navbar-wrapper')?.offsetHeight || 0
+ }
+ scrollTo(document, screenHeight)
+}
+
+const themeLocale = useThemeLocaleData()
+const avatar = themeLocale.value.avatar || {}
-
+
+
+
+
+
![]()
+
+
{{ avatar.name }}
+
+ {{ frontmatter.motto }}
+
+
+
diff --git a/packages/theme/src/client/components/Page.vue b/packages/theme/src/client/components/Page.vue
index 4409bd99..64de2072 100644
--- a/packages/theme/src/client/components/Page.vue
+++ b/packages/theme/src/client/components/Page.vue
@@ -3,11 +3,11 @@ import DropdownTransition from '@theme-plume/DropdownTransition.vue'
import PostMeta from '@theme-plume/PostMeta.vue'
import Sidebar from '@theme-plume/Sidebar.vue'
import { usePageData } from '@vuepress/client'
-import { computed, nextTick, onUnmounted, watchEffect } from 'vue'
+import { computed } from 'vue'
import type { PlumeThemePageData } from '../../shared'
import { useDarkMode, useThemeLocaleData } from '../composables'
-import { getCssValue } from '../utils'
import Toc from './Toc'
+
const page = usePageData()
const themeLocale = useThemeLocaleData()
const isDarkMode = useDarkMode()
@@ -29,7 +29,7 @@ const enabledSidebar = computed(() => {
-
-
-+
+
+