1.Bootstrap

本贴最后更新于 1809 天前,其中的信息可能已经斗转星移

1.Bootstrap

40.png

1.简介

1 什么是 bootstrap?

bootstrap 是当下最流行的前端框架(界面工具集);

特点是灵活简单、代码优雅、美观大方;

目的在于让 web 开发更加迅速、敏捷;

Twitter 公司的两名前端工程师 Mark Otto 和 Jacob Thornton 在 2011 年发起的,并利用业余时间完成了第一个版本的开发。

2 什么是框架?

库 lib library

写的更少做的更多 提供一套较为便捷的操作方式;

将一套功能体系封装到一个单独的文件中的东西;

Bootstrap 提供一套前端需要的界面工具集合。

3 为什么使用 Bootstarp?

  • 生态圈火,不断地更新迭代;

  • 提供一套美观大方的界面组件

  • 响应式界面,移动设备优先;

  • 让我们的 Web 开发更简单,更快捷

注意:

  1. 使用 Bootstrap 并不代表不用写 CSS 样式,而是不用写绝大多数大家都会用到的样式
  2. Bootstrap 不是 BootStrap!这是一个词,不是合成词,其含义为:n. 引导指令,引导程序

官网 :http://www.bootcss.com/

github 地址: https://github.com/twbs/bootstrap

2.Bootstrap 初体验

Boostrap 依赖 Jquery

1.项目集成 BootStrap

41.png

2.Bootstrap 初体验

视口 viewport:可以说是一个虚拟的窗口,默认是 980px

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <!--设置编码 gbk gb2312 utf-8-->
    <meta charset="utf-8">
    <!--
       告诉IE浏览器以最新的 解析器  去解析当前的页面,
            content="IE=edge"中的edge代表是最新的解析器,也可以说是IE-11。
            content="IE=10" 代表指定使用IE-10的解析器
    -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!--
        兼容移动设备
        	视口:虚拟的窗口,默认是980px
    -->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>01-Bootstrap基本模板</title>

    <!-- 引入Bootstrap -->
    <link href="bootstrap/dist/css/bootstrap.css" rel="stylesheet">

    <!--
       如果IE浏览器版本小于9,将使用下面两个库():
           html5shiv:让版本小于9的IE浏览器,也能够使用h5的标签
           respond: 让版本小于9的IE浏览器,也能够使用C3的样式
    -->
    <!--[if lt IE 9]>
    <script src="js/html5shiv.min.js"></script>
    <script src="js/respond.min.js"></script>
    <![endif]-->

</head>
<body>

<h1>你好,世界!</h1>

<!-- Bootstrap这个个框架依赖jQuery; jquery从1.9版本以后不再兼任ie9以下浏览器(推荐1.9.1) -->
<script src="jquery/jquery-3.2.0.js"></script>
<script src="bootstrap/dist/js/bootstrap.js"></script>

</body>
</html>

####3.最简单的使用

组件:button , button -group , input , progress , 字体图标

    <!--按钮-->
    <button class="btn btn-default">普通按钮</button>
    <button class="btn btn-success">成功</button>
    <button class="btn btn-danger">危险</button>


    <!--按钮组-->
    <div class="btn-group" role="group" aria-label="...">
        <button type="button" class="btn btn-default">Left</button>
        <button type="button" class="btn btn-success">Middle</button>
        <button type="button" class="btn btn-default">Right</button>
    </div>

    <div class="btn-toolbar" role="toolbar" aria-label="...">
        <div class="btn-group" role="group" aria-label="...">
            <button type="button" class="btn btn-default">1</button>
            <button type="button" class="btn btn-default">2</button>
            <button type="button" class="btn btn-default">3</button>
        </div>
        <div class="btn-group" role="group" aria-label="...">
            <button type="button" class="btn btn-default">4</button>
            <button type="button" class="btn btn-default">5</button>
            <button type="button" class="btn btn-default">5</button>
        </div>
        <div class="btn-group" role="group" aria-label="...">
            <button type="button" class="btn btn-default">6</button>
            <button type="button" class="btn btn-default">7</button>
            <button type="button" class="btn btn-default">8</button>
        </div>
    </div>

    <!--文本框-->
    <div class="input-group" style="width: 300px">
        <span class="input-group-addon" id="basic-addon1" style="width: 100px">@ @ </span>
        <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
    </div>
    <div class="input-group" style="width: 300px">
        <span class="input-group-addon" id="basic-addon3" style="width: 100px">@</span>
        <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
    </div>

    <div class="input-group">
        <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
        <span class="input-group-addon" id="basic-addon2">@example.com</span>
    </div>


    <!--进度条-->
    <div class="progress">
        <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 40%;">
            40%
        </div>
    </div>

