Bootstrap开发

1.响应式开发

1.1 响应式开发原理

使用媒体查询对不同宽度的设备进行对应布局和样式的设置,从而适配不同设备的目的。

设备划分(宽度)尺寸区间
超小屏幕(手机)<768px
小屏设备(平板)768~992px
中等屏幕(桌面显示器)992~1200px
宽屏设备(大桌面显示器)>1200px

1.2 响应式布局容器

需要一个父级作为布局容器,配合子级元素实现变化。

常见的响应式尺寸划分

设备划分常见尺寸设置
超小屏幕(手机)宽度100%
小屏设备(平板)宽度750px
中等屏幕(桌面显示器)宽度970px
宽屏设备(大桌面显示器)宽度1170px
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原理介绍</title>
    <style>
      .container{
        height: 100px;
        background: hotpink;
      }
      /*屏幕宽度 小于768px*/
      @media screen and (max-width: 767px){
        .container{
          width: 100%;
        }
      }
      /*如果同时满足,后面的样式会覆盖前面的样式*/
      /*屏幕宽度 768~992px*/
      @media screen and (min-width: 768px){
        .container{
          width: 750px;
        }
      }
      /*屏幕宽度 992~1200px*/
      @media screen and (min-width: 992px){
        .container{
          width: 970px;
        }
      }
      /*屏幕宽度 >1200px*/
      @media screen and (min-width: 1200px){
        .container{
          width: 1170px;
        }
      }
    </style>
</head>
<body>
  <div class="container"></div>
</body>
</html>

1.3 响应式案例:响应式导航栏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>响应式导航栏</title>
    <style>
      *{
        margin: 0;
        padding: 0;
      }
      .container{
        width: 750px;
        margin: 0 auto;
      }
      ul{
        list-style: none; 
      }
      .container ul li{
        float: left;
        width: 93.75px;
        height: 30px;
        background: hotpink;
        line-height: 30px;
        text-align: center;
      }
      @media screen and (max-width: 767px){
        .container{
          width: 100%;
        }
        .container ul li{
          width: 33.3%;
        }
      }
    </style>
</head>
<body>
  <div class="container">
    <ul>
      <li>导航栏</li>
      <li>导航栏</li>
      <li>导航栏</li>
      <li>导航栏</li>
      <li>导航栏</li>
      <li>导航栏</li>
      <li>导航栏</li>
      <li>导航栏</li>
    </ul>
  </div>
</body>
</html>

2.Bootstrap前端开发框架

2.1 Bootstrap简介

Bootstrap来自Twitter,是目前最受欢迎的前端框架,是基于HTML、CSS和JS的,简单灵活,是的Web开发更加快捷。

中文官网:Bootstrap中文网

官网:Bootstrap · The most popular HTML, CSS, and JS library in the world.

2.2 Bootstrap使用

按照框架规范使用,使用四步曲如下:

  1. 创建文件夹结构(ps:没写后缀标示文件夹)

    -bootstrap

        -css

        -fonts

        -js

    -css

    -img

    -index.html

  2. 创建html骨架机构

  3. 引入相关样式文件

  4. 书写内容

    <!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 rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
    ​
        <!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
        <!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
        <!--[if lt IE 9]>
          <script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
          <script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
        <![endif]-->
      </head>
      <body>
        <h1>你好,世界!</h1>
    ​
        <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
        <script src="https://cdn.jsdelivr.cn/npm/jquery@1.12.4/dist/jquery.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>
        <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
      </body>
    </html>

    2.3 布局容器

    Bootstrap为页面内容和栅格系统报过来一个.container容器,Bootstrap预先定义好了这个类,叫.container,它提供了两个作此用处的类

    1. container类

      响应式布局容器,宽度固定,如下:

      设备划分宽度设置
      超小屏(<768px)100%
      小屏(>=768px)750px
      中屏(>=992px)970px
      大屏(>=1200px)1170px
    2. container-fluid类

      • 流式布局容器 百分百宽度

      • 占据全部视口(viewport)的容器

      • 适合于单独做移动端开发

3.Bootstrap栅格系统

3.1 栅格系统简介

栅格系统(grid systems),是指将网页布局划分为等宽的列,然后通过列数的定义来模块化页面布局。

Bootstrap提供了一套响应式、移动设备优先的流式栅格系统,随着时评或视口尺寸的增加,系统会自动分为最多12列。

Bootstrap里面宽度是固定的,但是在不同屏幕下,container的宽度不同,再把container划分为12等份。

3.2 栅格系统参数

栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局,我们再将自己的内容放入已经创建好的布局中。

超小屏小屏中屏大屏
.container最大宽度自动(100%)750px970px1170px
类前缀.col-xs-.col-sm-.col-md-.col-lg-
列数12121212

值得注意的是,每一列都有一个15px的padding。

如果要覆盖原有类的样式,直接重新写样式再添加上去即可(直接覆盖)。

参考代码如下:

