标签引入项目。1. 在/src.comp..._b-col b-row">
赞
踩
废弃说明:
这个专栏的文章本意是记录笔者第一次搭建博客的过程,文章里里有很多地方的写法都不太恰当,现在已经废弃,关于SpringBoot + Vue 博客系列,笔者重新写了这个系列的文章,不敢说写的好,但是至少思路更加清晰,还在看SpringBoot + Vue 博客系列文章的朋友可以移步:https://blog.csdn.net/li3455277925/category_10341110.html,文章中有错误的地方或者大家有什么意见或建议都可以评论或者私信交流。
index.html
里面引入。<i class="代码"></i>
标签引入项目。在/src.components/common/
下新建四个文件
carousel.vue
:展示轮播图userInfo.vue
:展示用户信息articles.vue
:分页展示文章articlesKinds
:展示文章分类tags.vue
:展示所有标签轮播图用到下方组件:
在/static/images/
下新建carousel
文件夹,存放四张轮播图片,编辑carousel.vue
文件
<template> <div> <b-carousel id="carousel-1" v-model="slide" :interval="4000" controls indicators style="text-shadow: 1px 1px 2px #333;" @sliding-start="onSlideStart" @sliding-end="onSlideEnd" > <!-- caption属性可以设置标题, text属性可以设置文字 --> <b-carousel-slide img-src="/static/images/carousel/first.png" caption="标题" text="文本文本文本"></b-carousel-slide> <b-carousel-slide img-src="/static/images/carousel/second.png"> <h1>标题</h1> <p>文本文本文本</p> </b-carousel-slide> <b-carousel-slide img-src="/static/images/carousel/third.png"></b-carousel-slide> <b-carousel-slide img-src="/static/images/carousel/fourth.png"></b-carousel-slide> </b-carousel> </div> </template> <script> export default { name: "carousel", data() { return { slide: 0, sliding: null }; }, methods: { onSlideStart(slide) { this.sliding = true; }, onSlideEnd(slide) { this.sliding = false; } } }; </script> <style scoped> </style>
在图片上有两种展示文字的方法:
- 使用b-carousel-slide的caption属性和text属性
- 在b-carousel-slide内直接嵌入
<h1>
标签和<p>
标签
组件单独效果:
需要使用到card
组件和Pagination Nav
组件(分页):
代码实现:
<template> <b-card border-variant="light" header="我的博文" align="left"> <b-container fluid> <b-row> <b-col cols="12" sm="12" md="12" lg="12" xl="12"> <b-card class="card"> <router-link to> <b-card-title>怎样学习SpringBoot呀?</b-card-title> </router-link> <b-card-text class="small text-muted"> <b-badge variant="info">原创</b-badge> 作者:芊雨 分类:学习经验 </b-card-text> <b-card-text>首先找到SpringBoot的官方文档,了解大概,再找一个练手的小项目跟着敲,不断思考在项目中怎样使用。</b-card-text> <b-card-text class="small text-muted"> <i class="icon iconfont icon-riqi"></i>2019-10-9 <i class="icon iconfont icon-yuedu"></i>10 <i class="icon iconfont icon-iconfontpinglun"></i>10 <div class="tag-box"> <b-link class="tag" variant="info"> <i class="icon iconfont icon-tag"></i>java <i class="icon iconfont icon-tag"></i>spring </b-link> </div> </b-card-text> </b-card> </b-col> <b-col cols="12" sm="12" md="12" lg="12" xl="12"> <!-- 分页 --> <div class="overflow-auto pagination"> <b-pagination-nav :link-gen="linkGen" :number-of-pages="10" use-router value="1"></b-pagination-nav> </div> </b-col> </b-row> </b-container> </b-card> </template> <script> export default { name: "articles", methods: { linkGen(pageNum) { return pageNum === 1 ? "?" : `?page=${pageNum}`; } } }; </script> <style scoped> .card { margin-top: 10px; } .tag-box { display: flex; flex-direction: row; justify-content: space-around; float: right; } .tag { text-decoration: none; margin-right: 5px; display: flex; flex-direction: row; justify-content: space-between; align-items: center; } .icon { margin: 0 4px 0 8px; } .pagination { margin-top: 12px; float: right; } </style>
上面用到了BootstrapVue的栅格系统,b-container的属性fluid可以使container宽度最大化
详情可以参考:https://bootstrap-vue.js.org/docs/components/layout
分页组件b-pagination-nav的number-of-pages属性表示总页数、use-router表示开启路由跳转 value表示当前页数
组件效果:
需要用到的组件:Media
、Popover
、Tooltips
代码实现:
<template> <div class="media"> <b-card> <b-media> <b-img src="/static/images/head.png" slot="aside" width="64" height="64" alt="placeholder"></b-img> <h5 align="left">清沐</h5> <p align="left">愿你在山顶时有清风拂面,在谷底时依旧不孤不寒。</p> </b-media> <hr /> <b-container class="text-center"> <b-row> <b-col> 原创 <br />20 </b-col> <b-col> 标签 <br />20 </b-col> <b-col> 评论 <br />20 </b-col> <b-col> 浏览 <br />20 </b-col> </b-row> </b-container> <hr /> <!-- 分割线下面是几个链接,分别连接到github、码云、QQ和微信 --> <div class="link-icon-box"> <b-link v-b-popover.hover.top="'GitHub'" href="https://github.com/qianyucc" target="_blank" class="icon iconfont icon-github link-icon" ></b-link> <b-link v-b-popover.hover.top="'码云'" href="https://gitee.com/qianyucc/" target="_blank" class="icon iconfont icon-code link-icon" ></b-link> <b-link v-b-popover.hover.top="'QQ'" id="add-my-qq" class="icon iconfont icon-qq link-icon"></b-link> <b-popover target="add-my-qq" title="扫一扫,加我QQ" triggers="focus" placement="bottom"> <b-img width="150" thumbnail rounded src="/static/images/findme/add_my_qq.jpg"></b-img> </b-popover> <b-link id="add-my-wechat" v-b-popover.hover.top="'微信'" class="icon iconfont icon-weixin link-icon" ></b-link> <b-popover target="add-my-wechat" title="扫一扫,加我微信" triggers="focus" placement="bottom"> <b-img width="150" thumbnail rounded src="/static/images/findme/add_my_wechat.jpg"></b-img> </b-popover> </div> </b-card> </div> </template> <script> export default { name: "userInfo" }; </script> <style scoped> .text-center{ text-align: center; } .link-icon { /*消除下划线*/ text-decoration: none; } .link-icon-box { display: flex; flex-direction: row; justify-content: space-around; } </style>
v-b-popover.hover.top="‘GitHub’"属性表示鼠标放在上面的时候会出现GitHub字样
使用popover组件的时候,target属性和上面id绑定,点击之后弹出下面的提示框,placement属性可以设置点击后弹框的位置
组件效果:
代码实现:
<template> <b-card border-variant="light" header="全部标签" align="left" class="main"> <b-link class="link-icon"> <i class="icon iconfont icon-tag"></i>java </b-link> <b-link class="link-icon"> <i class="icon iconfont icon-tag"></i>java </b-link> <b-link class="link-icon"> <i class="icon iconfont icon-tag"></i>java </b-link> <b-link class="link-icon"> <i class="icon iconfont icon-tag"></i>java </b-link> <b-link class="link-icon"> <i class="icon iconfont icon-tag"></i>java </b-link> <b-link class="link-icon"> <i class="icon iconfont icon-tag"></i>java </b-link> </b-card> </template> <script> export default { name: "tags" }; </script> <style scoped> .main { margin-top: 10px; } .link-icon { text-decoration: none; display: inline-block; margin: 4px 10px; } </style>
组件效果:
代码实现:
<template> <b-card border-variant="light" header="文章分类" align="left" class="main"> <b-container fluid> <b-card-text> <b-link>学习经验</b-link> <b-badge variant="light" class="float-right">20篇</b-badge> </b-card-text> <b-card-text> <b-link>学习经验</b-link> <b-badge variant="light" class="float-right">20篇</b-badge> </b-card-text> <b-card-text> <b-link>学习经验</b-link> <b-badge variant="light" class="float-right">20篇</b-badge> </b-card-text> <b-card-text> <b-link>学习经验</b-link> <b-badge variant="light" class="float-right">20篇</b-badge> </b-card-text> </b-container> </b-card> </template> <script> export default { name: "articleKinds" }; </script> <style scoped> .main { margin-top: 10px; } .float-right { float: right; } </style>
组件效果:
将所有组件导入mainPage.vue
中,使用栅格系统进行布局:
<template> <!-- 网格系统 --> <b-container class="main-container"> <b-row> <b-col cols="12" sm="12" md="12" lg="8" xl="8" class="left-container"> <!-- 轮播图 --> <carousel class="carousel"></carousel> <!-- 全部博文 --> <articles></articles> </b-col> <b-col cols="12" sm="12" md="12" lg="4" xl="4" class="right-container"> <!-- 利用media组件展示个人信息模块 --> <b-col cols="12" sm="12" md="12" lg="12" xl="12" class="pad0"> <user-info></user-info> </b-col> <!-- 文章分类 --> <b-col cols="12" sm="12" md="12" lg="12" xl="12" class="pad0"> <article-kinds></article-kinds> </b-col> <!-- 全部标签 --> <b-col cols="12" sm="12" md="12" lg="12" xl="12" class="pad0"> <tags></tags> </b-col> </b-col> </b-row> </b-container> </template> <script> import carousel from "@/components/common/carousel"; import articles from "@/components/common/articles"; import userInfo from "@/components/common/userInfo"; import tags from "@/components/common/tags"; import articleKinds from "@/components/common/articleKinds"; export default { name: "mainPage", components: { carousel, articles, userInfo, tags, articleKinds } }; </script> <style scoped> .carousel { margin-bottom: 10px; } .main-container { border-radius: 10px; } .left-container, .right-container { padding-top: 10px; } .pad0 { padding: 0; } </style>
BootstrapVue的栅格布局,可参考下表
PC端效果:
移动端效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。