4.视口 ViewPort

什么是视口? 窗口

每个网页默认都会有一个视口,视口其实是一个虚拟的窗口 ,默认的尺寸是 980 像素;
为了兼容移动设备,一般让网页视口的宽度和设备的宽度的比例为 1:1 , 并且不允许用户缩放网页;

<!-- 
viewport: 视口
width=device-width : 视口的宽 等于 设备的宽
user-scalable : 不允许网页进行缩放
initial-scale :初始化缩放为1
maximum-scale=1.0 : 最大缩放为1
minimum-scale=1.0 : 最小缩放为1
-->
<meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

5.Bootstrap 常用的组件

1.面板

<div class="panel panel-danger">
        <div class="panel-heading">
            今天天气很好!
        </div>
        <div class="panel-body">
            风和日丽!
        </div>
        <div class="panel-footer">
            2019-10-21
        </div>
    </div>

2.徽章

<span class="badge" style="background-color: red">10</span>
 <div class="badge" style="background-color: red">20</div>
<button type="button" class="btn btn-danger">
    <span class="badge" style="background-color: red">30</span>
</button>
 <a href="">input
     <span class="badge" style="background-color: red">23</span>
     </a>

3.模态框

    <!--弹出模态框
    data-target="#myModel" 指定弹出的目标 (值是: 选择器)
    data-toggle="model"    以模态框的方式弹出
    data-dismiss="modal"   以模态框的方式消失
    -->
    <button class="btn btn-success" data-toggle="modal" data-target="#myModal">立即登录</button>
    <!--模态框-->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog">
        <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">欢迎登陆考试中心</h4>
                </div>
                <div class="modal-body">
                    <div>
                        用户名:<input type="text" placeholder="请输入用户名">
                    </div>
                    <div>
                        密&nbsp;&nbsp;&nbsp;码:<input type="password" placeholder="请输入密码">
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                    <button type="button" class="btn btn-primary">登录</button>
                </div>
            </div><
        </div>
    </div>

1.显示或者隐藏模态框方式一( 添加属性 ):

   //调出模态框:
   //data-target="#myModal"   指定弹出的目标(值是:选择器)
   //data-toggle="modal"      指定以模态框的方式弹出
   //data-dismiss="modal"     指定以模态框的方式消失
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

2.显示或者隐藏模态框方式二 ( 调用 js 代码 ):

$('#myModal').modal('show'); // 通过js代码显示模态框

3.监听模态框的显示和隐藏

$('#myModal').on('show.bs.modal', function (e) {
  console.log('模态框显示时回调');
})

$('#myModal').on('hidden.bs.modal', function (e) {
   console.log('模态框隐藏时回调');
})

2.Bootstrap 小案例

1 新建项目

使用 bootstrap 与 Jquery 框架技术 ;

其中 boostrap 依赖 Jquery

07.png

2 BootStrap 页面的简单配置

1.配置 : 网页的宽等于设备的宽

2.初始化网页的缩放比例为 1

3 实现导航条组件

注意: 导航条 组件的 nav 默认的高度是 50px 并且 margin-bottom:20px

<!--导航条-->
<!--
    data-toggle="collapse" 指定以折叠的方式切换目标
    data-target="#nav_content"  指定要折叠的目标
    
    data-toggle="modal"    指定以模态框的方式打开目标
    data-toggle="dropdown"  指定以下拉的方式打开目标
    
    role: 是用来增强语义性,没有什么其它功能,可以删除。
    sr-only 和 aria-xx : 是屏幕阅读辅助,兼容残障人使用的设备-->
<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="#nav_content" 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="#">
                <img src="./img/header_logo.png" alt="" style="width: 100px">
            </a>
        </div>
        <!--导航条的内容-->
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="nav_content">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">首页 <span class="sr-only">(current)</span></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>
                <li><a href="#">会员中心</a></li>

            </ul>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#">登录</a></li>
                <li><a href="">注册</a></li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

4 设计导航条样式

  • 添加 .navbar-fixed-top 类可以让导航条固定在浏览器的顶部

    注意:固定的导航条会遮住页面上的其他的内容,可给 <body> 设计 padding

  • 导航条包含一个 .container 或者 .container-fluid 容器,从而让导航条居中显示或者自适应显示

  • 添加 .navbar-inverse 可以改变导航栏显示的背景颜色

5 实现 轮播图 (js 插件)和 样式

06.png

<!--
  以下容器就是整个轮播图组件的整体,
  注意该盒子必须加上 class="carousel slide" data-ride="carousel" 表示当前是一个轮播图
  bootstrap.js会自动为当前元素添加图片轮播的特效
-->
<!--广告轮播图-->
<div id="sz-banner" class="carousel slide" data-ride="carousel">
    <!-- 点 -->
    <!-- ol标签是图片轮播的控制点 -->
    <ol class="carousel-indicators">
        <!--
         每一个li就是一个单独的控制点
           data-target属性就是指定当前控制点控制的是哪一个轮播图,其目的是如果界面上有多个轮播图,便于区分到底控制哪一个
           data-slide-to属性是指当前的li元素绑定的是第几个轮播项
         注意,默认必须给其中某个li加上active,展示的时候就是焦点项目
        -->
        <li data-target="#sz-banner" data-slide-to="0" class="active"></li>
        <li data-target="#sz-banner" data-slide-to="1"></li>
        <li data-target="#sz-banner" data-slide-to="2"></li>
        <li data-target="#sz-banner" data-slide-to="3"></li>
    </ol>

    <!-- 内容 -->
    <!--
    .carousel-inner是所有轮播项的容器盒子,
    注意role="listbox"代表当前div是一个列表盒子,作用就是给当前div添加一个语义
  -->
    <div class="carousel-inner" role="listbox">
        <!-- 每一个.item就是单个轮播项目,注意默认要给第一个轮播项目加上active,表示为焦点 -->
        <div class="item active">
            <!-- 轮播项目中展示的图片 -->
            <img src="./img/banner1.jpg" alt="...">
            <!-- 标题或说明性文字,如果不需要,直接删除当前div.carousel-caption -->
            <div class="carousel-caption">
            </div>
        </div>
        <div class="item">
            <img src="./img/banner2.jpg" alt="...">
            <div class="carousel-caption">
            </div>
        </div>
        <div class="item">
            <img src="./img/banner3.jpg" alt="...">
            <div class="carousel-caption">
            </div>
        </div>
        <div class="item">
            <img src="./img/banner4.jpg" alt="...">
            <div class="carousel-caption">
            </div>
        </div>
    </div>

    <!-- 控制器 上一张 -->
    <!-- 图片轮播上左右两个控制按钮,分别点击可以滚动到上一张和下一张 -->
    <!-- 此处需要注意的是 该a链接的href属性必须指向需要控制的轮播图ID -->
    <!-- 另外a链接中的data-slide="prev"代表点击该链接会滚到上一张,如果设置为next的话则相反 -->
    <a class="left carousel-control" href="#sz-banner" 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="#sz-banner" 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.*container 响应式容器类
  • 定义一个固定宽度且有居中的版心

  • container 是具备响应式的能力

  • 宽度有四个档位 1170 970 750 100%

