03-bootstrap-响应式布局-栅格系统

news2024/10/7 20:28:50

一、概述

1、栅格系统是 Bootstrap 中响应式布局的重要组成部分,旨在实现页面元素的自适应排版。Bootstrap 栅格系统将屏幕宽度分为 12 列,通过在 HTML 元素上添加相应的类名,可以让元素占据指定数量的列数,从而实现灵活的布局效果。

下面介绍一下 Bootstrap 栅格系统的工作原理:

  • “行(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-* 不存在, 也影响大屏幕设备。

下面是 Bootstrap 栅格系统中常用的类名:

  • .col-*:在所有设备上都占用一整行(12 列)的空间。
  • .col-sm-*:在小屏幕设备(大于等于 576px)上占用指定数量的列数。
  • .col-md-*:在中等屏幕设备(大于等于 768px)上占用指定数量的列数。
  • .col-lg-*:在大屏幕设备(大于等于 992px)上占用指定数量的列数。
  • .col-xl-*:在超大屏幕设备(大于等于 1200px)上占用指定数量的列数。

其中,星号代表元素所占据的列数,取值从 1 到 12。

<div class="container">
  <div class="row">
    <div class="col-md-6 col-lg-4">元素 A</div>
    <div class="col-md-6 col-lg-8">元素 B</div>
  </div>
</div>

上述代码中,.container 类用于创建一个居中的、固定宽度的容器,在该容器内部创建一行(.row),其中第一个元素(.col-md-6 .col-lg-4)在中等屏幕设备上占用 6 列,在大屏幕设备上占用 4 列;第二个元素(.col-md-6 .col-lg-8)在中等屏幕设备上占用 6 列,在大屏幕设备上占用 8 列。

二、媒体查询

在栅格系统中,我们在 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) { ... }

三、栅格参数

通过下表可以详细查看 Bootstrap 的栅格系统是如何在多种屏幕设备上工作的。

超小屏幕 手机 (<768px)小屏幕 平板 (≥768px)中等屏幕 桌面显示器 (≥992px)大屏幕 大桌面显示器 (≥1200px)
栅格系统行为总是水平排列开始是堆叠在一起的,当大于这些阈值时将变为水平排列C
.container 最大宽度None (自动)750px970px1170px
类前缀.col-xs-.col-sm-.col-md-.col-lg-
列(column)数12
最大列(column)宽自动~62px~81px~97px
槽(gutter)宽30px (每列左右均有 15px)
可嵌套
偏移(Offsets)
列排序

 四、实例:

1、从堆叠到水平排列

使用单一的一组 .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>

2、流式布局容器

将最外面的布局元素 .container 修改为 .container-fluid,就可以将固定宽度的栅格布局转换为 100% 宽度的布局。

<div class="container-fluid">
  <div class="row">
    ...
  </div>
</div>

3、移动设备和桌面屏幕

不希望在小屏幕设备上所有列都堆叠在一起,使用针对超小屏幕和中等屏幕设备所定义的类,即 .col-xs-* 和 .col-md-*。

<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
  <div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div>
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>

<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>

<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
  <div class="col-xs-6">.col-xs-6</div>
  <div class="col-xs-6">.col-xs-6</div>
</div>

4、手机、平板、桌面

在上面案例的基础上,通过使用针对平板设备的 .col-sm-* 类,创建更加动态和强大的布局。 

<div class="row">
  <div class="col-xs-12 col-sm-6 col-md-8">.col-xs-12 .col-sm-6 .col-md-8</div>
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row">
  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
  <!-- Optional: clear the XS cols if their content doesn't match in height -->
  <div class="clearfix visible-xs-block"></div>
  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
</div>

 5、多余的列(column)将另起一行排列

如果在一个 .row 内包含的列(column)大于12个,包含多余列(column)的元素将作为一个整体单元被另起一行排列。

<div class="row">
  <div class="col-xs-9">.col-xs-9</div>
  <div class="col-xs-4">.col-xs-4<br>Since 9 + 4 = 13 &gt; 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.</div>
  <div class="col-xs-6">.col-xs-6<br>Subsequent columns continue along the new line.</div>
</div>

 五、响应式实现步骤

1、使用容器(<div class="container">)或流体容器(<div class="container-fluid">)包裹页面内容。容器会根据设备屏幕大小调整宽度和边距。

<div class="container"> 和 <div class="container-fluid"> 两者之间主要有如下区别:

  • 宽度: <div class="container"> 是一个固定宽度的容器,宽度取决于屏幕大小和设备尺寸,最大宽度为 1140px。而 <div class="container-fluid"> 是一个流体容器,它会自动填满父元素的宽度,不会设定任何固定的宽度。
  • 边距: <div class="container"> 会在左右两侧留下一定的空白边距,使页面内容居中显示,而 <div class="container-fluid"> 则没有固定的边距,需要开发者自行设置。
