36 Bootstrap

234 阅读4分钟

1 bootstrap简介

Bootstrap是目前主流的响应式前端框架,那么Bootstrap的优势体现在:

  • 移动设备优先:从Bootstrap3开始,框架包含了整个库移动设备优先的样式
  • 浏览器支持:所有主流浏览器都支持Bootstrap
  • 容易上手:只要具备HTML和CSS的基础就可以上手
  • 响应式设计:Bootstrap的响应式CSS能够适应于台式机、平板电脑以及手机
  • 包含强大的内置组件,易于定制

2 Bootstrap的使用

2.1 表格

在Bootstrap中表格的标签更加丰富,效果也更加美观,下面会介绍表格的标签和样式

标签:

  • table为表格添加基础样式
  • thead表格标题行的容器元素
  • tbody表格主体中的表格行的容器元素
  • tr表格行
  • td默认的表格单元格
  • th特殊的表格单元格,必须在thead标签中使用
  • caption关于表格存储内容的描述或总结

外观样式:

  • .table 为任意的table添加基本样式(只有横向分割线)
  • .table-striped在tbody内添加斑马纹样式的条纹,也就是隔行变色
  • .table-borded为所有表格的单元格添加边框
  • .table-hover在tbody内的任意一行启用鼠标悬停状态,鼠标悬停高亮突出显示
  • .table-condensed使表格更加精凑

请景色样式:适用在th、tr、td

  • .active激活效果
  • .success表示成功的动作
  • .info表示普通的提示信息
  • .waring表示警告的信息
  • .danger表示危险所带来的负面影响的动作

响应式表格实例 table-responsive将表格设置为响应式

<body style="padding: 100px;">
    <table class="table table-responsive">
        <caption>产品记录表格</caption>
        <thead>
            <tr>
                <th>产品名称</th>
                <th>日期</th>
                <th>状态</th>
            </tr>
        </thead>
        <tbody>
            <tr class="info">
                <td>苹果</td>
                <td>2020-1-1</td>
                <td>新鲜</td>
            </tr>
            <tr class="active">
                <td>丑八怪</td>
                <td>2020-2-1</td>
                <td>新鲜</td>
            </tr>
            <tr class="success">
                <td>车厘子</td>
                <td>2020-3-1</td>
                <td>新鲜</td>
            </tr>
            <tr class="warning">
                <td>樱桃</td>
                <td>2020-4-1</td>
                <td>新鲜</td>
            </tr>
            <tr class="danger">
                <td>橘子</td>
                <td>2020-5-1</td>
                <td>新鲜</td>
            </tr>
        </tbody>

    </table>
    
</body>

2.2 表单

表单有两种布局:默认布局和内联布局

先看默认布局

<body style="padding: 100px;">
    <form >
        <div class="form-group">
            <label>邮箱</label>
            <input type="email" class="form-control" placeholder="输入邮箱...">
        </div>
        <div class="form-group">
            <label>密码</label>
            <input type="password" class="form-control" placeholder="输入密码...">
        </div>
        <div class="form-group">
            <button class="btn btn-primary">提交</button>
        </div>
    </form>
 
    
</body>

内联布局

内联布局会使所有表单元素居于一行(当小于768px时,会自动还原成移动端样式)

<body style="padding: 100px;">
    <form class="form-inline">
        <div class="form-group">
            <label>邮箱</label>
            <input type="email" class="form-control" placeholder="输入邮箱...">
        </div>
        <div class="form-group">
            <label>密码</label>
            <input type="password" class="form-control" placeholder="输入密码...">
        </div>
        <div class="form-group">
            <button class="btn btn-primary">提交</button>
        </div>
    </form>
 
    
</body>

除了布局外,还要介绍表单常用的控件:输入框、文本框、复选框、复选按钮、单选框以及单选按钮。

输入框

<body style="padding: 100px;">
    <form>
        <div class="form-group">
            <label for="">输入框</label>
            <input type="text" class="form-control" placeholder="请输入文本...">
        </div>
    </form>
 
    
</body>

文本框

<body style="padding: 100px;">
    <form>
        <div class="form-group">
           <label for="">文本框</label>
           <textarea class="form-control" cols="30" rows="5"></textarea>

        </div>
    </form>
 
    
