【Java 进阶篇】深入了解 Bootstrap 栅格系统

在网页开发中,创建响应式的布局是至关重要的,因为不同设备和屏幕尺寸需要不同的布局来呈现内容。Bootstrap 提供了一个强大的栅格系统,使开发者能够轻松创建适应不同屏幕的网页布局。本文将深入介绍 Bootstrap 栅格系统,面向初学者,帮助您充分了解如何使用它来构建响应式网页。
什么是 Bootstrap 栅格系统?
Bootstrap 栅格系统是一种基于12列网格的布局系统。这意味着您可以将页面划分为12个等宽的列,然后将内容放入这些列中。通过在不同的屏幕宽度上定义不同的列宽,您可以轻松创建响应式布局,以适应不同设备的屏幕大小,例如桌面、平板和手机。
栅格系统的核心思想是将页面划分为行(row)和列(col)。每行可以包含一个或多个列,列的宽度总和不能超过12列。这使得网页布局变得非常灵活,同时确保内容在各种屏幕上以一致的方式呈现。
Bootstrap 栅格系统的基本结构
为了更好地理解 Bootstrap 栅格系统,让我们来看一个基本的示例。
<div class="container"><div class="row"><div class="col-sm-4"><!-- 内容1 --></div><div class="col-sm-4"><!-- 内容2 --></div><div class="col-sm-4"><!-- 内容3 --></div></div>
</div>
上述代码中,我们有一个容器(container)包含一个行(row),而行中包含了三列(col-sm-4)。现在,让我们逐步分解这个示例的关键部分:
-
container:容器是 Bootstrap 栅格系统的最外层包裹元素。它用于包含行(row)和列(col)以及其他内容。容器的作用是确保内容在不同屏幕尺寸上居中对齐,并提供一些内边距,以便内容不会触及屏幕的边缘。 -
row:行是一组列的容器。每行(row)在页面上都是水平排列的,可以包含一个或多个列(col)。行的主要作用是创建列的组合,使它们在同一水平线上对齐。 -
col-sm-4:列是页面的主要构建块,用于包含实际的内容。在这个示例中,我们使用了三个列,每个列占据了4个网格列的宽度,总和为12列。这是一种常见的布局,因为它适用于桌面屏幕,每个列都具有相同的宽度。col-sm-4中的 “sm” 表示响应式断点,即在小屏幕(如平板)上,每个列仍然占据4列。
响应式设计和断点
Bootstrap 栅格系统的一个强大之处在于它支持响应式设计,这意味着您可以根据屏幕宽度自动调整布局。Bootstrap 使用断点(breakpoint)来定义不同屏幕尺寸上的列宽。
以下是 Bootstrap 的一些常见断点:
sm(小屏幕):用于平板和较小的桌面屏幕。md(中等屏幕):用于普通桌面屏幕。lg(大屏幕):用于大型桌面屏幕。xl(特大屏幕):用于非常大的屏幕。
通过在列的类名中添加适当的断点前缀,您可以指定在不同屏幕尺寸上列的宽度。例如,col-sm-4 表示在小屏幕上每个列占据4列,而 col-md-6 表示在中等屏幕上每个列占据6列。
让我们看一个使用不同断点的示例,以便更好地理解:
<div class="container"><div class="row"><div class="col-md-6 col-lg-4"><!-- 列1 --></div><div class="col-md-6 col-lg-4"><!-- 列2 --></div><div class="col-lg-4"><!-- 列3(仅在大屏幕上显示) --></div></div>
</div>
在这个示例中,我们有三列,每列都根据不同的断点设置了不同的宽度。前两列在中等屏幕上占据6列,在大屏幕上占据4列。最后一列只在大屏幕上显示,占据4列。
列偏移和偏移量
有时候,您可能希望在列之间创建一些空白,或将列向右移动。Bootstrap 提供了列偏移(offset)类,可以帮助您实现这些效果。
以下是一个示例,展示如何使用列偏移来在列之间创建空白:
<div class="container"><div class="row"><div class="col-md-4"><!-- 列1 --></div><div class="col-md-4"><!-- 列2 --></div><div class="col-md-4"><!-- 列3 --></div></div><div class="row"><div class="col-md-3"><!-- 列1 --></div><div class="col-md-3 offset-md-3"><!-- 列2(偏移3列宽度) --></div><div class="col-md-3"><!-- 列3 --></div></div>
</div>
在这个示例中,我们创建了两行,每行包含三列。在第二行的第二列上,我们使用了 offset-md-3 类来向右偏移3列的宽度,从而在列2和列3之间创建了空白。
列的排序
有时,您可能希望在不同屏幕尺寸上重新排列列的顺序。Bootstrap 允许您使用列排序(order)类来轻松实现这一点。
以下是一个示例,展示如何使用列排序类来更改列的显示顺序:
<div class="container"><div class="row"><div class="col-md-4 order-2"><!-- 列1(在大屏幕上显示在列2之后) --></div><div class="col-md-4 order-1"><!-- 列2(在大屏幕上显示在列1之前) --></div><div class="col-md-4"><!-- 列3 --></div></div>
</div>
在这个示例中,我们使用了 order-2 和 order-1 类来指定列1和列2在大屏幕上的显示顺序。列1会显示在列2之后,而列2会显示在列1之前,而列3则保持不变。
制作嵌套布局
Bootstrap 栅格系统也支持嵌套布局,这意味着您可以在列中创建更多的行和列,以构建更复杂的布局。这对于构建复杂的页面非常有用。
以下是一个示例,展示如何创建嵌套布局:
<div class="container"><div class="row"><div class="col-md-6"><!-- 列1 --></div><div class="col-md-6"><!-- 列2 --></div></div><div class="row"><div class="col-md-4"><!-- 列3 --></div><div class="col-md-4"><!-- 列4 --></div><div class="col-md-4"><!-- 列5 --></div></div>
</div>
在这个示例中,我们首先创建了一个包含两列的行,然后在第二行中创建了另一个包含三列的行。这种嵌套布局的方式可以帮助您更灵活地控制页面的结构。
自定义栅格系统
如果您希望创建自定义的栅格系统,而不仅仅使用Bootstrap的默认样式,您也可以使用Bootstrap的Sass版本或Less版本,以便更灵活地定义栅格系统的参数,例如列数、断点、列宽等。
以下是一个使用Sass版本的示例,展示如何自定义栅格系统的列数:
// 定义列数
$grid-columns: 16;// 定义列宽
$grid-gutter-width: 30px;
$grid-row-gutter-width: 15px;// 导入Bootstrap的Sass文件
@import "bootstrap/bootstrap";
在这个示例中,我们通过设置 $grid-columns 变量来定义列数,然后可以根据需要自定义其他参数。这样,您可以创建符合项目需求的自定义栅格系统。
结语
Bootstrap 栅格系统是网页开发的强大工具,使创建响应式布局变得容易。无论您是初学者还是有经验的开发者,掌握栅格系统是非常重要的,因为它是构建现代网页和Web应用程序的基础。希望本文能够帮助您更好地理解和使用Bootstrap的栅格系统,以创建出美观且响应式的网页布局。愿您在网页开发中取得成功!
| 作者信息 作者 : 繁依Fanyi CSDN: https://techfanyi.blog.csdn.net 掘金:https://juejin.cn/user/4154386571867191 |
相关文章:
【Java 进阶篇】深入了解 Bootstrap 栅格系统
在网页开发中,创建响应式的布局是至关重要的,因为不同设备和屏幕尺寸需要不同的布局来呈现内容。Bootstrap 提供了一个强大的栅格系统,使开发者能够轻松创建适应不同屏幕的网页布局。本文将深入介绍 Bootstrap 栅格系统,面向初学者…...
Gradle中的buildScript代码块
PS: 在build script中的task apply plugin: spring-boot 需要 classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE") apply plugin: com.moowork.gulp 需要classpath com.moowork.gradle:gradle-gulp-plugin:0.10 在编写Gradle脚本的时…...
Spring boot 集成 xxl-job
文章目录 xxl-job 简介引入xxl-job依赖配置xxl-job config添加properties文件配置BEAN模式(方法形式)步骤一:执行器项目中,开发Job方法:步骤二:调度中心,新建调度任务 xxl-job 简介 官网:https:…...
uni-app通过 vuedraggable 创建上下拖动排序组件
我们右键项目 选择 使用命令行窗口打开所在目录 然后 在终端中输入 npm install vuedraggable --save导入 vuedraggable 然后组件编写代码如下 <template><view class"container"><draggable v-model"list" :options"dragOptions&…...
Android高版本读取沙盒目录apk解析安装失败解决方案
bug场景: 应用内升级下载apk完成后安装,vivo(Android13)手机会报解析包错误,7.0及以上的手机是没问题的。开始以为是v1,v2签名问题导致的,但是我用浏览器下载下来的安装包是能够正确安装的。排除v1,v2签名的…...
ddns-go配合aliyun域名解析通过ipv6实现共享桌面
ddns-go配合aliyun域名解析通过ipv6实现共享桌面 前提: 必须拥有ipv6公网IP,测试IPv6 测试 (testipv6.cn) 如果是光猫拨号一点要选择ipv4和ipv6,同时要看光猫是否支持ipv6转发,如果不支持转发也不行,光猫不支持ipv6…...
C#WPF 应用Grid布局实现用户登录实例
本文介绍C#WPF Grid布局应用实例,通过用户登录实例演示掌握Grid布局用法。 目录 一、Grid面板介绍 二、用户登录实例 一、Grid面板介绍 网格面板是所有面板中最复杂但用途最广泛的面板。网格面板可用于设计复杂的用户界面,我们需要将多个元素以行和列的表格格式放置。 WP…...
RHEL 8.6 Kubespray 1.23.0 install kubernetes v1.27.5
文章目录 1. 预备条件2. download01 节点 安装 dockerdownload01 节点 介质下载下载 bastion01节点配置 yum 源bastion01 节点安装 docker5. 安装 docker insecure registrybastion01 部署 nginx 与 镜像入库13.1 配置 config.sh13.2 配置 setup-docker.sh13.3 配置 start-ngin…...
RGBD Salient Object Detection via Disentangled Cross-Modal Fusion
方法 HHA means “horizontal disparity, height above ground, and angle with gravity”.结构化上下文编码器{E R S _R^S RS,E D S _D^S DS},模态特定内容编码器{E R C _R^C RC,E D C _D^C DC} 体会 作者未提供代码...
VMware下linux中ping报错unknown host的解决办法
一、错误截图 二、解决办法 2.1 按照步骤查看本机虚拟IP 依次点击:【编辑】》【虚拟网络编辑器】,选中NET模式所属的行,就能看到子网地址。 比喻,我的子网地址是:192.168.18.0 那么,接下来要配置的linux…...
Macos数据库管理:Navicat Premium 中文
Navicat Premium提供了直观且易用的图形用户界面,使得操作更为便捷。Navicat Premium 中文支持多种数据库系统,如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等,可以让用户在同一平台上管理不同类型的数据库。Navicat Premium拥有强大的数据…...
数据结构 - 7(Map和Set 15000字详解)
一: 二叉搜索树 1.1 二叉搜索树的概念 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所…...
windows 11 安装PHP8.2
环境说明 windows:windows 11 x64apache: Apache/2.4.43php :php-8.2.11 一.php 1、PHP下载 PHP For Windows: Binaries and sources Releases 注意: 1.要下载Thread Safe,否则没有php8apache2_4.dll这个文件;如果使用Apache作为服务器…...
计算机网络学习笔记(三):数据链路层(待更新)
目录 3.1 基本概念 3.1.1 数据链路和帧 3.1.2 三个基本问题 3.2 类型1:使用点对点信道的数据链路层(路由器) 3.2.1 点对点协议 PPP:特点 3.2.2 点对点协议 PPP:帧格式 3.2.3 点对点协议 PPP:工作状态 …...
hbase操作学习
1.namespace list_namespace 展示数据库 create_namespace 可以带属性名 属性值 create_namespace mydb,{author>hjp,ctime>2023-10-18}describe_namespace ‘库名’ 查看库的详细信息 alter_namespace ‘库名’ 修改表的详细信息 删除就是把method设置为unset dr…...
Nginx详细配置指南
nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件,该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织: 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…...
【数据库】SQL 过滤数据
过滤数据 简单过滤where 子句操作符检查单个值范围值检擦空值检查 高级过滤多个过滤条件求值顺序IN 操作符NOT 操作符 在 s q l sql sql 语句中,通过 WHERE 子句指定搜索条件进行过滤。 简单过滤 包含:WHERE,BETWEEN,IS NULL&a…...
缓存相关问题
对于缓存,我们主要关心两个:缓存的命中率,数据的一致性。由此又会有一些缓存引起的问题,缓存击穿、穿透、雪崩。对于这些问题也是我们在使用缓存时不得不考虑的 。这些问题的解决方案也有很多。这里简单列举几个: &am…...
arrow(c++)改写empyrical系列1---用arrow读取基金净值数据并计算夏普率
用arrow c版本读取了csv中的基金净值数据,然后计算了夏普率,比较尴尬的是,arrow c版本计算耗费的时间却比python的empyrical版本耗费时间多。。。 arrow新手上路,第一次自己去实现功能,实现的大概率并不是最高效的方…...
Mathematica强制将函数的自变量由符号转为数值
问题 使用Mathematcia完成函数优化(FindMaximum)十分方便。但是如果优化的目标函数非常复杂,里面嵌套了若干NSolve函数,那么FindMaximum可能会计算非常长时间,甚至无法得到正确结果。 原因在于,Mathemtic…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
