bootstrap笔记

响应式页面

实现不同屏幕上的不同展现方式,使网站在移动端和电脑端都有良好的浏览体验。
bootstrap提供了两个类: .container和.container-fluid。
.container 类用于固定宽度并支持响应式布局的容器:


固定宽度

container-fluid 类用于 100% 宽度,占据全部视口(viewport)的容器:


100%宽度
bootstrap下实现响应式:栅格系统

栅格系统通过一系列的行(row)和列(col)来创建页面布局,row必须包含在.container或.container-fluid中,只有col能作为row的直接子元素,我们需要展示的内容就放在col中。

  • 一行可以包含1-12个列,当超过12列时,多出的列将另起一行。
  • col根据宽度可以分为四种:.col-xs-,.col-sm-,.col-md-,.col-lg-表示该列所跨越的列数。
    .col-lg-
    只对大PC屏幕有效
    .col-md-对普通PC和大屏幕PC都有效
    .col-sm-
    对平板、普通PC、大屏幕PC都有效
    .col-xs-*对手机、平板、普通PC、大屏幕PC都有效
    可以对一个列在不同屏幕下指定不同的宽度:
<head>
        <link rel="stylesheet" href="css/bootstrap.min.css">
    </head>
    <style>
        .outside{
            background: blanchedalmond; 
            height: 100px;
        }

        .inside{
            background: cornflowerblue; 
            height: 80px;
        }
    </style>
    <body>
        <div class="container-fluid outside">
            <div class="row">
                <div class="col-md-8 col-xs-12 inside"></div>
            </div>
        </div>
    </body>

在移动端占12列,普通PC端占8列


移动端

PC端
  • 可以指定列的偏移量,不同屏幕下也可以设置不同偏移量:
 <div class="col-md-6 col-xs-10 col-xs-offset-1 col-md-offset-3 inside"></div>

移动端占10列,向右偏移一列,PC端占6列,向右偏移3列,通过偏移可以很方便地设置居中


移动端

PC端
  • 可以通过添加新的row和col到已存在的col中实现嵌套:
    <head>
        <link rel="stylesheet" href="css/bootstrap.min.css">
    </head>
    <style>
        .outside{
            background: blanchedalmond; 
            height: 100px;
        }

        .inside{
            background: cornflowerblue; 
            height: 80px;
        }
        
        .inner-col{
            background: darksalmon;
            height: 50px;
            border: 1px solid black;
        }
    </style>
    <body>
        <div class="container-fluid outside">
            <div class="row">
                <div class="col-md-12 inside"> 
                    <div class="row">
                        <div class="col-md-3 inner-col"></div>
                        <div class="col-md-3 inner-col"></div>
                        <div class="col-md-3 inner-col"></div>
                    </div>
                </div>
            </div>
        </div>
    </body>
列嵌套
  • 列排序。通过push和pull来对列进行排序:
    col-md-4居左,col-md-8居右,如果想要互换位置,col-md-4需向右移动8个列,同时将col-md-8向左移动4个列。


    移动前

    给col-md-4加上col-md-push-8,col-md-8加上col-md-pull-4:


    移动后

    如果只移动col-md-4或者只col-md-8是不可以的,会造成其中一列挡住了另一列。
    如:当只移动了col-md-4时:

    就会出现col-md-4移动后,被col-md-8挡住了的效果。
    通过上面的例子发现其实pull和push本质上也是对列的偏移,好像和offset一样,但两者还是有区别的:
    1.offset只能实现向右偏移,而pull和push可以分别实现向左偏移和向右偏移。
    2.offset偏移后,该列的位置会影响其他列的位置,如当一个列使用了col-md-offset-2,那么其他的列也会因为该列的偏移向右偏移两列,而如果使用了col-md-push-2后,对其他列的位置不会产生影响,所以上面的例子才会出现只移动一列,其中一列将另一列给挡住的情况。
    3.实现方式不同:offset是通过设置margin-left实现的,而push和pull是通过相对定位实现偏移的。

其他全局css样式
1.代码:提供了一些标签用来展示不同的内容

如:<code>标记代码片段,<kbd>标记用户输入的内容,<var>标记变量等。

2.表格:为表格提供了一些类可以赋予其样式
  • .table:赋予表格基本的样式
  • .table-striped:给每一行添加斑马条纹样式
  • .table-hover:给行添加悬停样式
  • .table-condensed:单元格内边距减半,让表格更加紧凑
  • .table-borderd:每个单元格添加边框
  • .active、.success、.info、.warning、.danger:给单元格或者行设置颜色(状态)
  • .table-responsive:包裹.table元素,即可创建响应式表格,在屏幕宽度小于768px时,出现水平滚动条。
