Vue和Bootstrap的整合思路详解
发布时间 - 2026-01-11 02:07:54 点击率:次ldlood同学推荐 element ui(饿了么基于vue出品)也不错, github地址:https://github.com/ElemeFE/element. 大家也可以关注一下

我是一个刚刚接触前端开发的新手,所以有必要记录如何将Bootstrap和Vue进行整合。 如果你是老手,请直接绕道而过。作为一个新手,里面的步骤,过程或者专业术语未必正确,如果你发现哪里错误了,请发邮件至ztao8607@gmail.com
Vue官方不建议新手直接使用vue-cli,但我不这么看。 先使用cli跳过繁琐的环境配置,直接看到demo效果能增强点自信心。如果上手就被一大堆的环境配置搞乱了心情,那才是得不偿失呢。 恩. 至少我是这么认为的。
使用vue-cli
如果是使用国内网络安装,官方建议使用淘宝或者cnpmjs的镜像。我感觉淘宝的镜像速度不如cnpmjs的快,因为我使用的cnpmjs镜像。
npm --registry http://r.cnpmjs.org install --global vue-cli //安装vue-cli vue init webpack <project name> //创建项目,一般情况使用默认配置就可以 cd <project name> npm --registry http://r.cnpmjs.org install //安装package npm run dev
正常的话,你应该能看到一个vue的初始化页面。
整合bootstrap
你可以选择下载bootstrap zip包,然后将包里面的内容放到工程的static目录中。也可以选择使用bootstrap cdn资源,我建议使用cdn资源。
1.修改index.html页面
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>testproject</title> <!-- 将bootstrap cdn url放到这里 --> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="external nofollow" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> </head> <body> <div id="app"></div> <!-- built files will be auto injected --> </body> </html>
你可以访问bootstrap官方网站获取到最新的cdn资源地址。
2.创建布局
我们创建一个使用bootstrap 栅格布局的例子。 在src/components目录中创建一个Root.vue文件。在Root.vue文件中,我们先编辑template,创建一个container,然后放入一些导航栏。
里面布局代码来自于bootstrap官方提供的demo
<template>
<div id="root">
<div class="container">
<div class="masthead">
<h3 class="text-muted">Look for it!</h3>
<nav>
<ul class="nav nav-justified">
<li class="active"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Home</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Projects</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Services</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Downloads</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >About</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Contact</a></li>
</ul>
</nav>
</div>
</div>
<mfooter></mfooter>
</div>
</template>
添加script代码
<script>
export default {
name: 'root'
}
</script>
添加css样式
因为是从bootstrap拷贝的css样式,所以直接将css拷贝过来。
<style>
body {
padding-top: 20px;
}
.footer {
padding-top: 40px;
padding-bottom: 40px;
margin-top: 40px;
border-top: 1px solid #eee;
}
/* Main marketing message and sign up button */
.jumbotron {
text-align: center;
background-color: transparent;
}
.jumbotron .btn {
padding: 14px 24px;
font-size: 21px;
}
/* Customize the nav-justified links to be fill the entire space of the .navbar */
.nav-justified {
background-color: #eee;
border: 1px solid #ccc;
border-radius: 5px;
}
.nav-justified > li > a {
padding-top: 15px;
padding-bottom: 15px;
margin-bottom: 0;
font-weight: bold;
color: #777;
text-align: center;
background-color: #e5e5e5; /* Old browsers */
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e5e5e5));
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e5e5e5 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e5e5e5 100%);
background-image: linear-gradient(to bottom, #f5f5f5 0%,#e5e5e5 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
background-repeat: repeat-x; /* Repeat the gradient */
border-bottom: 1px solid #d5d5d5;
}
.nav-justified > .active > a,
.nav-justified > .active > a:hover,
.nav-justified > .active > a:focus {
background-color: #ddd;
background-image: none;
-webkit-box-shadow: inset 0 3px 7px rgba(0,0,0,.15);
box-shadow: inset 0 3px 7px rgba(0,0,0,.15);
}
.nav-justified > li:first-child > a {
border-radius: 5px 5px 0 0;
}
.nav-justified > li:last-child > a {
border-bottom: 0;
border-radius: 0 0 5px 5px;
}
@media (min-width: 768px) {
.nav-justified {
max-height: 52px;
}
.nav-justified > li > a {
border-right: 1px solid #d5d5d5;
border-left: 1px solid #fff;
}
.nav-justified > li:first-child > a {
border-left: 0;
border-radius: 5px 0 0 5px;
}
.nav-justified > li:last-child > a {
border-right: 0;
border-radius: 0 5px 5px 0;
}
}
/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
/* Remove the padding we set earlier */
.masthead,
.marketing,
.footer {
padding-right: 0;
padding-left: 0;
}
}
</style>
修改router
注释原先的Hello模块,使用刚才添加的Root模块
import Vue from 'vue'
import Router from 'vue-router'
import Root from '@/components/Root'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'Header',
component: Root
}
]
})
完整的Root.vue代码如下:
<template>
<div id="root">
<div class="container">
<div class="masthead">
<h3 class="text-muted">Look for it!</h3>
<nav>
<ul class="nav nav-justified">
<li class="active"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Home</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Projects</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Services</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Downloads</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >About</a></li>
<li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Contact</a></li>
</ul>
</nav>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'root'
}
</script>
<style>
body {
padding-top: 20px;
}
.footer {
padding-top: 40px;
padding-bottom: 40px;
margin-top: 40px;
border-top: 1px solid #eee;
}
/* Main marketing message and sign up button */
.jumbotron {
text-align: center;
background-color: transparent;
}
.jumbotron .btn {
padding: 14px 24px;
font-size: 21px;
}
/* Customize the nav-justified links to be fill the entire space of the .navbar */
.nav-justified {
background-color: #eee;
border: 1px solid #ccc;
border-radius: 5px;
}
.nav-justified > li > a {
padding-top: 15px;
padding-bottom: 15px;
margin-bottom: 0;
font-weight: bold;
color: #777;
text-align: center;
background-color: #e5e5e5; /* Old browsers */
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e5e5e5));
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e5e5e5 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e5e5e5 100%);
background-image: linear-gradient(to bottom, #f5f5f5 0%,#e5e5e5 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
background-repeat: repeat-x; /* Repeat the gradient */
border-bottom: 1px solid #d5d5d5;
}
.nav-justified > .active > a,
.nav-justified > .active > a:hover,
.nav-justified > .active > a:focus {
background-color: #ddd;
background-image: none;
-webkit-box-shadow: inset 0 3px 7px rgba(0,0,0,.15);
box-shadow: inset 0 3px 7px rgba(0,0,0,.15);
}
.nav-justified > li:first-child > a {
border-radius: 5px 5px 0 0;
}
.nav-justified > li:last-child > a {
border-bottom: 0;
border-radius: 0 0 5px 5px;
}
@media (min-width: 768px) {
.nav-justified {
max-height: 52px;
}
.nav-justified > li > a {
border-right: 1px solid #d5d5d5;
border-left: 1px solid #fff;
}
.nav-justified > li:first-child > a {
border-left: 0;
border-radius: 5px 0 0 5px;
}
.nav-justified > li:last-child > a {
border-right: 0;
border-radius: 0 5px 5px 0;
}
}
/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
/* Remove the padding we set earlier */
.masthead,
.marketing,
.footer {
padding-right: 0;
padding-left: 0;
}
}
</style>
以上所述是小编给大家介绍的Vue和Bootstrap的整合思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# vue
# 和bootstrap
# 整合
# vue.js整合vux中的上拉加载下拉刷新实例教程
# vue.js整合mint-ui里的轮播图实例代码
# Vue整合AdminLTE模板的方法
# 如何把vuejs打包出来的文件整合到springboot里
# Vuex和前端缓存的整合策略详解
# vue axios整合使用全攻略
# 详解Vue整合axios的实例代码
# Vue开发中整合axios的文件整理
# 详解vue项目首页加载速度优化
# Vue基础学习之项目整合及优化
# 镜像
# 你可以
# 淘宝
# 创建一个
# 小编
# 我是
# 如果你
# 我不
# 你是
# 才是
# 在此
# 目录中
# 是从
# 给大家
# 得不偿失
# 作为一个
# 而过
# 有必要
# 你应该
# 来自于
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
高防服务器如何保障网站安全无虞?
如何快速建站并高效导出源代码?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
HTML 中动态设置元素 name 属性的正确语法详解
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Python高阶函数应用_函数作为参数说明【指导】
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
使用Dockerfile构建java web环境
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
制作旅游网站html,怎样注册旅游网站?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
怎么用AI帮你设计一套个性化的手机App图标?
西安专业网站制作公司有哪些,陕西省建行官方网站?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
魔方云NAT建站如何实现端口转发?
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
怎么用AI帮你为初创公司进行市场定位分析?
如何快速搭建高效WAP手机网站?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
图册素材网站设计制作软件,图册的导出方式有几种?
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel怎么判断请求类型_Laravel Request isMethod用法
HTML 中如何正确使用模板变量为元素的 name 属性赋值
如何用AI帮你把自己的生活经历写成一个有趣的故事?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
如何自定义建站之星模板颜色并下载新样式?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
在线教育网站制作平台,山西立德教育官网?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何在阿里云通过域名搭建网站?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何在建站之星网店版论坛获取技术支持?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何用PHP快速搭建高效网站?分步指南
如何在宝塔面板创建新站点?
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel如何创建自定义Facades?(详细步骤)
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】