</body>

复选框

checkbox默认

checkbox-inline内联

    <div class="checkbox">
        <label >
            <input type="checkbox">抽烟
        </label>
    </div>
    <div class="checkbox">
        <label >
            <input type="checkbox">学习
        </label>
    </div>
    <hr>
    <div class="checkbox-inline">
        <label >
            <input type="checkbox">阅读
        </label>
    </div>
    <div class="checkbox-inline">
        <label >
            <input type="checkbox">睡觉
        </label>
    </div>

复选按钮

<form >
        <div class="btn-group" data-toggle="buttons">
            <label class="btn btn-primary">
                <input type="checkbox">学习
            </label>
            <label class="btn btn-primary">
                <input type="checkbox">吃饭
            </label>
            <label class="btn btn-primary">
                <input type="checkbox">睡觉
            </label>
            <label class="btn btn-primary">
                <input type="checkbox">阅读
            </label>

        </div>
    </form>

单选框

<label class="radio">
        <input type="radio" name="sex"></label>
    <label class="radio">
        <input type="radio" name="sex"></label>
    <hr>
    <label class="radio-inline">
        <input type="radio" name="age">17
    </label>
    <label class="radio-inline">
        <input type="radio" name="age">18
    </label>

单选按钮

<label class="btn btn-primary">
        <input type="radio" name="gender"></label>
    <label class="btn btn-primary">
        <input type="radio" name="gender"></label>

2.3 按钮

在Bootstrap中按钮有以下几种样式:

    <button class="btn btn-default">1</button>
    <button class="btn btn-primary">2</button>
    <button class="btn btn-success">3</button>
    <button class="btn btn-info">4</button>
    <button class="btn btn-warning">5</button>
    <button class="btn btn-danger">6</button>
    <button class="btn btn-link">7</button>

按钮大小设置:

    <button class="btn btn-default btn-lg">1</button>
    <button class="btn btn-primary">2</button>
    <button class="btn btn-success btn-sm">3</button>
    <button class="btn btn-info btn-xs">4</button>

按钮状态:激活状态和禁用状态,其中激活状态时,按钮在激活时呈现为被按压的外观;禁用状态时,颜色会变淡50%,并且失去渐变

    <button class="btn btn-default">1</button>
    <button class="btn btn-default active">2</button>
    <button class="btn btn-default disabled">3</button>

2.4 图片

在Bootstrap中关于图片有以下几点属性:

  • .img-rounded:添加border-radius:6px获得圆片圆角
  • .img-circle:添加border-radius:50%使整个图片变成圆形
  • .img-thumbnail:添加一些内边距和一个灰色边框
    <img src="pig.jpeg" class="img-rounded">
    <img src="pig.jpeg" class="img-circle">
    <img src="pig.jpeg" class="img-thumbnail">

响应式图片

<img src="pig.jpeg" class="img-responsive">

2.5 下拉菜单组件

    <div class="dropdown">
        <button class="btn btn-primary" data-toggle="dropdown">菜单<span class="caret"></span></button>
        <ul class="dropdown-menu">
            <li><a href="#">前端</a></li>
            <li><a href="#">后端</a></li>
            <li><a href="#">全栈</a></li>
        </ul>
    </div>

关键点:外围容器使用class="dropdown"包裹,内部点击按钮事件绑定data-toggle="dropdown",菜单元素使用class="dropdown-menu"。

2.6 分页组件

<ul class="pagination">
        <li class="previous"><a href="#">&laquo;</a></li>
        <li  class="active"><a href="#">1</a></li>
        <li ><a href="#">2</a></li>
        <li ><a href="#">3</a></li>
        <li class="next"><a href="#">&raquo;</a></li>
    </ul>

2.7 栅格系统

bootstrap的栅格系统将整个页面水平方向平均划分为12个小格子,但浏览器发生变化时,我们可以控制每行元素占用几个格子,从而达到响应式效果。

    <style>
    .a{
        height: 50px;
        border: 1px solid black;
        background-color: #eeeeee;
    }
		</style>
    <div class="container">
        <div class="row">
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>

            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>

            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>
            <div class="col-lg-3 col-md-4 col-sm-6 a">1</div>


        </div>
    </div>

