Bootstrap笔记及面试题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43645678/article/details/93380495

1. 认识 BootStrap

在这里插入图片描述

  • bootstrap 是当下非常经典且流行的前端框架(界面工具集);
  • bootstrap 的特点:灵活简洁,直接强悍的前端开发框架,让Web开发更迅速,简单。
  • GitHub: https://github.com/twbs/bootstrap
  • 官网:
    • http://www.bootcss.com/ (中文网)
    • https://getbootstrap.com/ (英文网)

2. 为什么要使用 BootStrap

  • BootStrap 提供了前后端(包括移动端)需要的界面工具集合,能够让开发者快速搭建出美观的,可适配的前端界面!
  • 生态圈火,不断的更新换代;并且基于 bootstrap 衍生出来了很多其他前端框架

注意:

使用 Bootstrap 并不代表不用写 CSS样式,JS代码,而是不用写所有通用的代码!

3. 开始使用 BootStrap

  • 下载安装 BootStrap
    • 方式一:npm install bootstrap --save
      (通过 npm 进行安装,适合工程化开发,比如集成到 react 或者 Node 项目中)
    • 方式二:gitHub 直接下载
      (适合起步,全面学习)
  • BootStrap 初始化模板
<!doctype html>
  <html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">

    <title>Hello, world!</title>
  </head>
  <body>
    <h1>Hello, world!</h1>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.slim.min.js" integrity="sha384KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdn.bootcss.com/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://cdn.bootcss.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  </body>
</html>

4. 基本组件

1. 按钮组件

使用下面列出的类可以快速创建一个带有预定义样式的按钮。

<button type="button" class="btn btn-default">(默认样式)Default</button>

<button type="button" class="btn btn-primary">(首选项)Primary</button>

<button type="button" class="btn btn-success">(成功)Success</button>

<button type="button" class="btn btn-info">(一般信息)Info</button>

<button type="button" class="btn btn-warning">(警告)Warning</button>

<button type="button" class="btn btn-danger">(危险)Danger</button>

<button type="button" class="btn btn-link">(链接)Link</button>

结果:
在这里插入图片描述
注意:

  • 虽然按钮类可以应用到 <a><button> 元素上,但是,导航和导航条组件只支持 <button> 元素。
  • 如果 <a> 元素被作为按钮使用 – 并用于当前页面触发某些功能 – 而不是用于链接其他页面或链接当前页面中的其他部分,那么,务必为其设置 role="button" 属性。
  • 强烈建议尽可能使用 元素来获得在各个浏览器上获得相匹配的绘制效果。

2. 进度条

通过这些简单、灵活的进度条,为当前工作流程或动作提供实时反馈。

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

结果:
在这里插入图片描述

3. 徽章

给链接、导航等元素嵌套 元素,可以很醒目的展示新的或未读的信息条目。

<ul class="nav nav-pills" role="tablist">
  <li role="presentation" class="active">
  	<a href="#">Home <span class="badge">42</span></a>
  </li>
  <li role="presentation">
  	<a href="#">Profile</a>
  </li>
  <li role="presentation">
  	<a href="#">Messages <span class="badge">3</span></a>
  </li>
</ul>

结果:
在这里插入图片描述

4. 面板

某些时候你可能需要将某些 DOM 内容放到一个盒子里。对于这种情况,可以试试面板组件。

<div class="panel panel-default panel-warning">
    <div class="panel-heading">面板的头部</div>
    <div class="panel-body">面板的内容</div>
    <div class="panel-footer">面板的尾部</div>
</div>

结果:
在这里插入图片描述

5. 字体图标

可以把它们应用到按钮、工具条中的按钮组、导航或输入框等地方。

<button type="button" class="btn btn-default" aria-label="Left Align">
  <span class="glyphicon glyphicon-align-left" aria-hidden="true"></span>
</button>

<button type="button" class="btn btn-default btn-lg">
  <span class="glyphicon glyphicon-star" aria-hidden="true"></span> Star
</button>

结果:
在这里插入图片描述

5. 图片

通过为图片添加 .img-responsive 类可以让图片支持响应式布局。其实质是为图片设置了 max-width: 100%;、 height: auto; 和 display: block; 属性,从而让图片在其父元素中更好的缩放。

如果需要让使用了 .img-responsive 类的图片水平居中,请使用 .center-block 类,不要用 .text-center

<img src="..." class="img-responsive" alt="Responsive image">

6. 表单

基本实例
单独的表单控件会被自动赋予一些全局样式。所有设置了 .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>

在这里插入图片描述

7. 栅格系统

Bootstrap 提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列。它包含了易于使用的预定义类,还有强大的mixin 用于生成更具语义的布局。

1. 简介

