BootStrap整体框架之基础布局组件


Posted in Javascript onDecember 15, 2016

1 基础布局组件

在12栅格系统上基础上,BootStrap还提供了多种基础布局组件。
CSS组件,总结为8大类型的样式:
基础样式、颜色样式、尺寸样式、状态样式、特殊元素样式、并列元素样式、嵌套子元素样式、动画样式

1.1基础样式

基本样式,一般包含文本字体,颜色背景,边框,定位等,如下面警告框:

//源码
.alert {
 padding: 15px;
 margin-bottom: 20px;
 border: 1px solid transparent;
 border-radius: 4px;
}

1.2颜色样式

看BootStrap官网的按钮btn或者alert警告框会发现许多组件默认的5种颜色样式:
primary(重点蓝)、success(成功绿)、info(信息蓝)、warning(警告橙)、danger(危险红)
http://getbootstrap.com/examples/theme/

定义规则:组件名称-颜色类型,比如btn-primary,alert-info

//源码
.btn-primary {
 color: #fff;
 background-color: #337ab7;
 border-color: #2e6da4;
}

1.3尺寸样式

BootStrap为大部分组件都提供了尺寸的快捷设置。一般组件包含xs、sm、普通、lg四种尺寸
定义规则:组件名称-尺寸,比如btn-xs

//源码
.btn-lg,
.btn-group-lg > .btn {
 padding: 10px 16px;
 font-size: 18px;
 line-height: 1.3333333;
 border-radius: 6px;
}
.btn-sm,
.btn-group-sm > .btn {
 padding: 5px 10px;
 font-size: 12px;
 line-height: 1.5;
 border-radius: 3px;
}
.btn-xs,
.btn-group-xs > .btn {
 padding: 1px 5px;
 font-size: 12px;
 line-height: 1.5;
 border-radius: 3px;
}

1.4状态样式

高亮可用的时候用active样式,禁用的时候用disabled样式或disabled属性。

//源码
.btn:active,
.btn.active {
 background-image: none;
 outline: 0;
 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
   box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}

1.5特殊元素样式

所谓特殊元素,即特定类型的组件一般只使用某一种或者几种固定的元素。
比如:alert警告框内一般有警告标题、内容、关闭链接元素;nav导航中常用li元素

//源码
//alert内连接的样式
.alert .alert-link {
 font-weight: bold;
}
//alert内p元素和ul元素的底部外边距设置
.alert > p,
.alert > ul {
 margin-bottom: 0;
}
//两个段落之间,增加一个段落外边距
.alert > p + p {
 margin-top: 5px;
}
//增大右内边距,以便关闭按钮
.alert-dismissable,
.alert-dismissible {
 padding-right: 35px;
}
//关闭按钮,右对齐
.alert-dismissable .close,
.alert-dismissible .close {
 position: relative;
 top: -2px;
 right: -21px;
 color: inherit;
}
//源码
.nav > li {
 position: relative;
 display: block;
}
.nav > li > a {
 position: relative;
 display: block;
 padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
 text-decoration: none;
 background-color: #eee;
}
.nav > li.disabled > a {
 color: #777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
 color: #777;
 text-decoration: none;
 cursor: not-allowed;
 background-color: transparent;
}

1.6并列元素样式

很多情况下,一个组件内部需要放置多个子元素,比如导航栏nav里放置多个li元素,按钮组可以放置多个button元素。
一般并列元素考虑:1.水平并列时左右内边距(padding-left padding-right)和外边距(margin-left margin-right)2.垂直并列时上下内边距(padding-top padding-bottom)和外边距(margin-top margin-bottom)

//源码
.alert > p,
.alert > ul {
 margin-bottom: 0;
}
.alert > p + p {
 margin-top: 5px;
}



.modal-footer .btn + .btn {
 margin-bottom: 0;
 margin-left: 5px;
}

1.7嵌套子元素样式

需要将两个相同或不同的组件嵌套在一起使用,这时会有特殊情况,比如,多个按钮组在一起使用,或者按钮和下拉菜单一起使用。

需要考虑嵌套元素的使用情况。比如多个分组按钮一起使用的时候,需要考虑浮动方向和间距

//源码
//消除2个按钮(或一个按钮和另外一个按钮组)之间的1像素细节引起的冲突
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
 margin-left: -1px;
}

1.8动画样式

动画样式在BootStrap中的进度条progress组件中才使用到。

<div class="progress">
 <div class="progress-bar" style="width:45%">
  <span class="sr-only">45% complete</span>
 </div>
</div>

注意用.progress是总进度条,progress-bar是进度条显示的部分,还有五种颜色progress-bar-success等
sr-only,全称是 screen reader only(仅供)屏幕阅读器有时候 UI 上会出现一些仅供视觉识别的元素,比如说“汉堡包菜单按钮”只有视力正常的人才能清楚辨识这些元素的作用。而残障人士,比如弱势或盲人是不可能知道这些视觉识别元素是什么的。他们上网使用的是屏幕阅读器,也就是 screen reader(sr),屏幕阅读器需要找到能辨识的文本说明然后“读”出来给用户听。

//源码
.progress {
 height: 20px;
 margin-bottom: 20px;
 overflow: hidden;
 background-color: #f5f5f5;
 border-radius: 4px;
 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
   box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
}
.progress-bar {
 float: left;
 width: 0;
 height: 100%;
 font-size: 12px;
 line-height: 20px;
 color: #fff;
 text-align: center;
 background-color: #337ab7;
 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
   box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
 -webkit-transition: width .6s ease;
  -o-transition: width .6s ease;
   transition: width .6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:  -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:   linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 -webkit-background-size: 40px 40px;
   background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
 -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
   animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
 background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:  -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:   linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
 background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:  -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:   linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
 background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:  -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:   linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
 background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:  -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
 background-image:   linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}

1.9总结

1.通常8种类型样式,需要组合使用,比如设置active状态时候还要兼顾颜色和尺寸样式,设置尺寸又要考虑并列元素的情况,所以从高层往下考虑,考虑需要写哪几种样式。
2.还有就是样式利用CSS重载覆盖的概念,注意定义的顺序,以免重载顺序错误。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript中的常见排序算法
Mar 27 Javascript
把JS与CSS写在同一个文件里的书写方法
Jun 02 Javascript
JS仿Windows开机启动Loading进度条的方法
Feb 26 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 Javascript
JavaScript多线程详解
Aug 12 Javascript
js获取元素的标签名实现方法
Oct 08 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
Jan 07 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
javascript实现简单搜索功能
Mar 26 Javascript
Vue数组响应式操作及高阶函数使用代码详解
Aug 01 Javascript
vue 解决provide和inject响应的问题
Nov 12 Javascript
JS弹性运动实现方法分析
Dec 15 #Javascript
JS经典正则表达式笔试题汇总
Dec 15 #Javascript
javascript中闭包概念与用法深入理解
Dec 15 #Javascript
javascript读取文本节点方法小结
Dec 15 #Javascript
EditPlus中的正则表达式 实战(4)
Dec 15 #Javascript
jQuery validate插件功能与用法详解
Dec 15 #Javascript
EditPlus 正则表达式 实战(3)
Dec 15 #Javascript
You might like
用PHP生成静态HTML速度快类库
2007/03/18 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
php实现求相对时间函数
2015/06/15 PHP
10条php编程小技巧
2015/07/07 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
倡议书范文
2014/04/16 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers