Bootstrap

1. Bootstrap 的概念

Bootstrap,一个前端开发的框架,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。

2. Bootstrap 的功能

  1. 定义了很多的 css 样式和 js 插件。我们开发人员直接可以使用这些样式和插件得到丰富的页面效果。
  2. 响应式布局:同一套页面可以兼容不同分辨率的设备。

3. Bootstrap 快速入门

  1. 下载 Bootstrap

    下载压缩包 bootstrap-3.3.7-dist 并解压,得到 css,fonts,js 三个文件夹

  2. 在项目中导入 Bootstrap

    复制这三个文件夹,粘贴到在项目中。

    复制 jquery-3.2.1.min.js,粘贴到项目 js 文件夹下

  3. 创建 html 页面,引入必要的资源文件

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>Bootstrap 101 Template</title>
    
        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
    
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="js/jquery-3.2.1.min.js"></script>
        <!-- Include all compiled plugins (below), or include individual files as needed -->
        <script src="js/bootstrap.min.js"></script>
    
    </head>
    <body>
    <h1>你好,世界!</h1>
    
    
    </body>
    </html>
    

4. 响应式布局

  1. 响应式布局的概念

    同一套页面可以兼容不同分辨率的设备。

  2. 响应式布局的实现

    依赖于栅格系统,即将一行平均分成12个格子(PC 和移动端都是 12 个格子),可以指定元素占几个格子。

    如:<div>在 PC 端上显示占 4 个格子,在手机上占 12 个格子

  3. 响应式布局的步骤

    1. 定义容器(相当于 table)。

      样式分为两类:

      1. container:两边留白
      2. container-fluid:每一种设备都是100%宽度
    2. 定义行(相当于 tr)。

      样式:row

    3. 定义元素(相当于 td)。指定该元素在不同的设备上,所占的格子数目。

      样式:col-设备代号-格子数目

      设备代号:

      1. xs:超小屏幕 手机 (<768px)
      2. sm:小屏幕 平板 (≥768px)
      3. md:中等屏幕 桌面显示器 (≥992px)
      4. lg:大屏幕 大桌面显示器 (≥1200px)
    4. 注意事项:

      1. 容器,行,元素都是通过 css 样式定义的。
      2. 一行中如果格子数目超过12,则超出部分自动换行。
      3. 栅格类属性向上兼容。(例如:一行设置三个 class="col-xs-4",在手机上是一行三个元素,到平板和电脑还是保持不变)
      4. 栅格类属性向下不兼容。(例如:一行设置三个 class="col-lg-4",在电脑上是一行三个元素,到平板和手机上会一个元素沾满一整行)
  4. 响应式布局练习

    1. 案例效果

      PC 端:

      在这里插入图片描述

      pad 端:

      在这里插入图片描述

    2. 编码实现

      <body>
      <div class="container-fluid">
          <div class="row">
              <div class="col-md-2 col-sm-6 inner">abc</div>
              <div class="col-md-2 col-sm-6 inner">abc</div>
              <div class="col-md-2 col-sm-6 inner">abc</div>
              <div class="col-md-2 col-sm-6 inner">abc</div>
              <div class="col-md-2 col-sm-6 inner">abc</div>
              <div class="col-md-2 col-sm-6 inner">abc</div>
          </div>
      </div>
      

5. CSS 样式和 JS 插件

5.1 全局 CSS 样式

  1. 按钮

    <!--class="btn btn-default":为按钮添加不同的颜色-->
    <button type="button" class="btn btn-default">(默认样式)Default</button>
    <button type="button" class="btn btn-primary">(首选项)Primary</button>
    
  2. 图片

    <!--class="img-responsive":图片在任意尺寸都占100%-->
    <img src="img/banner_1.jpg" class="img-responsive" alt="Responsive image">
    <!--img-circle:圆形-->
    <img src="img/banner_1.jpg" class="img-responsive img-circle" alt="Responsive image">
    <!--img-rounded:方形-->
    <img src="img/banner_1.jpg" class="img-responsive img-rounded" alt="Responsive image">
    <!--img-thumbnail:相框型 -->
    <img src="img/banner_1.jpg" class="img-responsive img-thumbnail" alt="Responsive image">
    
  3. 表格

    <!--table-striped:条纹状表格-->
    <!--table-bordered:带边框的表格-->
    <!--table-hover:鼠标悬停-->
    <!--table-condensed:紧缩表格-->
    <table class="table table-striped table-bordered table-hover table-condensed">
    </table>
    
  4. 表单

    <!--所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;-->
    <!--将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好的排列-->
    <form>
      <div class="form-group">
        <label for="exampleInputEmail1">Email address</label>
        <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
      </div>
      <div class="form-group">
        <label for="exampleInputPassword1">Password</label>
        <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
      </div>
      <div class="form-group">
        <label for="exampleInputFile">File input</label>
        <input type="file" id="exampleInputFile">
        <p class="help-block">Example block-level help text here.</p>
      </div>
      <div class="checkbox">
        <label>
          <input type="checkbox"> Check me out
        </label>
      </div>
      <button type="submit" class="btn btn-default">Submit</button>
    </form>
    

