vuepress實現(xiàn)自定義首頁的樣式風(fēng)格
vuepress自定義首頁的樣式風(fēng)格
如何自定義vuepress的首頁設(shè)計風(fēng)格呢?比如,我希望首頁下面的紅框內(nèi)容是可點擊的:

請看正文步驟
正文
在docs -> .vuepress下新建theme文件夾,再在theme文件夾下新建components -> Home.vue, 將vuepress -> packages -> @vuepress -> theme-default -> Home.vue的源碼拷貝至我們的Home.vue即可,
在源碼里稍做修改便能滿足我們的業(yè)務(wù)需求
改過后的Home.vue代碼如下所示:
<template>
<main
class="home"
:aria-labelledby="data.heroText !== null ? 'main-title' : null"
>
<header class="hero">
<img
v-if="data.heroImage"
:src="$withBase(data.heroImage)"
:alt="data.heroAlt || 'hero'"
>
<h1
v-if="data.heroText !== null"
id="main-title"
>
{{ data.heroText || $title || 'Hello' }}
</h1>
<p
v-if="data.tagline !== null"
class="description"
>
{{ data.tagline || $description || 'Welcome to your VuePress site' }}
</p>
<p
v-if="data.actionText && data.actionLink"
class="action"
>
<NavLink
class="action-button"
:item="actionLink"
/>
</p>
</header>
<div
v-if="data.features && data.features.length"
class="features"
>
<div
v-for="(feature, index) in data.features"
:key="index"
class="feature"
@click="handleClickFeature(feature.url)"
>
<div class="feature-cover">
<img :alt="feature.title" :src="feature.img"/>
</div>
<div class="feature-body">
<h2>{{ feature.title }}</h2>
<p>{{ feature.details }}</p>
</div>
</div>
</div>
<Content class="theme-default-content custom" />
<div
v-if="data.footer"
class="footer"
>
{{ data.footer }}
</div>
</main>
</template>
<script>
import NavLink from '@theme/components/NavLink.vue'
export default {
name: 'Home',
components: { NavLink },
computed: {
data () {
return this.$page.frontmatter
},
actionLink () {
return {
link: this.data.actionLink,
text: this.data.actionText
}
}
},
methods: {
handleClickFeature(url) {
window.location.href = url
}
}
}
</script>
<style lang="stylus">
.home
padding $navbarHeight 2rem 0
max-width $homePageWidth
margin 0px auto
display block
.hero
text-align center
img
max-width: 100%
max-height 280px
display block
margin 3rem auto 1.5rem
h1
font-size 3rem
h1, .description, .action
margin 1.8rem auto
.description
max-width 35rem
font-size 1.6rem
line-height 1.3
color lighten(#000, 40%)
.action-button
display inline-block
font-size 1.2rem
color #fff
background-color $accentColor
padding 0.8rem 1.6rem
border-radius 4px
transition background-color .1s ease
box-sizing border-box
border-bottom 1px solid darken($accentColor, 10%)
.icon.outbound {
color #fff
}
&:hover
background-color lighten($accentColor, 10%)
.features
border-top 1px solid $borderColor
padding 1.2rem 0
margin-top 2.5rem
display flex
flex-wrap wrap
align-items flex-start
align-content stretch
justify-content space-between
.feature
margin-bottom 2rem
flex-grow 1
flex-basis 30%
max-width 30%
cursor pointer
border 1px solid $borderColor
transition box-shadow .3s,border-color .3s
&:hover {
border-color transparent;
box-shadow 0 1px 2px -2px #00000029,0 3px 6px #0000001f,0 5px 12px 4px #00000017
}
.feature-cover
height 12rem
img
height: 100%;
width: 100%;
object-fit cover
.feature-body
padding 0 1.2rem
h2
font-size 1.4rem
font-weight 500
border-bottom none
padding-bottom 0
color lighten($textColor, 10%)
p
color lighten($textColor, 25%)
.footer
padding 2.5rem
border-top 1px solid $borderColor
text-align center
color lighten($textColor, 25%)
@media (max-width: $MQMobile)
.home
.features
flex-direction column
.feature
max-width 100%
padding 0 2.5rem
@media (max-width: $MQMobileNarrow)
.home
padding-left 1.5rem
padding-right 1.5rem
.hero
img
max-height 210px
margin 2rem auto 1.2rem
h1
font-size 2rem
h1, .description, .action
margin 1.2rem auto
.description
font-size 1.2rem
.action-button
font-size 1rem
padding 0.6rem 1.2rem
.feature
h2
font-size 1.25rem
</style>對應(yīng)首頁的README.md內(nèi)容如下所示:
---
home: true
heroText: SF
heroImage: /logo.png
tagline: 公司業(yè)務(wù)產(chǎn)品設(shè)計體系庫
actionText: 立即開始
actionLink: http://xxx.com/service/guide/install.html
features:
- title: SF Map Graph
details: 提供一系列的柱狀、餅狀等組件,此外還有文字滾動、時間軸等特殊組件.
url: http://xxx.com/service/guide/install.html
img: /home/graph.png
- title: SF Map Service
details: 提供大搜、按鈕等一系列組件,已內(nèi)置了狀態(tài)和接口功能.
url: http://xxx.com/service/guide/install.html
img: /home/service.png
- title: SF Ui
details: 基于Vue / Ant Design Vue的UI組件庫.
url: http://xxx.com/service/guide/install.html
img: /home/ui.png
- title: SF Icons
details: 一整套公司自有的圖標(biāo)集.
url: http://xxx.com/service/guide/icon.html
img: /home/icon.png
footer: MIT Licensed | Copyright ? 2020-present
---
改后的首頁效果圖如下所示:

vuepress2.x修改默認(rèn)樣式的小技巧
Vuepress2.x 對樣式的設(shè)置有較大變化,點此查看

官方推薦使用插件@vuepress/plugin-palette 和 SCSS。對此插件未做詳細(xì)研究,使用了一種土方式。
詳解
步驟1:新建css文件,docs/.vuepress/public/css/index.css
步驟2:配置 docs/.vuepress/config.ts

步驟3:先看看官網(wǎng)詳解,也可在目錄下找到官方變量
// 日間模式 node_modules\@vuepress\theme-default\lib\client\styles\vars.scss // 夜間模式 node_modules\@vuepress\theme-default\lib\client\styles\vars-dark.scss
步驟4:有兩種方式:
方式一:直接修改默認(rèn)變量,
默認(rèn)樣式如下:

docs/.vuepress/public/css/index.css 中修改
/* 日間模式 */
:root {
--c-brand: #409eff;
}新樣式

方式二:直接在開發(fā)者工具中找到要修改的元素的css名稱,然后在 docs/.vuepress/public/css/index.css 中修改即可。如:修改右上角站點名的字體顏色。
/* 左上角標(biāo)題 */
.navbar .site-name {
color: #409eff;
}修改前

修改后

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue基礎(chǔ)ESLint?Prettier配置教程詳解
這篇文章主要介紹了vue基礎(chǔ)ESLint?Prettier配置教程詳解,本文使用VsCode?+?Vue?+?ESLint?+?Prettier?實現(xiàn)代碼格式規(guī)范?+?保存自動修復(fù)代碼js+vue2022-07-07
vue.js單頁面應(yīng)用實例的簡單實現(xiàn)
本篇文章主要介紹了vue.js單頁面應(yīng)用實例的簡單實現(xiàn),使用單頁應(yīng)用,沒有頁面切換,就沒有白屏阻塞,可以大大提高 H5 的性能,達(dá)到接近原生的流暢體驗。2017-04-04
Vue狀態(tài)模式實現(xiàn)窗口??抗δ?靈動、自由, 管理后臺Admin界面)
這篇文章主要介紹了Vue狀態(tài)模式實現(xiàn)窗口??抗δ?靈動、自由, 管理后臺Admin界面),本文通過實例代碼文字說明給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
Vue應(yīng)用qs插件實現(xiàn)參數(shù)格式化示例詳解
這篇文章主要為大家介紹了Vue應(yīng)用qs插件實現(xiàn)參數(shù)格式化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
vue.js 表格分頁ajax 異步加載數(shù)據(jù)
Vue.js通過簡潔的API提供高效的數(shù)據(jù)綁定和靈活的組件系統(tǒng).這篇文章主要介紹了vue.js 表格分頁ajax 異步加載數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2016-10-10

