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 相关文章推荐
JS实现匀速运动的代码实例
Nov 29 Javascript
jQuery select表单提交省市区城市三级联动核心代码
Jun 09 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
Jul 09 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
Jul 06 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
Mar 28 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
Sep 17 Javascript
2种在vue项目中使用百度地图的简单方法
Sep 28 Javascript
微信小程序实现星星评价效果
Nov 02 Javascript
Node.js Domain 模块实例详解
Mar 18 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
为你的网站增加亮点的9款jQuery插件推荐
2011/05/03 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python三引号输出方法
2019/02/27 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
Python如何定义有可选参数的元类
2020/07/31 Python
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
StringBuilder和String的区别
2015/05/18 面试题
ktv收银员岗位职责
2013/12/16 职场文书
仓库管理制度
2014/01/21 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
Python3 类型标注支持操作
2021/06/02 Python
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
java版 联机五子棋游戏
2022/05/04 Java/Android