主要作用

  1. 在随时可能的宽度变化(响应式)中提供宽度限制。当页面宽度变化,container 的宽度也随之变化。并且其中的 column 的宽度是基于百分比,所以他们的值不需要变化。
  2. 提供一个水平方向的 padding,使其内部的内容不会接触到浏览器的边界,大小为 15px
1.原生 JS 实现 container 响应式布局原理-resize
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .container{
            height: 30px;
            background-color: red;
            margin:  0 auto;
        }
    </style>
</head>
<body>
    <div class="container">
    </div>
    <!--
        四个档位 1170 970 750 100%
    -->
<script>
  
    window.onload=function () {
        //1.拿到container标签
        var container = document.querySelector('.container');

        windowChange();

        //2.监听窗口发生改变...
        window.addEventListener('resize',windowChange)
        
        function windowChange() {
            //3.拿到口的宽度
            var windowWidth=window.innerWidth; //width + padding
            
            if(windowWidth>=1170){
                container.style.width=1170+'px';
            }else if(windowWidth>=970){
                container.style.width=970+'px';
            }else if(windowWidth>=750){
                container.style.width=750+'px';
            }else{
                //...
                container.style.width='100%';
            }
        }
    }
</script>
</body>
</html>
2.媒体查询实现 container 响应式布局原理
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }

        .container{
            height: 30px;
            background-color: red;
            margin:  0 auto;
        }

        /*... 750*/
        @media  (max-width: 750px){
            .container{
                width: 100%;
            }

        }

        @media  (min-width: 750px) and (max-width: 970px){
            .container{
                width: 750px;
            }
        }

        @media  (min-width: 970px) and (max-width: 1170px){
            .container{
                width: 970px;
            }
        }

        @media  (min-width: 1170px) {
            .container{
                width: 1170px;
            }
        }

    </style>
</head>
<body>

    <div class="container">

    </div>

    <!--
        四个档位 1170 970 750 100%
    -->
</body>
</html>

2.row 类

row 类代表一行,一般都是与 container 类一起结合使用。

并且在栅格系统中,所有“列(column)必须放在 ” .row 内;

总结:

container 左右 padding 15px ; row 左右 margin 左右-15px , 为什么要这么折腾呢?

1.row 中嵌套的是 column, column 左右 padding 15px ;

2.在进行多层嵌套时,column 可以充当 container 容器,省了一层嵌套。

附加注意 : column 除了左右有 padding 15px 默认还有一个相对定位。

3.栅 shan 格系统

所有“列(column)必须放在 ” .row 内; 并且 .row 一般放在 .container

Bootstrap中的栅格系统就是将一行划分为12列
我们通过col-*-*的类名控制某个元素在某种屏幕的情况下展示几列
col-md-6 在中等屏幕下 占1/2
col-xs-12 在超小屏幕下 占全部
4.col-**-**类

在某种屏幕尺寸下控制列的占比

col-xs-[列数]:在超小屏幕下展示几份
col-sm-[列数]:在小屏幕下展示几份
col-md-[列数]:在中等屏幕下展示几份
col-lg-[列数]:在大屏幕下展示几份
__xs__ : 超小屏幕 手机 (<768px)  
__sm__ : 小屏幕 平板 (≥768px) 
__md__ : 中等屏幕 桌面显示器 (≥992px) 
__lg__ : 大屏幕 大桌面显示器 (≥1200px)

05.png

该布局代码:

<!--中间的栅栏布局-->
<div id="main">
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-4">.col-md-4</div>
            <div class="col-md-4">.col-md-4</div>
            <div class="col-md-4">.col-md-4</div>
        </div>
    </div>
</div>

7 栅格布局(二)

1.每一个 item 布局的代码:

<!--栅格布局-->
<div id="main">
  <div class="container-fluid">
    <div class="row">
      <div class="col-md-4 col-sm-6">
        <img src="./img/cake1.jpg" alt="">
        <h3>90蛋糕</h3>
        <button class="btn btn-success">立即购买</button>
      </div>
      <div class="col-md-4 col-sm-6">
        <img src="./img/cake2.jpg" alt="">
        <h3>樱桃芝士蛋糕</h3>
        <button class="btn btn-success">立即购买</button>
      </div>
      <div class="col-md-4 col-sm-6">
        <img src="./img/cake3.jpg" alt="">
        <h3>牛油果低脂蛋糕</h3>
        <button class="btn btn-success">立即购买</button>
      </div>
    </div>
  </div>