5.2 组件

  1. 导航条

    <nav class="navbar navbar-default">
      <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Brand</a>
        </div>
    
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">Separated link</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
          <form class="navbar-form navbar-left" role="search">
            <div class="form-group">
              <input type="text" class="form-control" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">Submit</button>
          </form>
          <ul class="nav navbar-nav navbar-right">
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li role="separator" class="divider"></li>
                <li><a href="#">Separated link</a></li>
              </ul>
            </li>
          </ul>
        </div><!-- /.navbar-collapse -->
      </div><!-- /.container-fluid -->
    </nav>
    
  2. 分页条

    <nav>
      <ul class="pagination">
        <li>
          <a href="#" aria-label="Previous">
            <span aria-hidden="true">&laquo;</span>
          </a>
        </li>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
        <li><a href="#">4</a></li>
        <li><a href="#">5</a></li>
        <li>
          <a href="#" aria-label="Next">
            <span aria-hidden="true">&raquo;</span>
          </a>
        </li>
      </ul>
    </nav>
    

5.3 轮播图

<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
    <!-- Indicators -->
    <ol class="carousel-indicators">
        <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
        <li data-target="#carousel-example-generic" data-slide-to="1"></li>
        <li data-target="#carousel-example-generic" data-slide-to="2"></li>
    </ol>

    <!-- Wrapper for slides -->
    <div class="carousel-inner" role="listbox">
        <div class="item active">
            <img src="img/banner_1.jpg" alt="...">
        </div>
        <div class="item">
            <img src="img/banner_2.jpg" alt="...">
        </div>
        <div class="item">
            <img src="img/banner_3.jpg" alt="...">
        </div>
    </div>

    <!-- Controls -->
    <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
    </a>
    <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
    </a>
</div>