<div class="container">
  <!-- 页面内容 -->
</div>

2、使用栅格系统(Grid System)实现灵活的布局效果。在 HTML 元素上添加 .col-*-* 类来定义元素所占据的列数,其中第一个星号代表设备尺寸,第二个星号代表列数。常用的设备尺寸包括 sm(小型设备)、md(中型设备)、lg(大型设备)和 xl(超大型设备),列数的取值为 1 到 12。使用多个 .col-*-* 类可以实现复杂的布局效果。

<div class="container">
  <div class="row">
    <div class="col-sm-12 col-md-6 col-lg-4">左侧栏</div>
    <div class="col-sm-12 col-md-6 col-lg-8">主内容区</div>
  </div>
</div>

3、使用响应式断点(Breakpoint)来控制页面元素在不同设备尺寸下的可见性。可以使用 .d-none、.d-*-block、.d-*-inline 等类名来实现元素的隐藏和显示。

<div class="container">
  <div class="row">
    <div class="col-sm-12 col-md-6 col-lg-4">左侧栏</div>
    <div class="d-none d-lg-block col-lg-8">右侧广告栏</div>
    <div class="col-sm-12 col-md-6 col-lg-8">主内容区</div>
  </div>
</div>

上述代码中,.d-none .d-lg-block 类用于在大屏幕设备上显示右侧广告栏,而在其他设备上隐藏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5种易实现的Linux和 Windows VPS速度提升方法

​  无论是Linux VPS还是Windows VPS&#xff0c;网站速度的提高都是非常重要的。它们在提高网站速度方面都有很多的优化方法。下面我们将介绍 5 种提高网站速度的方法。 1.通过缓存加速 缓存通常是用来加快商业网站加载时间的技术&#xff0c;因此它也可以用在 VPS 上。没有…

车架号查车辆信息-vin查车辆信息api接口

接口地址&#xff1a; https://登录后显示/pyi/88/264(支持:http/https)) 在线查询&#xff1a;https://www.wapi.cn/car_vin.html 网站地址&#xff1a;https://www.wapi.cn 返回格式&#xff1a;json,xml 请求方式&#xff1a;GET,POST 请求说明&#xff1a; Md5验证方式-…

字符串、字符串列表,倒序生成字典。

带数字的字符串以数字为key倒序生成字典&#xff0c;字符串列表按其元素索引为key倒序生成字典。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简…

【MySQL】-- 表的操作

目录 表的操作 创建表 创建表案例 查看表结构 查看表结构案例 查看历史上表的创建语句 修改表 修改表实例 新增列属性 修改列属性 删除列属性 修改列名 修改表名 删除表 表的操作 创建表 语法&#xff1a; CREATE TABLE (if not exists) table_name (fie…

【MyBatisPlus框架】

文章目录 MyBatisPlus1.概述1.1 简介1.2特性1.3支持数据库1.4框架结构 2.入门案例2.1 创建数据库以及表2.2 创建工程2.2.1引入依赖 2.3编写代码 3.基本CRUD3.1BaseMapper3.2插入3.3删除3.4修改3.5查询3.6通用Service 4.常用注解4.1TableName4.1.1问题4.1.2通过TableName解决上述…

简述springmvc的流程

4、SpringMVC的执行流程 用户向服务器发送请求&#xff0c;请求被SpringMVC 前端控制器 DispatcherServlet捕获。 DispatcherServlet对请求URL进行解析&#xff0c;得到请求资源标识符&#xff08;URI&#xff09;&#xff0c;判断请求URI对应的映射&#xff1a; a) 不存在 …

day05 java_Spring IoC 和 DI

为什么使用spring框架 1.解耦代码(每次使用都要new一个对象) 2.解决事务繁琐问题(创建对象----初始化----调用方法销毁对象) 3.使用第三方框架麻烦的问题 总结:spring是一个轻量级的Ioc,Di和AOP容器 轻量级:简洁,高效,低依赖 **容器:**创建对象并将对象存储对象,同时管理…

高矿化度矿井水深度除氟装置CH-87技术解析

高矿化度矿井水是指含有高浓度溶解性矿物质的废水&#xff0c;通常指的是含有高浓度钠、钙、镁、铁、铝、钾等离子的废水。这些离子通常来自于废水所处的环境、工业或生产过程中使用的原材料和化学品。高矿化度的废水通常具有高盐度、高电导率、高硬度等特征&#xff0c;对环境…