</div>

8 栅格布局样式

body {
    padding-top: 50px;    
}

#main {
	padding: 20px;
}

/*水平居中*/
#main .container-fluid .row .col-md-4 {
	text-align: center;
}

/*图片大小*/
#main .container-fluid .row .col-md-4 img {
	width: 180px;
}

#main .container-fluid .row .col-md-4 h3 {
    font-size: 15px;
    font-weight: bolder;
}

9 标签添栅格布局

03.png

该布局的代码:

<!--底部的tabBar-->
    <div id="tabBar">
        <!-- Nav tabs -->
        <!-- Tab panes -->
        <div class="tab-content">
            <div role="tabpanel" class="tab-pane active" id="nine">
                <div class="row">
                    <div class="col-md-8">.col-md-8</div>
                    <div class="col-md-4">.col-md-4</div>
                </div>
            </div>
            <div role="tabpanel" class="tab-pane" id="Cherry">
                <div class="row">
                    <div class="col-md-4">.col-md-4</div>
                    <div class="col-md-8">.col-md-8</div>
                </div>
            </div>
            <div role="tabpanel" class="tab-pane" id="Avocado">
                <div class="row">
                    <div class="col-md-8">.col-md-8</div>
                    <div class="col-md-4">.col-md-4</div>
                </div>
            </div>
        </div>
    </div>

10 标签栅格布局的完善

该布局对应的代码:

    <div id="tabBar">
    <!-- 标签选项卡 -->
    <!-- data-toggle="tab" : 面板切换的方式。 (modal , tab , dropdown ,collapse..)-->
    <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" class="active"><a href="#nine" aria-controls="home" role="tab" data-toggle="tab">70蛋糕</a></li>
        <li role="presentation"><a href="#Cherry" aria-controls="profile" role="tab" data-toggle="tab">樱桃芝士蛋糕</a></li>
        <li role="presentation"><a href="#Avocado" aria-controls="messages" role="tab" data-toggle="tab">牛油果低脂蛋糕</a></li>
    </ul>
    <!-- 标签面板 -->
    <div class="tab-content">
        <div role="tabpanel" class="tab-pane fade in active" id="nine">
            <div class="row">
                <div class="col-md-8">
                    <h2>回归|70蛋糕</h2>
                    <p class="lead" >收起散落在路上的珍贵点滴,每个年代都有属于自己的童年记忆,
                        70的淡定、80的率性、90的不羁??
                        思绪总是在不曾提起的故事里静静流淌,掠过往事,找寻简单的快乐。</p>
                </div>
                <div class="col-md-4">
                    <img class="img-responsive" src="./img/cake1.jpg" alt="">
                </div>
            </div>
        </div>
        <div role="tabpanel" class="tab-pane fade" id="Cherry">
            <div class="row">
                <div class="col-md-4">
                    <img class="img-responsive" src="./img/cake2.jpg" alt="">
                </div>
                <div class="col-md-8">
                    <h2>桃芝|樱桃芝士蛋糕</h2>
                    <p class="lead">有种美好本在人生际遇之处,
                        那些初次的余香,俨如口中混合着的丝缕酸甜,
                        就像樱桃和百利甜一样,成了没人遗忘的天生一对。</p>
                </div>

            </div>
        </div>
        <div role="tabpanel" class="tab-pane fade" id="Avocado">
            <div class="row">
                <div class="col-md-8">
                    <h2>初心|牛油果低脂蛋糕</h2>
                    <p class="lead">牛油果的清香弥漫在口腔,和着乳清奶酪咀嚼,
                        仿佛热带的阳光,洒满心房,也惊叹牛油果的神奇,
                        包容所有的味道,升华所有的味觉,伟大的感动,总在不言中。</p>
                </div>
                <div class="col-md-4">
                    <img class="img-responsive" src="./img/cake3.jpg" alt="">
                </div>
            </div>
        </div>
    </div>