6. 案例

  1. 需求

    写一个旅游网站首页

  2. 编码实现

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
        <title>Bootstrap 101 Template</title>
    
        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet">
    
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="js/jquery-3.2.1.min.js"></script>
        <!-- Include all compiled plugins (below), or include individual files as needed -->
        <script src="js/bootstrap.min.js"></script>
        <style>
            .padd-top {
                padding-top: 15px;
            }
    
            .search_input {
                /*搜索框 宽400,高36,左浮动,边框2,颜色#ffc900,左内边距10,外轮廓outline设置为0*/
                width: 400px;
                height: 36px;
                float: left;
                border: 2px solid #ffc900;
                padding-left: 10px;
            }
    
            .search_button {
                /*点击按钮,是一个链接:左浮动,宽90,高36,背景色#ffc900,行高36,文本居中*/
                float: left;
                width: 90px;
                height: 36px;
                background-color: #ffc900;
                text-align: center;
                line-height: 36px;
            }
    
            .jx_top {
                /*外上边距15px, 底部边框2px 实线 #ffc900做为下面的线,
                宽度100%,高度35px,行高35px,外下边距5px。图标文件:icon_5.jpg*/
                margin-top: 15px;
                border-bottom: 2px solid #ffc900;
                width: 100%;
                height: 35px;
                line-height: 35px;
                margin-bottom: 5px;
            }
    
        </style>
    </head>
    <body>
    <!--页眉部分,占 100%-->
    <header class="container-fluid">
        <!--第一行是一张图片-->
        <div class="row">
            <!--img-responsive 让图片响应式-->
            <img src="img/top_banner.jpg" class="img-responsive">
        </div>
        <!--第二行是搜索栏-->
        <div class="row padd-top">
            <div class="col-md-3 col-xs-12">
                <img src="img/logo.jpg" class="img-responsive">
            </div>
            <div class="col-md-5 col-xs-12 padd-top">
                <input class="search_input" type="text" placeholder="请输入线路名称">
                <a class="search_button" href="#">搜索</a>
            </div>
            <div class="col-md-4 col-xs-12">
                <img src="img/hotel_tel.png" class="img-responsive">
            </div>
        </div>
        <!--第三行是导航栏-->
        <div class="row">
            <nav class="navbar navbar-default">
                <div class="container-fluid">
                    <!-- Brand and toggle get grouped for better mobile display -->
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                            <span class="sr-only">Toggle navigation</span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <a class="navbar-brand" href="#">导航</a>
                    </div>
                    <!-- Collect the nav links, forms, and other content for toggling -->
                    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                        <ul class="nav navbar-nav list-inline">
                            <li><a href="#">国内游</a></li>
                            <li><a href="#">出境游</a></li>
                            <li><a href="#">门票</a></li>
                            <li><a href="#">酒店</a></li>
                            <li><a href="#">火车票</a></li>
                            <li><a href="#">机票</a></li>
                        </ul>
                    </div><!-- /.navbar-collapse -->
                </div><!-- /.container-fluid -->
            </nav>
        </div>
        <!--第四行是轮播图-->
        <div class="row">
            <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
                <!-- Indicators -->
                <ol class="carousel-indicators">
                    <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
                    <li data-target="#carousel-example-generic" data-slide-to="1"></li>
                    <li data-target="#carousel-example-generic" data-slide-to="2"></li>
                </ol>
    
                <!-- Wrapper for slides -->
                <div class="carousel-inner" role="listbox">
                    <div class="item active">
                        <img src="img/banner_1.jpg" alt="...">
                    </div>
                    <div class="item">
                        <img src="img/banner_2.jpg" alt="...">
                    </div>
                    <div class="item">
                        <img src="img/banner_3.jpg" alt="...">
                    </div>
                </div>
    
                <!-- Controls -->
                <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
                    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
                    <span class="sr-only">Previous</span>
                </a>
                <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
                    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
                    <span class="sr-only">Next</span>
                </a>
            </div>
        </div>
    </header>
    <!--主体部分,两边留白-->
    <div class="container">
        <!--第一行是国内游精选-->
        <div class="row jx_top">
            <img src="img/icon_5.jpg">
            <span>国内游精选</span>
        </div>
        <!--第二行是国内游精选的内容-->
        <div class="row padd-top">
            <div class="col-md-3 col-xs-12">
                <img  class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                <div class="caption">
                    <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                    <span style="color: red">&yen;888</span>
                </div>
            </div>
            <div class="col-md-3 col-xs-12">
                <img  class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                <div class="caption">
                    <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                    <span style="color: red">&yen;888</span>
                </div>
            </div>
            <div class="col-md-3 col-xs-12">
                <img  class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                <div class="caption">
                    <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                    <span style="color: red">&yen;888</span>
                </div>
            </div>
            <div class="col-md-3 col-xs-12">
                <img  class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                <div class="caption">
                    <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                    <span style="color: red">&yen;888</span>
                </div>
            </div>
        </div>
        <!--第三行是国外游精选-->
        <div class="row jx_top">
            <img src="img/icon_6.jpg">
            <span>国外游精选</span>
        </div>
        <!--第四行是国外游精选的内容-->
        <div class="row padd-top">
            <div class="col-md-4 col-xs-12">
                <img src="img/guonei_1.jpg" class="img-responsive">
            </div>
            <div class="col-md-8 col-xs-12">
                <div class="col-md-4">
                    <img class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                    <div class="caption">
                        <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                        <span style="color: red">&yen;888</span>
                    </div>
                </div>
                <div class="col-md-4">
                    <img class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                    <div class="caption">
                        <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                        <span style="color: red">&yen;888</span>
                    </div>
                </div>
                <div class="col-md-4">
                    <img class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                    <div class="caption">
                        <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                        <span style="color: red">&yen;888</span>
                    </div>
                </div>
                <div class="col-md-4">
                    <img class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                    <div class="caption">
                        <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                        <span style="color: red">&yen;888</span>
                    </div>
                </div>
                <div class="col-md-4">
                    <img class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                    <div class="caption">
                        <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                        <span style="color: red">&yen;888</span>
                    </div>
                </div>
                <div class="col-md-4">
                    <img class="img-thumbnail" src="img/jiangxuan_1.jpg" alt="...">
                    <div class="caption">
                        <p>上海直飞三亚5天4晚自由行(春节预售+亲子/蜜月/休闲游首选+豪华酒店任选+接送机)</p>
                        <span style="color: red">&yen;888</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!--页脚部分,占 100%-->
    <footer class="container-fluid">
        <div class="row padd-top">
            <img src="img/footer_service.png" class="img-responsive">
        </div>
    </footer>
    
    </body>
    </html>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bm1998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值