性能测试计划不会写?我告诉你有模板你看不看

目录 1 简介 2 测试进入条件 3 测试退出条件 4 性能测试需求 5 测试风险 6 测试时机 7 测试策略 8 测试资源 9 测试进度 10 交付物 1 简介 1.1 目的 【描述性能测试计划的目的。】 1.2 背景 【描述项目或产品的背景。】 1.3范围 【描述性能测试的整体范围。】 2 测试进入条件 【…

Java如何配置环境变量

Java如何配置环境变量 0. 前言1. 下载Java2. 配置环境变量2.1新建 Java_Home2.2 编辑Path情况1情况2 3. 验证安装 0. 前言 本节记录如何配置Java环境变量&#xff0c;用自己重装过的系统实操 操作系统&#xff1a;Windows10 专业版 Java版本&#xff1a;jdk1.7.0_07 1. 下载…

全网最详细,Selenium自动化测试问题总结+解决,跟着大佬上高速...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Selenium4自动化测…

性能测试工程师必看——性能测试报告模板

目录 1. 测试概述 1.1 测试目标 1.2 指标和术语 2. 环境、工具 2.1 测试环境 2.2 测试工具 3. 测试方案 3.1 测试类型 3.2 业务模型 3.3 加密验签处理 3.4 压力梯度 4. 测试结果 4.1 聚合报告 4.2 系统吞吐量 4.3 资源占用率 5. 分析和建议 5.1 测试结论分析 …

Sqoop伪分布式配置

目录 一、Sqoop下载 二、解压 三、添加环境变量 四、复制sqoop-env-template.sh文件 五、编辑组件路径 六、拷贝Mysql与Hive驱动文件 七、验证 一、Sqoop下载 安装包下载地址&#xff1a;Sqoop 官网 二、解压 解压和重命名文件 tar -zxvf sqoop-1.4.7.bin__hadoop-2.…

006 - STM32学习笔记 - RCC时钟树

006 - STM32学习笔记 - RCC时钟树 本节内容一定要结合RCC时钟树和官方手册学习&#xff0c;如果看不明白的话&#xff0c;建议看一下野火官方的教程&#xff0c;火哥讲这节讲的很详细&#xff0c;看一遍基本就能理解了。 上节内容中分析了启动代码&#xff0c;在启动代码中看…

Redis - Redis16个常见使用场景

1、缓存 String类型 例如&#xff1a;热点数据缓存&#xff08;例如报表、明星出轨&#xff09;&#xff0c;对象缓存、全页缓存、可以提升热点数据的访问数据 作为Key-Value形态的内存数据库&#xff0c;Redis 最先会被想到的应用场景便是作为数据缓存。而使用 Redis 缓存数…

【面试题】操作系统面试实战

version&#xff1a;1.0 文章目录 操作系统进程管理&#x1f64e;‍♂️面试官&#xff1a;进程和线程的区别&#xff1f;&#x1f64e;‍♂️面试官&#xff1a;进程有哪几种状态?&#x1f64e;‍♂️面试官&#xff1a;进程间的通信方式&#xff1f;&#x1f64e;‍♂️面试…

体验使用 InsCode AI 创作助手 来帮我完成一篇博客

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 InsCode AI 创作助手 它来啦回答不满意可以要求重新生成在输入 prompt 时&#…

Selenium2023最全攻略(元素操作,浏览器操作等)附完整代码!

一、元素操作方法 方法&#xff1a; 1、.send_keys() # 输入方法 2、.click() # 点击方法 3、.clear() # 清空方法 注意&#xff1a;在输入方法之前一定要清空操作!! # 导包 from time import sleep from selenium import webdriver # 实例化浏览器 driver webdriver.Chrome(…

XDP入门--之eBPF sample内核示例代码的编译

Linux内核代码提供了很多eBPF的示例代码(以linux6.1版本内核代码为例)&#xff0c;我们可以在/Linux/samples/bpf目录下找到示例代码。 1、查看Linux内核版本 本文不讨论交叉编译的情况&#xff0c;因为eBPF还在快速发展中&#xff0c;不同版本的Linux内核的支持情况不太一至…

网络安全就业有什么要求?一般人还真不行

前言 网络安全工程师又叫信息安全工程师。随着互联网发展和 IT 技术的普及&#xff0c;网络和 IT 已经日渐深入到日常生活和工作当中&#xff0c;社会信息化和信息网络化&#xff0c;突破了应用信息在时间和空间上的障碍&#xff0c;使信息的价值不断提高。但是与此同时&#…