栅格系统用于通过一系列的行(row)与列(column)的组合来创建页面布局

  • “行(row)”必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding)。
  • 通过“行(row)”在水平方向创建一组“列(column)”。
  • 内容应当放置于“列(column)”内,并且,只有“列(column)”可以作为行(row)”的直接子元素。
  • 类似 .row.col-xs-4 这种预定义的类,可以用来快速创建栅格布局。Bootstrap 源码中定义的 mixin 也可以用来创建语义化的布局。
  • 通过为“列(column)”设置 padding 属性,从而创建列与列之间的间隔(gutter)。通过为 .row 元素设置负值 margin 从而抵消掉为 .container 元素设置的 padding,也就间接为“行(row)”所包含的“列(column)”抵消掉了padding
  • 负值的 margin就是下面的示例为什么是向外突出的原因。在栅格列中的内容排成一行。
  • 栅格系统中的列是通过指定1到12的值来表示其跨越的范围。例如,三个等宽的列可以使用三个 .col-xs-4 来创建。
  • 如果一“行(row)”中包含了的“列(column)”大于 12,多余的“列(column)”所在的元素将被作为一个整体另起一行排列。
  • 栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆盖栅格类。 因此,在元素上应用任何 .col-md-* 栅格类适用于与屏幕宽度大于或等于分界点大小的设备 , 并且针对小屏幕设备覆盖栅格类。 因此,在元素上应用任何 .col-lg-* 不存在, 也影响大屏幕设备。

2. 媒体查询

在栅格系统中,我们在 Less 文件中使用以下媒体查询(media query)来创建关键的分界点阈值。

/* 超小屏幕(手机,小于 768px) */
/* 没有任何媒体查询相关的代码,因为这在 Bootstrap 中是默认的(还记得 Bootstrap 是移动设备优先的吗?) */

/* 小屏幕(平板,大于等于 768px) */
@media (min-width: @screen-sm-min) { ... }

/* 中等屏幕(桌面显示器,大于等于 992px) */
@media (min-width: @screen-md-min) { ... }

/* 大屏幕(大桌面显示器,大于等于 1200px) */
@media (min-width: @screen-lg-min) { ... }

在媒体查询代码中包含 max-width 从而将 CSS 的影响限制在更小范围的屏幕大小之内。

@media (max-width: @screen-xs-max) { ... }
@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }
@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }
@media (min-width: @screen-lg-min) { ... }

3. 栅格参数

通过下表可以详细查看 Bootstrap 的栅格系统是如何在多种屏幕设备上工作的。
在这里插入图片描述

4. 实例:从堆叠到水平排列

使用单一的一组 .col-md-* 栅格类,就可以创建一个基本的栅格系统,在手机和平板设备上一开始是堆叠在一起的(超小屏幕到小屏幕这一范围),在桌面(中等)屏幕设备上变为水平排列。所有“列(column)必须放在 ” .row 内。

<div class="row">
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
  <div class="col-md-1">.col-md-1</div>
</div>
<div class="row">
  <div class="col-md-8">.col-md-8</div>
  <div class="col-md-4">.col-md-4</div>
</div>
<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 class="row">
  <div class="col-md-6">.col-md-6</div>
  <div class="col-md-6">.col-md-6</div>
</div>

在这里插入图片描述

5. 列偏移

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

<div class="row">
  <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 class="row">
  <div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
  <div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
</div>
<div class="row">
  <div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
</div>

在这里插入图片描述

Bootstrap 面试题

1. 对于各类尺寸的设备,Bootstrap设置的class前缀分别是什么?

答:

  1. 超小设备手机(<768px):.col-xs-
  2. 小型设备平板电脑(>=768px):.col-sm-
  3. 中型设备台式电脑(>=992px):.col-md-
  4. 大型设备台式电脑(>=1200px):.col-lg-

2. 使用Bootstrap时,要声明的文档类型是什么?以及为什么要这样声明?

答:
使用Bootstrap时,需要使用 HTML5 文档类型(Doctype)。
因为Bootstrap 使用了一些 HTML5 元素和 CSS 属性,如果在 Bootstrap 创建的网页开头不使用 HTML5 的文档类型(Doctype),可能会面临一些浏览器显示不一致的问题,甚至可能面临一些特定情境下的不一致,以致于代码不能通过 W3C 标准的验证。

3. Bootstrap有哪些关于 img 的class?

答:

  1. .img-rounded 为图片添加圆角
  2. .img-circle 将图片变为圆形
  3. .img-thumbnail 缩略图功能
  4. .img-responsive 图片响应式 (将很好地扩展到父元素)

4. Bootstrap中有关元素浮动及清除浮动的class?

答:

  1. class=“pull-left” 元素浮动到左边
  2. class=“pull-right” 元素浮动到右边
  3. class=“clearfix” 清除浮动

5. Bootstrap如何制作下拉菜单?

答:

  1. 将下拉菜单包裹在class="dropdown"的<div>中;
  2. 在触发下拉菜单的按钮中添加:class=“btn dropdown-toggle” id=“dropdownMenu1” data-toggle=“dropdown”
  3. 在包裹下拉菜单的ul中添加:class=“dropdown-menu” role=“menu” aria-labelledby=“dropdownMenu1”
  4. 在下拉菜单的列表项中添加:role=“presentation”。其中,下拉菜单的标题要添加class=“dropdown-header”,选项部分要添加tabindex="-1"。

6. 为什么bootstrap栅格系统是12列?

答:
因为12是1,2,3,4,6的最小公倍数,所以12列栅格系统相对较灵活,支持将一行分成1列,2列,3列,4列,6列。若是想要支持5列,那1,2,3,4,5的最小公倍数是60,而60这个数对于栅格系统来说显然太大了。18能均分4列不?24能做的12都能做,所以12是最好的选择。

猜你喜欢

转载自blog.csdn.net/qq_43645678/article/details/93380495
今日推荐