3.表单
  • .form-control:为<input><textarea><select>设置该类,这些元素将被默认设置宽度为100%。
  • .form-group: 将<input><textarea><select>与<label>元素包裹在.form-group中获得最好的排列。
  • .form-inline:为form元素添加该类,可以使其内容左对齐并且表现为inline-block级别的控件(只适用于屏幕宽度768px时),并可以手动设置宽度,但每个输入控件都应该添加label标签,否则会无法被正确识别
 <form class="form-inline">
            <div class="form-group">
                <label>用户名</label>
                <input type="text" class="form-control"></div>
            </div>

            <div class="form-group">
                <label>密码</label>
                <input type="password" class="form-control"></div>
            </div>
</form>
  • .form-horizontal:为form元素添加此类,再结合栅格布局,可以将label标签和控件水平排列,无需再添加.row。
  • .form-control-static:为p元素添加form-control-static类,即可将label与纯文本放在同一行。
  • 焦点状态、禁用状态、只读状态:当表单控件处于这三种状态时,都会显示bootstrap设置好的样式。
  • .has-error、.has-success、.has-warning:添加这些类到空间的父元素上,任何包含在此元素之内的 .control-label、.form-control 和 .help-block 元素都将接受这些校验状态的样式。
  • 控件尺寸:通过.input-lg类似的类可以为控件设置高度,通过.col-lg-*类似的类可以为控件设置宽度。
  • 水平排列的表单组的尺寸:通过.form-group-lg和.form-group-md类可以为.form-horizontal包裹的label和表单控件设置尺寸。
  • 用列包裹控件,可以快速设置其宽度。
4.按钮
  • 为a、button、input标签添加按钮类即可使用bootstrap提供的样式,必须同时添加按钮类(.btn)和预定义样式类(.btn-default、.btn-success、.btn-info、.btn-warning、.btn-danger、.btn-link):
<button class="btn btn-success"></button>
  • 尺寸:使用.btn-lg、.btn-md、.btn-sm、.btn-xs可以快速设置不同尺寸的按钮,使用.btn-block可以将按钮拉伸至父级元素宽度的100%。
5.图片
  • 响应式布局:通过为图片添加.img-responsive类可以使图片实现响应式布局,本质是为图片设置了max-width: 100%;height:auto;display:block属性。
  • 图片形状: 通过添加.img-rounded(圆角)、.img-circle(圆形)、.img-thumbnail(缩略图)可以为图片设置不同的形状。
6.辅助类
  • 文本颜色: .text-muted、.text-primary、.text-success、.text-warning、.text-danger、.text-info
  • 背景颜色: .bg-primary、.bg-info、.bg-success、.bg-danger、.bg-warning
  • 关闭按钮:可以让模态框或警告框消失,data-dismiss="modal"表示让模态框消失,如果要让警告框消失,设置data-dismiss="alert"。
 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  • 三角符号: 添加.caret类指示某个元素具有下拉菜单的功能
  • 快速浮动: pull-left、pull-right
  • 让内容块居中: .center-block为元素设置display:block并设置其左右边距为auto让其内容居中。
  • 清除浮动:在需要清除浮动的父元素上添加.clear-fix即可。
  • 显示与隐藏元素: .hidden、.show、.invisible(元素的display属性不改变,仍能够影响文档流)。
  • .src-only:screen reader only(仅供屏幕阅读器),只在屏幕阅读器中显示。
  • 响应式工具: .visible-xs-、.visible-sm-、.visible-md-、.visible-lg-、.hidden-xs、.hidden-sm、.hidden-md、.hidden-lg、.visible--(第一个可以是xs/sm/md/lg,第二个可以是inline/inline-block/block)
几个常用插件
1.模态框
<!--模态框-->
        <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
            <!--
                务必为.modal添加role="dialog"和aria-labelledby="..."属性,用于指向模态框的标题栏,例如这里的aria-labelledby="myModalLabel",将
                模态框的标题栏指向了id为myModalLabel的元素。
            -->
            <div class="modal-dialog" role="document">
              <div class="modal-content">
                <div class="modal-header">
                  <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                  <h4 class="modal-title" id="myModalLabel">Modal title</h4>
                </div>
                <div class="modal-body">
                  ...
                </div>
                <div class="modal-footer">
                  <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                  <button type="button" class="btn btn-primary">Save changes</button>
                </div>
              </div>
            </div>
          </div>
  • data-toggle和data-target属性:指以什么事件触发,常用的有modal,popover,tooltips等,data-target指事件的目标,一起使用代表将data-target所指元素以data-toggle指定的形式展示。如:
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

