Bootstrap基础

一、Bootstrap概述

Bootstrap简介:
Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的。Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的。bootstrap 是 2011 年八月在 GitHub 上发布的开源产品。
Boostrap特点
1. 移动设备优先: 自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式。
2. 所有的主流浏览器都支持 bootstrap, Internet Explorer Firefox Opera Google Chrome Safari
3. 容易上手: 只要您具备 HTML 和 CSS 的基础知识,您就可以开始学习bootstrap
4. 响应式设计: bootstrap的响应式 CSS 能够自适应于台式机、平板电脑和手机。

二、编写响应式页面

1.下载bootstrap
   http://www.bootcss.com/
2. 导入bootstrap.css文件
3.导入jquery.js
4.导入bootstrap.js
   <!--导入css-->
   <link rel="stylesheet" href="css/bootstrap.min.css" />
   <!-- 导入jquery-->
   <script type="text/javascript" src="js/jquery-1.11.0.js" ></script>
   <!--导入bootstrap.js -->
   <script type="text/javascript" src="js/bootstrap.min.js" ></script>
5.导入兼容支持移动设备标签
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
6.将所有的内容放到布局容器中
    .container 类用于固定宽度并支持响应式布局的容器。
    <div class="container">
      ...
    </div>
    .container-fluid 类用于 100% 宽度,占据全部视口(viewport)的容器。
    <div class="container-fluid">
      ...
    </div>
    测试1: 使用container显示 
    <div class="container">
        <div style="border: 1px solid red;">111111</div>
   </div>
    测试2: 使用container显示 
   <div class="container-fluid">
       <div style="border: 1px solid red;">111111</div>
   </div>

三、Bootstrap的组成

  • 全局css样式
  • 组件
  • js插件

3.1 Bootstrap入门

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title</title>
    <link rel="stylesheet" href="../css/bootstrap.css" />
</head>
<body>
    <h1>欢迎使用bootstrap</h1>
    <script type="text/javascript" src="../js/jquery-1.12.4.js"></script>
    <script type="text/javascript" src="../js/bootstrap.js"></script>
</body>
</html>

四、栅格系统

1. Bootstrap 提供了一套响应式、移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。
注意:Bootstrap将每一行分成12份!
2. Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。它包含了易于使用的预定义类,还有强大的mixin 用于生成更具语义的布局。
3. 栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,内容就可以放入这些创建好的布局中

4.1 媒体查询功能

bootstrap通过媒体查询判断是什么上网设备
1.超小屏幕( 手机 <768px 没有任何媒体查询相关的代码,因为这在Bootstrap 中是默认的)
2.小屏幕(平板,大于等于 768px) 
       @media (min-width: @screen-sm-min) { ... }
3.中等屏幕(桌面显示器,大于等于 992px)
       @media (min-width: @screen-md-min) { ... }
4.大屏幕(大桌面显示器,大于等于 1200px)
       @media (min-width: @screen-lg-min) { ... }

大屏幕 大于1200          col-lg-
中屏幕 大于992<1200    col-md-
小屏幕 大于768<922     col-sm-
最小屏幕 小于768         col-xs-

