Hugenye的个人博客

Bootstrap

字数统计: 2k阅读时长: 8 min
2020/03/13 Share

1.Bootstrap是什么?

​ 一个用于快u开发web应用程序和网站的前端框架。Bootstrap是基于HTML、CSS、JAVASCRIPT 。

​ 给我使用的感觉是对于掌握一般的前端知识就可以学会怎么去使用Bootstrap,它包含了功能强大的内置组件,易于定制,最重要的是它是开源的。

工作中用到是Bootstrap3,学习在线文档https://v3.bootcss.com/

2.如何使用

可以选择在官网下载该文件包,或者使用在线工具库,但是要注意,在线的地址有可能会失效,有一次布局没了觉得很奇怪,查看页面代码发现我继承别人代码全部使用在线的工具库,瞬间心凉凉。为了保险起见还是自己下载个安心些。

注意: Bootstrap插件全部依赖jQuery,必须在Bootstrap之前引入。

3.如何使用它来布局

作为一个前端不是特别好的开发,我用了Bootstrap可视化布局,个人感觉还不错。组件只要拖拽自己想要的样子就可以。https://www.runoob.com/try/bootstrap/layoutit/

通过定义容器的大小,平分为12份(也有24份,23份的,取12份是一打,表示进阶完美的意思),再调整内外边距,最后结合媒体查询,制作出了强大的响应式网格系统。(可以通过重新编译LESS码源来修改12这个数值)。

1.数据行(.row)必须包含在容器(.container)中,以便赋予合适的对其方式和内边距(padding)。

2.在行(.row)中可以添加列(.column),但列数之和不能超过平分的总列数,比如:12.

3.通过设置内边距(padding)从而创建列于列之间的间距。然后通过为第一列和最后一列设置负值的外距(margin)来抵消内距(padding)的影响。

4.不希望相邻的两个列紧靠近在一起,就用offset功能来实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap Template</title>

<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
<!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
<!--[if lt IE 9]>
<script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<h3>
h3. 这是一套可视化布局系统.
</h3>
</div>
</div>
</div>

<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
</body>
</html>

4.多种插件的应用

4.1 Bootstrap-treeView 树形菜单的实际操作总结

1、资源引用

<``script src="bootstrap-treeview.js">script``>`

2、在一个dom元素绑定该组件

<``div id="treeview1">div><br``>`

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$('#treeview1').treeview({
data: getTree(), // 获取数据节点
levels: 5,//节点层级数
color: "#000",//每一级通用的 节点字体颜色
backColor: "#fff",//每一级通用的 节点字背景色
onhoverColor: "orange",//选中浮动颜色
borderColor: "red",//设置组件的边框颜色; 设置showBorder为false,如果你不想要一个可见的边框
showBorder: false,
showTags: true,//是否在每个节点的右侧显示标签。 其值必须在每个节点的数据结构中提供

highlightSelected: true,//是否突出显示选定的节点
selectedColor: "#fff",//设置选定节点的前景色
selectedBackColor: "darkorange",//设置选定节点的背景色
});

代码截取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
**初始化数据
$('#treeview1').treeview('collapseAll', {
data : treedata,
silent : false//设置初始化节点关闭
});
**清空搜索选项**
$('#treeview1').treeview('clearSearch');
**查询功能
var search = function(e) {
var result;
// 获取要搜索的信息
var pattern = $.trim($('#input-search').val());
console.log(pattern)
/*var len=0;
for (var i = 0; i < pattern.length; i++) {
if (pattern[i].match(/[^\x00-\xff]/ig) != null) //全角
len += 2; //如果是全角,占用两个字节
else
len += 1; //半角占用一个字节
}*/
var reg=/^[1-9]\d*$|^0$/;
if(reg.test(pattern)){
window.alert("搜索内容不可以为纯数字");
$('#input-search').val("");
clear();
}else{
var options = {
ignoreCase: true, //忽略大小写
exactMatch: false, //必须为精确的值
revealResults: true //显示匹配的节点
};

var results = $('#treeview1').treeview('search', [ pattern, options ]);
//var output = '<p>' + results.length + ' 匹配的搜索结果</p>';
$.each(results, function (index, result) {
console.log(result)
result.text += '<p>- <span style="color:red;">' + result.text + '</span></p>';
//console.log(result.text);
});

// $('#treediv').html(result.text);
// }
}
};