就是按下按钮后将id为myModal的元素以模态框的形式显示出来。

  • data-dismiss: 给一个元素data-dismiss属性,通过点击该元素就可以让目标消失。如:
   <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

点击该按钮可以关闭外层模态框。

  • 尺寸:可以为.modal-dialog添加.modal-lg或.modal-sm来调整模态框大小。
  • .fade:给模态框添加淡入和淡出效果。
  • 调用模态框的方法:
    1.通过data属性:
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

2.通过js调用:myModal为要展示的元素id,options是一个对象,用来传递模态框的属性。

$('#myModal').modal(options)
  • 属性:可以将属性放入js参数中传递,也可以通过data属性传递。对于data属性,需要将属性名放在data-之后,如data-backdrop=""。有以下这些属性:
    1.backdrop:点击遮罩是否能关闭模态框,值可以为static(不关闭),true或者false。
    2.keyboard:键盘上的esc键被按下时关闭模态框。
    3.show:模态框初始化后立即显示出来(不太理解,好像是第一次点击按钮时,模态框进行初始化,如果要显示模态框需要再次点击按钮)
  • 方法:
    1.modal(options):将页面中的某块内容作为模态框激活,options为可选参数。
    2.modal('toggle/show/hide'):手动切换模态框状态/打开/关闭模态框。
    3.modal('handleUpdate'):当模态框的高度调整后并且需要出现滚动条时,更新模态框的位置。
  • 事件:
    1.show.bs.modal:show方法调用之后立即出发该事件。如果是通过点击某个作为触发器的元素(如按钮),则此元素可以通过事件的relatedTarget属性进行访问,在此方法中调用preventDefault()方法,可以停止其行为(弹出模态框)
    2.shown.bs.modal:模态框显示出来之后触发,如果是通过点击某个作为触发器的元素(如按钮),则此元素可以通过事件的relatedTarget属性进行访问。
    3.hide.bs.modal:hide方法调用之后触发。在此方法中调用preventDefault()方法,可以停止其行为(关闭模态框)
    4.hidden.bs.modal:模态框被隐藏之后触发。
    5.loaded.bs.modal:从远端数据源加载完数据之后触发。
2.下拉菜单
<div class="dropdown">
  <button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
    Dropdown trigger
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dLabel">
    ...
  </ul>
</div>
  • 调用下拉菜单的方法:与模态框一样,同样可以通过data-toggle="dropdown"属性或dropdown()方法调用。
  • 方法:dropdown('toggle')
  • 事件:触发方式与modal类似
    1.show.bs.dropdown
    2.shown.bs.dropdown
    3.hide.bs.dropdown
    4.hidden.bs.dropdown
3.collapse可折叠面板
<a class="btn btn-primary" role="button" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
    Link with href
  </a>
  <button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
    Button with data-target
  </button>
  <div class="collapse" id="collapseExample">
    <div class="well">
     折叠内容
    </div>
  </div>
  • 通过a标签或者button按钮绑定data-toggle和data-target属性(a标签可以使用href属性)来控制面板的折叠与展开。
  • 面板可以有三种类:
    1.collapse:展开状态
    2.collpasing:正处于状态切换中
    3.collapse.in: 折叠状态
  • 展开面板的方式:同样是通过data-toggle和data-target属性来控制,或者使用collapse(options)方法,options为可选属性。
  • options属性:
    1.parent:如果提供了选择器,那么在显示此可折叠项时,指定选择器下的所有可折叠元素将关闭。类似手风琴效果,需搭配panel类使用。
    2.toggle:切换目标元素的折叠状态
  • 方法:collapse('toggle/show/hide'):切换/展开/折叠元素。
  • 事件:
    1.show.bs.collapse
    2.shown.bs.collapse
    3.hide.bs.collapse
    4.hidden.bs.collapse
  • 手风琴效果的实现:
  <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
    <div class="panel panel-default">
      <div class="panel-heading" role="tab" id="headingOne">
        <h4 class="panel-title">
          <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
            Collapsible Group Item #1
          </a>
        </h4>
      </div>
      <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
        <div class="panel-body">
          Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
        </div>
      </div>
    </div>
    <div class="panel panel-default">
      <div class="panel-heading" role="tab" id="headingTwo">
        <h4 class="panel-title">
          <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
            Collapsible Group Item #2
          </a>
        </h4>
      </div>
      <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
        <div class="panel-body">
          Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
        </div>
      </div>
    </div>
  </div>

使用了data-parent属性将每一个折叠项包含进panel-group中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270