Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。
Bootstrap 是由 Twitter 的 Mark Otto 和 Jacob Thornton 开发的。Bootstrap 是 2011 年八月在 GitHub 上发布的开源产品。
Bootstrap是由HTML、CSS和JavaScript编写可复用代码的集合(包括全局样式、组件、插件等),它是一个前端框架,使用该框 架能够快速开发出响应的网站(即适配PC、平板和移动端的网站)。
Bootstrap可以让我们免去编写大量的 CSS 代码(Write less),让我们更专注于网站业务逻辑的开发。
Bootstrap是开源免费的,可以从GitHub直接拿到源码
BootStrap的优点
Bootstrap的缺点
通过CDN引入:
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD"
crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-/mhDoLbDldZc3qpsJHpLogda//BVZbgYuw6kof4u2FrCedxOtgRZDTHgHUhOCVim"
crossorigin="anonymous">
script>
使用原生CSS搭建两个按钮:
.btn {
width: 80px;
height: 50px;
line-height: 50px;
text-align: center;
color: white;
border-radius: 10px;
}
.btn1 {
background-color: black;
}
.btn2 {
background-color:blue;
}
使用Bootstrap开发:
<div class="btn btn-primary">按钮1div>
<div class="btn btn-success">按钮2div>
Bootstrap的一大核心就是响应式,即开发一套系统便可以适配不同尺寸的屏幕。
它底层原理是使用媒体查询来为我们的布局和页面创建合理的断点(Breakpoints),然后根据这些合理的断点来给不同尺寸屏幕应用不同的CSS样式。
Bootstrap 5设了6个断点来构建响应式系统,5个断点分别为 Extra-Small、Small、Medium、Large、Extra large 、Extra extra large
媒体查询是CSS的一项功能,它允许你根据浏览器的分辨率来应用不同的CSS样式,如 @media (min-width: 576px){}
Containers容器是 Bootstrap中最基本的布局元素,并且该布局支持响应式。在使用默认网格系统时是必需的。
Containers容器用于包含、填充,有时也会作为内容居中使用。容器也是可以嵌套,但大多数布局不需要嵌套容器。
Bootstrap 带有三个不同的Containers容器:
.container
: 它在每个断点处会设置不同的max-width。
.container-fluid
:在所有断点处都是 width: 100%。
.container-{breakpoint}
, 默认是width: 100%,直到指定断点才会修改为响应的值。在我们在开发一个页面时,经常会遇到一些列表(例如,商品列表),这些列表通常都是通过行和列来排版。
那什么是网格系统?
应该如何使用网格系统?
举个栗子:使用Boostrap来实现一行3列的布局
方式一:
<div class="container">
<div class="row">
<div class="col item">1div>
<div class="col item">2div>
<div class="col item">3div>
div>
div>
方式二:
<div class="container">
<div class="row">
<div class="col-4 item">1div>
<div class="col-4 item">2div>
<div class="col-4 item">3div>
div>
div>
从Bootstrap2开始,网格系统从16 列转向12列网格,原因之一是12列比以前的16列系统更灵活。
将一个容器(row)被划分为12列网格,具有更广泛的应用,因为 12 可以被 12、6、4、3、2 、1整除,而 16列网格只能被 16、8、 4 、2、1 整除,所以12列网格能够在一行中表示更多种列数组合情况。
网格系统是有container、row、col三部分组成,底层使用flexbox来布局,并且支持12列网格布局。
width: 100%
:某个断点的宽,- 布局的宽padding-right: 15px
:让包含的内容不会靠在布局右边缘padding-left: 15px
: 让包含的内容不会靠在布局左边缘margin-right: auto
: 布局居中margin-left: auto
: 布局居中display: flex
: 指定row为弹性布局(并支持12列网格布局)flex-wrap: wrap
:支持多行展示flex item。margin-right: -15px
:抵消container右边15px的padding。margin-left: -15px
:抵消container左边15px的padding。position: relative
: 相对定位布局flex-grow: 1
/ flex:0 0 x%
: 自动拉伸布局或占百分比max-width: 100%
/ max-width: x%
: 最大的宽padding-right: 15px
: 让包含内容不会靠右边缘padding-left: 15px
: 让包含内容不会靠左边缘。row的负外边距
Bootstrap的网格系统是可以支持嵌套的,例如:
举个栗子:用指定列宽( 语法:col-{number} ) 的方式来实现一行8列的布局。
<div class="container">
<div class="row">
<div class="col-6 item">
<div class="row">
<div class="col-3 item">1div>
<div class="col-3 item">2div>
<div class="col-3 item">3div>
<div class="col-3 item">4div>
div>
div>
<div class="col-6 item">
<div class="row">
<div class="col-3 item">5div>
<div class="col-3 item">6div>
<div class="col-3 item">7div>
<div class="col-3 item">8div>
div>
div>
div>
div>
自动布局列col(auto layout)
flex-grow: 1, max-width: 100%
。该类网格系统仅用flexbox布局。flex: 0 0 auto; width: auto
flex: 0 0 x%,max-width: x%
举个栗子:开发响应式列表
- 在xl屏幕显示6列,在lg屏幕显示4列,在md屏幕显示3列,在sm屏幕显示2列,特小屏(none)显示1列。
<div class="container">
<div class="row">
<div class="col-12 col-sm-6 col-md-4 col-lg-3 col-xl-2 item">1div>
<div class="col-12 col-sm-6 col-md-4 col-lg-3 col-xl-2 item">2div>
<div class="col-12 col-sm-6 col-md-4 col-lg-3 col-xl-2 item">3div>
<div class="col-12 col-sm-6 col-md-4 col-lg-3 col-xl-2 item">4div>
<div class="col-12 col-sm-6 col-md-4 col-lg-3 col-xl-2 item">5div>
<div class="col-12 col-sm-6 col-md-4 col-lg-3 col-xl-2 item">6div>
div>
div>
✨ 创作不易,希望各位大佬支持一下