对treeview组件的操作参考:

bootstrap treeview树形菜单 动态扩展 连数据库 - 愿生命从容 - 博客园https://www.cnblogs.com/chenhtblog/p/8342534.htmlbootstrap-treeview 扩展addNode方法 动态添加子节点的方法 - CSDN博客https://blog.csdn.net/qq_25628235/article/details/51719917bootstrap treeview 增删改的正确姿势 - CSDN博客https://blog.csdn.net/hotqin888/article/details/54798737/

4.2 Bootstrap FileInput文件上传的使用

html页面使用该插件上传图片并显示在轮播图中

1
2
3
<div class="modal-body" style="height:80%; overflow-y:scroll;">
<input id="input-b5" name="input-b5" type="file" multiple>
</div>

JavaScript:删除图片必须要配置的两个属性initialPreview和initialPreviewConfig

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
function init(){
$("#input-b5").fileinput({
'theme': 'fa',
showCaption:true,
showPreview :true, //是否显示预览
overwriteInitial: false,//不覆盖已存在的图片
validateInitialCount: true,
initialPreview:array,--->预览时可以看到
language: 'zh',
uploadExtraData:{pictitle:JSON.stringify(jsonstr)},
'uploadUrl': '/FileUpload',
uploadAsync: false,//同步上传
allowedFileExtensions: ['png', 'jpg','gif'],
hideThumbnailContent:true,
layoutTemplates :{
//actionDelete:'', //去除上传预览的缩略图中的删除图标
actionUpload:'',//去除上传预览缩略图中的上传图片;
//actionZoom:'' //去除上传预览缩略图中的查看详情预览的缩略图标。
},
initialPreviewConfig:con,---->预览时可以看到
})
}
配置动态数据需要添加一个函数:
function getImg(dat){//获取图片信息
........
return array,con;//传递配置参数的值
}
//设置预览轮播图的界面设置
function setimg(dat){
}
删除时添加的两个函数:
$('#input-b5').on('filebeforedelete', function() {
return new Promise(function(resolve, reject) {
$.confirm({
title: '警告!',
content: '你是否想要删除这个图片?',
type: 'red',
buttons: {
确定: {
btnClass: 'btn-primary text-white',
keys: ['enter'],
action: function(){
resolve();
}
},
取消: function(){
$.alert('图片删除被中止! ');
}
}
});
});
})
$('#input-b5').on('filedeleted', function( event,index ,data,val) {
if(data.status==200){//判断删除成功后要把前端的图片更新一下
var picimg=val.picimg;//获取已经修改过的图片数据信息
var a=JSON.parse(picimg).arrs.split("#");
var b="";
for(var i=0;i<a.length;i++){
if(a[i]==JSON.parse(picimg).obj){
b+="";
}else{
b+=a[i]+"#";
}
}
if(b==""){
//显示没图片的界面设置
}else {
b=b.substring(0,b.length-1);
}
//重新加载资源数据
setimg(b);
getImg(b);
init();
$('#myModal').modal('hide');
$("#strong").html("图片删除成功");
$('#strong').removeClass("hidden");
window.setTimeout(function() {
$('#strong').addClass("hidden");
}, 2000);
}else{
$("#strong").html("图片删除异常");
$('#strong').removeClass("hidden");
window.setTimeout(function() {
$('#strong').addClass("hidden");
}, 2000);
}
});

后端代码

文件上传代码略,基于公司需求增加了删除图片的功能,在前端js函数获取要删除的图片的信息,在后端添加一个删除图片的对应方法。

CATALOG
  1. 1. 1.Bootstrap是什么?
  2. 2. 2.如何使用
  3. 3. 3.如何使用它来布局
  4. 4. 4.多种插件的应用
    1. 4.1. 4.1 Bootstrap-treeView 树形菜单的实际操作总结
    2. 4.2. 4.2 Bootstrap FileInput文件上传的使用