BootStrap整体框架之基础布局组件
1基础布局组件
在12栅格系统上基础上,BootStrap还提供了多种基础布局组件。
CSS组件,总结为8大类型的样式:
基础样式、颜色样式、尺寸样式、状态样式、特殊元素样式、并列元素样式、嵌套子元素样式、动画样式
1.1基础样式
基本样式,一般包含文本字体,颜色背景,边框,定位等,如下面警告框:
//源码
.alert{
padding:15px;
margin-bottom:20px;
border:1pxsolidtransparent;
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:10px16px;
font-size:18px;
line-height:1.3333333;
border-radius:6px;
}
.btn-sm,
.btn-group-sm>.btn{
padding:5px10px;
font-size:12px;
line-height:1.5;
border-radius:3px;
}
.btn-xs,
.btn-group-xs>.btn{
padding:1px5px;
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:inset03px5pxrgba(0,0,0,.125);
box-shadow:inset03px5pxrgba(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:10px15px;
}
.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-leftpadding-right)和外边距(margin-leftmargin-right)2.垂直并列时上下内边距(padding-toppadding-bottom)和外边距(margin-topmargin-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组件中才使用到。
<divclass="progress"> <divclass="progress-bar"style="width:45%"> <spanclass="sr-only">45%complete</span> </div> </div>
注意用.progress是总进度条,progress-bar是进度条显示的部分,还有五种颜色progress-bar-success等
sr-only,全称是screenreaderonly(仅供)屏幕阅读器有时候UI上会出现一些仅供视觉识别的元素,比如说“汉堡包菜单按钮”只有视力正常的人才能清楚辨识这些元素的作用。而残障人士,比如弱势或盲人是不可能知道这些视觉识别元素是什么的。他们上网使用的是屏幕阅读器,也就是screenreader(sr),屏幕阅读器需要找到能辨识的文本说明然后“读”出来给用户听。
//源码
.progress{
height:20px;
margin-bottom:20px;
overflow:hidden;
background-color:#f5f5f5;
border-radius:4px;
-webkit-box-shadow:inset01px2pxrgba(0,0,0,.1);
box-shadow:inset01px2pxrgba(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:inset0-1px0rgba(0,0,0,.15);
box-shadow:inset0-1px0rgba(0,0,0,.15);
-webkit-transition:width.6sease;
-o-transition:width.6sease;
transition:width.6sease;
}
.progress-striped.progress-bar,
.progress-bar-striped{
background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
-webkit-background-size:40px40px;
background-size:40px40px;
}
.progress.active.progress-bar,
.progress-bar.active{
-webkit-animation:progress-bar-stripes2slinearinfinite;
-o-animation:progress-bar-stripes2slinearinfinite;
animation:progress-bar-stripes2slinearinfinite;
}
.progress-bar-success{
background-color:#5cb85c;
}
.progress-striped.progress-bar-success{
background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
}
.progress-bar-info{
background-color:#5bc0de;
}
.progress-striped.progress-bar-info{
background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
}
.progress-bar-warning{
background-color:#f0ad4e;
}
.progress-striped.progress-bar-warning{
background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
}
.progress-bar-danger{
background-color:#d9534f;
}
.progress-striped.progress-bar-danger{
background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
background-image:linear-gradient(45deg,rgba(255,255,255,.15)25%,transparent25%,transparent50%,rgba(255,255,255,.15)50%,rgba(255,255,255,.15)75%,transparent75%,transparent);
}
1.9总结
1.通常8种类型样式,需要组合使用,比如设置active状态时候还要兼顾颜色和尺寸样式,设置尺寸又要考虑并列元素的情况,所以从高层往下考虑,考虑需要写哪几种样式。
2.还有就是样式利用CSS重载覆盖的概念,注意定义的顺序,以免重载顺序错误。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。