col-lg-3 :当大屏幕时,一个div占3份,一行显示4个div

col-md-4 :当中屏幕时,一个div占4份,一行显示3个div

col-sm-6:当小屏幕时,一个div占6份,一行显示2个div

超小屏幕时,一个div占12份,一行就显示一个div

2.8 缩略图组件

        <div class="row">
            <div class="col-lg-3 col-md-4 col-sm-6">
                <div class="thumbnail"><img src="pig.jpeg"></div>
            </div>
            <div class="col-lg-3 col-md-4 col-sm-6">
                <div class="thumbnail"><img src="pig.jpeg"></div>
            </div>
            <div class="col-lg-3 col-md-4 col-sm-6">
                <div class="thumbnail"><img src="pig.jpeg"></div>
            </div>
            <div class="col-lg-3 col-md-4 col-sm-6">
                <div class="thumbnail"><img src="pig.jpeg"></div>
            </div>
        </div>

2.9 模态框组件

模态框有以下几个相关属性:

  • data-toggle="modal" 触发类型:模态框modal
  • data-target="#myModal"触发的节点
  • data-backdrop="static"点击黑灰色背景,不会关闭模态框
    <button class="btn btn-warning" data-toggle="modal" data-target="#myModal"></button>
    <div class="modal" id="myModal" data-backdrop="static">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button class="close" data-dismiss="modal">
                        <span>&times;</span>
                    </button>
                    <h4 class="modal-title">友情提示</h4>
                </div>
                <div class="modal-body">
                    <hr>
                    <img src="pig.jpeg" width="200px">
                    <hr>
                    <input type="text">
                </div>
                <div class="modal-footer">
                    <button class="btn btn-info">确定</button>
                    <button class="btn btn-default" data-dismiss="modal">取消</button>
                </div>
            </div>
        </div>
    </div>

3 小案例

首页轮播图:

  1. 大小屏幕自动适应,扩大缩小浏览器
  2. 滚动数字区点击左右切换图片
  3. 左右区域点击切换
  4. 默认5秒种自动切换下一张
  5. 最后一张,回到第一张
<div id="lunbotu" class="carousel slide" data-ride="carousel" >
    <ol class="carousel-indicators">
        <li data-slide-to="0" data-target="#lunbotu"></li>
        <li data-slide-to="1" data-target="#lunbotu"></li>
        <li data-slide-to="2" data-target="#lunbotu"></li>
    </ol>
    <div class="carousel-inner">
        <div class="item active">
            <img src="pig.jpeg">
        </div>
        <div class="item">
            <img src="pig.jpeg">
        </div>
        <div class="item">
            <img src="pig.jpeg">
        </div>
    </div>
    <a href="#lunbotu" data-slide="prev" class="carousel-control left">
        <span class="glyphicon glyphicon-chevron-left"></span>
    </a>
    <a href="#lunbotu" data-slide="next" class="carousel-control right">
        <span class="glyphicon glyphicon-chevron-right"></span>
    </a>
</div>

data属性解释:

  • data-slide接受关键字prev或next,用来改变幻灯片相当于当前位置
  • data-slide-to来向轮播图底部创建一个原始滑动索引,data-slide-to="2"将把滑动块移动到一个特定索引,索引从0开始
  • data-ride="carousel"属性用户标记轮播在页面加载时开始动画播放

响应式导航条

<div class="navbar navbar-default">
    <div class="container">
        <div class="navbar-header">
            <a href="#" class="navbar-brand">科技有限公司</a>
            <button class="navbar-toggle" data-toggle="collapse" data-target="#nav">
                <span class="sr-only"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        </div>
        <div id="nav" class="collapse navbar-collapse">
            <ul class="nav navbar-nav navbar-right">
                <li class="active"><a href="#"><span class="glyphicon glyphicon-home"></span>主页</a></li>
                <li ><a href="#"><span class="glyphicon glyphicon-tint"></span>产品</a></li>
                <li ><a href="#"><span class="glyphicon glyphicon-camera"></span>介绍</a></li>
                <li ><a href="#"><span class="glyphicon glyphicon-earphone"></span>联系我们</a></li>
                

            </ul>
        </div>
    </div>

</div>