<!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">
    <title>Bootstrap Exercise</title>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <!--[if lt IE 9]>
    <script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
    <script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
    <![endif]-->
    <style>
        /*属性选择器 以col开头的类 */
        [class^="col"]{
            border: 1px solid hotpink;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <!-- col-lg-3 表示大屏下每个盒子占3份 col-md-4 表示中屏下每个盒子占4份-->
        <div class="col-lg-3 col-md-4">1</div>
        <div class="col-lg-3 col-md-4">2</div>
        <div class="col-lg-3 col-md-4">3</div>
        <div class="col-lg-3 col-md-4">4</div>
    </div>
<!--少于12列就空位-->
    <div class="row">
        <div class="col-lg-6">1</div>
        <div class="col-lg-2">2</div>
        <div class="col-lg-2">3</div>
        <div class="col-lg-1">4</div>
    </div>
<!--多于12份 多余的另起一行显示-->
    <div class="row">
        <div class="col-lg-6">1</div>
        <div class="col-lg-2">2</div>
        <div class="col-lg-2">3</div>
        <div class="col-lg-3">4</div>
    </div>
</div>
​
​
</body>
</html>

3.3 列嵌套

栅格系统内置的栅格系统将内容再次嵌套,简单来讲就是将一个列再分成若干份小列。我们可以通过添加一个新的.row元素和一系列.col-sm-元素到已经存在的.col-sm-元素内。

例如,将大屏下col-lg-2再划分12份。

注意,12份与份之间不能有margin,否则会被挤到下一行。

如果想实现元素之间有空白,则可以让大盒子划分12份,大盒子设置空白padding,里面小盒子放内容。

参考代码如下:

<!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">
    <title>Bootstrap Exercise</title>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <!--[if lt IE 9]>
    <script src="https://cdn.jsdelivr.cn/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
    <script src="https://cdn.jsdelivr.cn/npm/respond.js@1.4.2/dest/respond.min.js"></script>
    <![endif]-->
    <style>
        /*属性选择器 以col开头的类 */
        [class^="col"]{
            border: 1px solid hotpink;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <!-- col-lg-3 表示大屏下每个盒子占3份 col-md-4 表示中屏下每个盒子占4份-->
        <div class="col-lg-3">
            <!-- 列嵌套最好添加一个行row,这样可以取消父元素的padding值 而且高度自动和父级一样-->
            <div class="row">
                <div class="col-lg-6">a</div>
                <div class="col-lg-6">b</div>
            </div>
        </div>
        <!--直接嵌套-->
        <div class="col-lg-3">
            <div class="col-lg-6">a</div>
            <div class="col-lg-6">b</div>
        </div>
        <div class="col-lg-3">3</div>
        <div class="col-lg-3">4</div>
    </div>
</div>
</body>
</html>

3.4 列偏移

使用.col-md-offset-*类可以将列向右侧偏移。这些类实际是通过使用*选择器为当前元素增加了左侧的边距margin。

使用场景:希望左右分布(或居中对齐),中间空着,比如左边四份,右边四份,中间四份空着,可以给右边四份加个右偏移。(也可以通过加空盒子实现)

参考代码如下:

<!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">
    <title>Bootstrap Exercise</title>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <style>
        /*属性选择器 以col开头的类 */
        [class^="col"]{
            border: 1px solid hotpink;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-lg-3">1</div>
        <div class="col-lg-3 col-lg-offset-6">2</div>
    </div>
</div>
</body>
</html>

3.5 列排序

通过使用.col-md-push-*(往右推)和.col-md-pull-*(往左拉)可以很容易的改变列(column)的顺序。(例如:A8 B4 -> B4 A8)

参考代码如下:

<!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">
    <title>Bootstrap Exercise</title>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <style>
        /*属性选择器 以col开头的类 */
        [class^="col"]{
            border: 1px solid hotpink;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-4 col-md-push-8">左侧</div>
        <div class="col-md-8 col-md-pull-4">右侧</div>
    </div>
</div>
</body>
</html>

3.6 响应式工具

为了加快对移动设备友好的页面开发工作,利用媒体查询功能时,并使用这些工具类可以方便的针对不同设备展示或隐藏页面内容。

使用场景举例:淘宝有四列内容,但第三列不重要,缩小之后直接隐藏第三列。

类名超小屏小屏中屏大屏
.hidden-xs隐藏可见可见可见
.hidden-sm可见隐藏可见可见
.hidden-md可见可见隐藏可见
.hidden-lg可见可见可见隐藏

代码示例如下:

<!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">
    <title>Bootstrap Exercise</title>
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <style>
        /*属性选择器 以col开头的类 */
        [class^="col"]{
            border: 1px solid hotpink;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-3">1<span class="visible-lg">我只在大屏中显示</span></div>
        <div class="col-md-3">2</div>
        <div class="col-md-3 hidden-sm">隐藏</div>
        <div class="col-md-3">4</div>
    </div>
</div>
</body>
</html>

附表:Bootstrap组件 https://v3.bootcss.com/componengts/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值