</div>

11 标签栅格布局的样式

1.设计字体样式

/*图片距离顶部*/
#tabBar .tab-content .tab-pane .row .col-md-4 {
	margin-top: 50px;
}

/*字体距离顶部*/
#tabBar .tab-content .tab-pane .row .col-md-8 {
	margin-top: 100px;
}
/*h2 字体颜色*/
#tabBar .tab-content .tab-pane .row .col-md-8 h2{
	color:  red;
}

2.自适应布局

/*自适应布局--> 其中screen and 可以省略*/
@media screen and (max-width: 650px) {
    /**字体距离顶部*/
    #tabBar .tab-content .tab-pane .row .col-md-8 {
        margin-top: 40px;
    }
}

12 响应式小工具

<div class="topbar hidden-xs hidden-sm"></div>
//  或者
<div class="topbar visible-md visible-lg"></div>

hidden-xx : 在某种屏幕下隐藏( display : ‘none’ )

visible-xx-xxx : 在某种屏幕尺寸下显示

visible-md-xx:指的是中等屏幕可见,不是中等屏幕以上

visible-md-block visible-lg-block == hidden-sm hidden-xs

1. *探究-响应式工具 hidden

根据 hidden-xxx 的特点,我们可以通过媒体查询的方式探究探究:

<!--
.hidden-xs  < 768
.hidden-sm  [768, 992)
.hidden-md  [992, 1200)
.hidden-lg  >= 1200
-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container{
            width: 300px;
            height: 300px;
            background-color: red;
            margin: 20px auto;
        }
		//screen and 是可以省略的
        @media screen and (max-width: 768px){
            .hidden-xs{
                display: none;
            }
        }

        @media screen and (min-width: 768px) and (max-width: 992px){
            .hidden-sm{
                display: none;
            }
        }

        @media screen and (min-width: 992px) and (max-width: 1200px){
            .hidden-md{
                display: none;
            }
        }

        @media screen and (min-width: 1200px){
            .hidden-lg{
                display: none;
            }
        }
    </style>
</head>

<!--
.hidden-xs  < 768
.hidden-sm  [768, 992)
.hidden-md  [992, 1200)
.hidden-lg  >= 1200
-->

<body>
    <div class="container hidden-sm ">
    </div>
</body>
</html>
2 *探究-响应式工具 visible

2.根据 visible-xxx 的特点,我们可以通过媒体查询的方式探究探究:

<!--
    .visible-xs-block
    .visible-xs-inline
    .visible-xs-inline-block
-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container{
            width: 300px;
            height: 300px;
            background-color: red;
            margin: 20px auto;
            display: none;
        }

        @media screen and (max-width: 768px){
            .visible-xs-block{
                display: block;
            }
            .visible-xs-inline{
                display: inline;
            }
            .visible-xs-inline-block{
                display: inline-block;
            }
        }

        @media screen and (min-width: 768px) and (max-width: 992px){
            .visible-sm-block{
                display: block;
            }
            .visible-sm-inline{
                display: inline;
            }
            .visible-sm-inline-block{
                display: inline-block;
            }
        }

        @media screen and (min-width: 992px) and (max-width: 1200px){
            .visible-md-block{
                display: block;
            }
            .visible-md-inline{
                display: inline;
            }
            .visible-md-inline-block{
                display: inline-block;
            }
        }

        @media screen and (min-width: 1200px){
            .visible-lg-block{
                display: block;
            }
            .visible-lg-inline{
                display: inline;
            }
            .visible-lg-inline-block{
                display: inline-block;
            }
        }
    </style>
</head>
<!--
    .visible-xs-block
    .visible-xs-inline
    .visible-xs-inline-block
-->

<body>
    <div class="container visible-xs-block">

    </div>
    <p>我是p</p>
</body>
</html>
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 660 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1348 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...