4.2 具体案例

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <!--1 导入三个标签-->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>bootstrap容器</title>
    <!--2 引入bootstrap的css-->
    <link rel="stylesheet" href="../css/bootstrap.css" />
    <style type="text/css">
        .container{
            background-color: lightskyblue;
            height: 500px;
        }
        .top1 div{
            border: 1px solid red;
        }
        .top2 div{
            border: 1px solid black;
        }
        .top3 div{
            border: 1px solid orange;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="row top1">
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">1</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">2</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">3</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">4</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">5</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">6</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">7</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">8</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">9</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">10</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">11</div>
            <div class="col-lg-1 col-md-2 col-sm-3 col-xs-4">12</div>
        </div>

        <div class="row top2">
            <div class="col-sm-8">1</div>
            <div class="col-sm-4">2</div>
        </div>

        <div class="row top3">
            <div class="col-md-4">.col-md-4</div>
            <div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
        </div>
    </div>
    <!--3引入jQuery-->
    <script type="text/javascript" src="../js/jquery-1.12.4.js" ></script>
    <!--4引入bootstrap的js-->
    <script type="text/javascript" src="../js/bootstrap.js" ></script>
</body>
</html>

五、排版

5.1 标题

<h1>我是h1</h1>我是跟随者
<!-- 要写成行内快-->
<span class="h1">我是h1</span>我是跟随者
// 标题: HTML 中的所有标题标签, <h1> 到 <h6> 均可使用。
// 另外,还提供了 .h1 到 .h6 类, 为的是给内联(inline)属性的文本赋予标题的样式。

5.2 强调

// 强调
    <mark>hello</mark>
// 删除
    <del>world</del>

5.3 对齐

<p class="text-left">Left aligned text.</p>
<p class="text-center">Center aligned text.</p>
<p class="text-right">Right aligned text.</p>
<p class="text-justify">Justified text.</p>
<p class="text-nowrap">No wrap text.</p>
// 通过文本对齐类, 可以简单方便的将文字重新对齐

5.4 表格

<div class="table-responsive">
        <table class="table table-striped table-bordered table-hover table-condensed">
//table表格     table-striped表格隔行变色     table-striped表格隔行变色
            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td>4</td>
            </tr>

            <tr>
                <td>1</td>
                <td>2</td>
                <td>3</td>
                <td>4</td>
            </tr>
        </table>
    </div>

5.5 行状态

通过这些状态类可以为行或单元格设置颜色。
Class 描述
.active 鼠标悬停在行或单元格上时所设置的颜色
.success 标识成功或积极的动作
.info 标识普通的提示信息或动作
.warning 标识警告或需要用户注意
.danger 标识危险或潜在的带来负面影响的动作

六、表单

元素都将被默认设置宽度属性为 width: 100%;将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好的排列。

6.1 基本实例

// 单独的表单控件会被自动赋予一些全局样式。所有设置了 .form-control 类的 <input>、<textarea> 和 <select>
// 把标签和控件放在一个带有 class .form-group 的 <div> 中。这是获取最佳间距所必需的。
// 向所有的文本元素 <input>、<textarea> 和 <select> 添加 class ="form-control" 。
// form-group 会将label和input上下排列 
// form-control 会自动将input填充满屏幕 并添加点击高亮效果
<form>
        <div class="form-group">
            <label for="name">名称</label>
            <input type="text" class="form-control" id="name">
        </div>
        <div class="form-group">
            <label for="inputfile">文件输入</label>
            <input type="file" id="inputfile">
            <p class="help-block">这是块级帮助文本的实例</p>
        </div>
        <div class="checkbox">
            <label>
                <input type="checkbox">请打勾
            </label>
        </div>
        <button type="submit" class="btn btn-default">提交</button>
 </form>

6.2 内联表单


// 为 <form> 元素添加 .form-inline 类可使其内容左对齐并且表现为 inline-block 级别的控件。
// 只适用于视口(viewport)至少在 768px 宽度时(视口宽度再小的话就会使表单折叠)。
<form class="form-inline">
        <div class="form-group">
            <label for="test1">Name</label>
            <input type="text" class="form-control" id="test1">
        </div>
        <div class="form-group">
            <label for="test2">Email</label>
            <input type="email" class="form-control" id="test2">
        </div>
        <button type="submit" class="btn btn-default">send</button>
</form>

6.3 水平表单

// 通过为表单添加 .form-horizontal 类,并联合使用 Bootstrap 预置的栅格类,
// 可以将 label 标签和控件组水平并排布局。这样做将改变 .form-group 的行为
// 使其表现为栅格系统中的行(row)因此就无需再额外添加 .row 了。
<form class="form-horizontal">
        <div class="form-group">
            <label for="test3" class="col-sm-2 control-label">Email</label>
            <div class="col-sm-10">
                <input type="email" class="form-control" id="test3">
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <div class="checkbox">
                    <label>
                        <input type="checkbox">Remember
                    </label>
                </div>
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-default">Sign in</button>
            </div>
        </div>
</form>

6.4 单选框和多选框

//通过将 .checkbox-inline 或 .radio-inline 类应用到一系列的多选框
//(checkbox)或单选框(radio)控件上,可以使这些控件排列在一行。
    <label class="checkbox-inline">
        <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
    </label>
    <label class="checkbox-inline">
        <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
    </label>
    <label class="radio-inline">
        <input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1"> 1
    </label>
    <label class="radio-inline">
        <input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2"> 2
    </label>
    <label class="radio-inline">
        <input type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3"> 3
    </label>

6.5 下拉列表

    <select class="form-control">
        <option>1</option>
        <option>2</option>
    </select>

    <select multiple class="form-control">
        <option>1</option>
        <option>2</option>
    </select>

6.6 静态控件

<form class="form-horizontal">
        <div class="form-group">
            <label class="col-sm-2 control-label">Email</label>
            <div class="col-sm-10">
                <p class="form-control-static">email@example.com</p>
            </div>
        </div>
        <div class="form-group">
            <label for="inputPassword" class="col-sm-2 control-label">Password</label>
            <div class="col-sm-10">
                <input type="password" class="form-control" id="inputPassword" placeholder="Password">
            </div>
        </div>
</form>

6.7 校验状态

1. Bootstrap 对表单控件的校验状态,如 error、warning 和 success 状态,都定义了样式。
2. 使用时添加 .has-warning、.has-error 或 .has-success 类到这些控件的父元素即可。
3. 任何包含在此元素之内的 .control-label、.form-control 和 .help-block 元素都将接受这些校验状态的样式。

具体示例

<div class="form-group has-success">
        <label class="control-label" for="inputSuccess1">Input with success</label>
        <input type="text" class="form-control" id="inputSuccess1" aria-describedby="helpBlock2">
        <span id="helpBlock2" class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
    </div>
    <div class="form-group has-warning">
        <label class="control-label" for="inputWarning1">Input with warning</label>
        <input type="text" class="form-control" id="inputWarning1">
    </div>
    <div class="form-group has-error">
        <label class="control-label" for="inputError1">Input with error</label>
        <input type="text" class="form-control" id="inputError1">
    </div>
    <div class="has-success">
        <div class="checkbox">
            <label>
                <input type="checkbox" id="checkboxSuccess" value="option1">
                Checkbox with success
            </label>
        </div>
    </div>
    <div class="has-warning">
        <div class="checkbox">
            <label>
                <input type="checkbox" id="checkboxWarning" value="option1">
                Checkbox with warning
            </label>
        </div>
    </div>
    <div class="has-error">
        <div class="checkbox">
            <label>
                <input type="checkbox" id="checkboxError" value="option1">
                Checkbox with error
            </label>
        </div>
    </div>
    添加额外的图标
    你还可以针对校验状态为输入框添加额外的图标。只需设置相应的 .has-feedback 类并添加正确的图标即可。
    反馈图标(feedback icon)只能使用在文本输入框 <input class="form-control"> 元素上。
    需要导入font字体库
    <div class="form-group has-success has-feedback">
        <label class="control-label" for="inputSuccess2">Input with success</label>
        <input type="text" class="form-control" id="inputSuccess2" aria-describedby="inputSuccess2Status">
        <span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
        <span id="inputSuccess2Status" class="sr-only">(success)</span>
</div>

6.8 按钮


1.按钮颜色, class =  btn 将任何东西变成按钮 需要配合  btn-default a标签也可以
    <!-- Standard button -->
    <button type="button" class="btn btn-default">(默认样式)Default</button>

    <!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
    <button type="button" class="btn btn-primary">(首选项)Primary</button>

    <!-- Indicates a successful or positive action -->
    <button type="button" class="btn btn-success">(成功)Success</button>

    <!-- Contextual button for informational alert messages -->
    <button type="button" class="btn btn-info">(一般信息)Info</button>

    <!-- Indicates caution should be taken with this action -->
    <button type="button" class="btn btn-warning">(警告)Warning</button>

    <!-- Indicates a dangerous or potentially negative action -->
    <button type="button" class="btn btn-danger">(危险)Danger</button>

    <!-- Deemphasize a button by making it look like a link while maintaining button behavior -->
    <button type="button" class="btn btn-link">(链接)Link</button>

    2.成组button
    <div class="btn-group" data-toggle="buttons">
        <label class="btn btn-primary">
            <input type="radio" name="options" id="option1"> 选项 1
        </label>
        <label class="btn btn-primary">
            <input type="radio" name="options" id="option2"> 选项 2
        </label>
        <label class="btn btn-primary">
            <input type="radio" name="options" id="option3"> 选项 3
        </label>
    </div>

6.9 尺寸

// 使用 .btn-lg、.btn-sm 或 .btn-xs 就可以获得不同尺寸的按钮
    <p>
        <button type="button" class="btn btn-primary btn-lg">(大按钮)Large button</button>
        <button type="button" class="btn btn-default btn-lg">(大按钮)Large button</button>
    </p>
    <p>
        <button type="button" class="btn btn-primary">(默认尺寸)Default button</button>
        <button type="button" class="btn btn-default">(默认尺寸)Default button</button>
    </p>
    <p>
        <button type="button" class="btn btn-primary btn-sm">(小按钮)Small button</button>
        <button type="button" class="btn btn-default btn-sm">(小按钮)Small button</button>
    </p>
    <p>
        <button type="button" class="btn btn-primary btn-xs">(超小尺寸)Extra small button</button>
        <button type="button" class="btn btn-default btn-xs">(超小尺寸)Extra small button</button>
   </p>

6.10 图片形状


// 响应式图片!随着窗体大小改变大小
// 通过为 <img> 元素添加以下相应的类,可以让图片呈现不同的形状。
<img src="" alt="" class="img-rounded">
<img src="" alt="" class="img-circle">
<img src="" alt="" class="img-thumbnail">

6.11 辅助类

情境文本颜色

通过颜色来展示意图,Bootstrap 提供了一组工具类。这些类可以应用于链接,并且在鼠标经过时颜色可以还可以加深,就像默认的链接一样。

<p class="text-muted">...</p>
<p class="text-primary">...</p>
<p class="text-success">...</p>
<p class="text-info">...</p>
<p class="text-warning">...</p>
<p class="text-danger">...</p>

情境背景色

和情境文本颜色类一样,使用任意情境背景色类就可以设置元素的背景。链接组件在鼠标经过时颜色会加深,就像上面所讲的情境文本颜色类一样

<p class="bg-primary">...</p>
<p class="bg-success">...</p>
<p class="bg-info">...</p>
<p class="bg-warning">...</p>
<p class="bg-danger">...</p>

6.12 浮动

<div class="pull-left">...</div>
<div class="pull-right">...</div>

6.13 可见类

(<768px) (≥768px)  (≥992px)(≥1200px)
.visible-xs- 可见 隐藏 隐藏 隐藏
.visible-sm-隐藏 可见 隐藏 隐藏
.visible-md-隐藏 隐藏 可见 隐藏
.visible-lg-隐藏 隐藏 隐藏 可见
.hidden-xs- 隐藏 可见 可见 可见
.hidden-sm- 可见 隐藏 可见 可见
.hidden-md-  可见 可见 隐藏 可见
.hidden-lg- 可见 可见 可见 隐藏