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 @@ @@ -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 || {} 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(() => {

{{ page.title }}

- +
diff --git a/packages/theme/src/client/components/PostItem.vue b/packages/theme/src/client/components/PostItem.vue index 9009cea8..574d04e3 100644 --- a/packages/theme/src/client/components/PostItem.vue +++ b/packages/theme/src/client/components/PostItem.vue @@ -1,6 +1,7 @@