CSS中的栅格布局

CSS中的栅格布局

在写前端项目的时候,我之前一直习惯使用flex布局,flex布局写起来比较随心,几乎可以实现任意形式的页面布局。不过自从B占看到某位大佬的grid布局后,发现布局居然还可以这么玩,正好自己在写一个vue3的项目,需要写几个大屏展示方案,用栅格布局实现了一下,发现真香

看一下最后的实现效果,真实效果比这个好很多,因为有数据和地图,但这里主要记录怎么使用栅格布局,所以我只将精髓

image-20231027171054551

页面分上中下三部分,整体使用flex布局,排列方向是column。上面是标题,中间是数据看板,下面是展示的核心内容

上面也是用的flex布局,中间和下面都是grid布局

先看下完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>网格布局</title><style>.main-screen {display: flex;flex-direction: column;align-items: center;justify-content: center;}.header {width: 100%;height: 80px;background-color: #030829;display: flex;align-items: center;justify-content: space-between;}.time {color: #fff;margin-left: 20px;}.tip {color: #fff;margin-right: 20px;display: flex;justify-content: center;align-items: center;}.header-title {width: 30%;text-align: center;color: #FFFFff;background-size: 100% 100%;height: 80px;font-family: "微软雅黑" !important;}h2 {margin-top: 16px !important;font-size: 28px !important;}.content {width: 100%;background-color: #081832;padding-top: 10px;padding-bottom: 5px;height: 950px;display: flex;flex-direction: column;}.numeric {padding: 10px;display: grid;grid-template-columns: 1fr 1fr 1fr;gap: 30px;// background-color: #034c6a;height: 15%;width: 100%;}.chart {height: 85%;width: 100%;// border: 1px solid #fff;display: grid;grid-template-columns: repeat(10, 1fr);gap: 10px;padding: 10px;}.box {box-shadow: -10px 0px 15px #034c6a inset,0px -10px 15px #034c6a inset,10px 0px 15px #034c6a inset,0px 10px 15px #034c6a inset;border: 1px solid #034c6a;box-sizing: border-box;margin-top: 10px;position: relative;display: flex;justify-content: center;align-items: center;flex-direction: column;}.title {background-color: #034c6a;border-radius: 18px;position: absolute;height: 35px;width: 60%;top: -15px;color: #ffffff;font-weight: bold;font-size: 16px;left: 20%;line-height: 35px;text-align: center;}.top-left {grid-row: 1/4;grid-column: 1/3;}.bottom-left {grid-row: 4/7;grid-column: 1/3;}.middle-map-left {grid-row: 1/5;grid-column: 3/6;}.middle-map-right {grid-row: 1/5;grid-column: 6/9;}.middle-bottom-left {grid-row: 5/7;grid-column: 3/5;}.middle-bottom-bottom {grid-row: 5/7;grid-column: 5/7;}.middle-bottom-right {grid-row: 5/7;grid-column: 7/9;}.right-top {grid-row: 1/4;grid-column: 9/11;}.right-bottom {grid-row: 4/7;grid-column: 9/11;}.numeric-box {background-color: #034c6a;border-radius: 8px;height: 100%;display: flex;justify-content: space-around;align-items: center;}</style>
</head>
<body style="margin: 0; padding: 0;"><div class="main-screen"><div class="header"><div class="time">2023-10-27 16:59:59</div><div class="header-title"><h2><strong>无锡市今日数据看板</strong></h2></div><div class="tip"><span>提示:数据每小时更新</span></div></div><div class="content"><div class="numeric"><div class="numeric-box"></div><div class="numeric-box"></div><div class="numeric-box"></div></div><div class="chart"><div class="box top-left"><div class="title">江阴市</div></div><div class="box bottom-left"><div class="title">宜兴市</div></div><div class="box middle-map-left"><div class="title">今日地图</div></div><div class="box middle-map-right"><div class="title">当前地图</div></div><div class="box middle-bottom-left"><div class="title">滨湖区</div></div><div class="box middle-bottom-bottom"><div class="title">新吴区</div></div><div class="box middle-bottom-right"><div class="title">梁溪区</div></div><div class="box right-top"><div class="title">锡山区</div></div><div class="box right-bottom"><div class="title">惠山区</div></div></div></div></div>
</body>
</html>

先看中间的三个数据展示面板的网格布局,样式代码如下

    .numeric {padding: 10px;display: grid;grid-template-columns: 1fr 1fr 1fr;gap: 30px;// background-color: #034c6a;height: 15%;width: 100%;}.numeric-box {background-color: #034c6a;border-radius: 8px;height: 100%;display: flex;justify-content: space-around;align-items: center;}

主要看上面的numeric,这是一个很基础的网格布局,核心就是设置grid-template-columns,因为有3列,所以写三个1fr就行了,然后就是样式的美化,gap是样式之间的间隔

下面来看比较复杂的grid布局

下面那部分内容,我要展示7个小的方块,2个大一点的方块,大的方块要放在中间,为了布局好看点,我进行了如下的设计:

image-20231030081645560

每个方块,都有一个box属性,就是设置背景颜色和阴影的。其他的属性直接在图上标注了。

那现在的重点就是如何用栅格布局来设计这种响应式的大屏页面了,根据代码:

首先看容器的样式

    .chart {height: 85%;width: 100%;// border: 1px solid #fff;display: grid;grid-template-columns: repeat(10, 1fr);gap: 10px;padding: 10px;}

关键的代码就是设置了grid-template-columns: repeat(10, 1fr);意思是横向上重复10列,也就是有10个网格,这个10如何而来,自然是根据上面的设计,从B到K正好10格。

接下来看每个方块是怎么设置的

 	.top-left {grid-row: 1/4;grid-column: 1/3;}.bottom-left {grid-row: 4/7;grid-column: 1/3;}.middle-map-left {grid-row: 1/5;grid-column: 3/6;}.middle-map-right {grid-row: 1/5;grid-column: 6/9;}.middle-bottom-left {grid-row: 5/7;grid-column: 3/5;}.middle-bottom-bottom {grid-row: 5/7;grid-column: 5/7;}.middle-bottom-right {grid-row: 5/7;grid-column: 7/9;}.right-top {grid-row: 1/4;grid-column: 9/11;}.right-bottom {grid-row: 4/7;grid-column: 9/11;}

其实都是设置了2个属性

  • grid-row,这个属性表示的意思是,元素的行占位,比如1/4,其中1表达的意思是从第1行开始,4表达的意思是占3行,1+3=4,再比如5/7,5表示从第5行开始,占2行,5+2=7
  • grid-column和grid-row一样

所以关键就是设计好上面那个页面,然后根据这两个参数,就能完成一个响应式的grid部局了,比自己手写flex布局效果要好得多

还有一些细节,就是网格之间还会有间距,可以用gap来设置

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

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

相关文章

(vue)el-form表单隐藏校验星号

(vue)el-form表单隐藏校验星号 写法&#xff1a; <el-form:model"ruleForm" :rules"rules" ref"ruleForm":hide-required-asterisk"true" //隐藏星号... >

【数据结构】模拟实现Vecotr

namespace my_vector {template <class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//常量指针&#xff0c;指针指向的值不可以变&#xff1b;//构造函数vector():start(nullptr),finish(nullptr),end_of_storage(nullptr){}//析构函数…

【大数据Hive】hive 表数据优化使用详解

目录 一、前言 二、hive 常用数据存储格式 2.1 文件格式-TextFile 2.1.1 操作演示 2.2 文件格式 - SequenceFile 2.2.1 操作演示 2.3 文件格式 -Parquet 2.3.1 Parquet简介 2.3.2 操作演示 2.4 文件格式-ORC 2.4.1 ORC介绍 2.4.2 操作演示 三、hive 存储数据压缩优…

大数据之LibrA数据库常见术语(十)

xlog 表示事务日志&#xff0c;一个逻辑节点中只有一个&#xff0c;不允许创建多个xlog文件。 系统表 存储数据库元信息的表&#xff0c;元信息包括数据库中的用户表、索引、列、函数和数据类型等。 压缩 数据压缩&#xff0c;信源编码&#xff0c;或比特率降低涉及使用相比…

Differences between Income Statement and Tax Return

转载请注明出处&#xff1a;http://blog.csdn.net/dongdong9223/article/details/134120122 本文出自【我是干勾鱼的博客】 Some different information between Income Statement and Tax Return: Income StatementTax ReturnRevenueTaxable revenueExpense-Deductible Expen…

在线主动学习算法评估策略:prequential evaluation procedure

在线主动学习算法评估策略&#xff1a;prequential evaluation procedure 在在线主动学习领域(Online Active Learning)&#xff0c;对在线主动学习算法的评估策略有多种方法&#xff0c;而现如今常用的方法是prequential evaluation procedure(出自论文《High density-focuse…

c++二叉树遍历

参考文献 数据结构c语言版&#xff0c;严蔚敏_吴伟民著。 二叉树 中序遍历代码实现 #include<vector> #include<iostream> using namespace std;//Definition for a binary tree node. struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : v…

腾讯云轻量应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像介绍

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像&#xff0c;腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍&#xff1a; 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像&#xff1a;独有的应用镜像除了包…

笨方法造MySQL_test表结构

此文使用ALTER TABLE命令来修改表结构&#xff0c;ADD COLUMN子句用于添加新的列。 SELECT * FROM test1 limit 20 -- SBSJ 无符号整型 4 ALTER TABLE test1ADD SBSJ INT(4) UNSIGNED; -- BLSH 无符号整型 4 -- MBFSXH 无符号整型 4 ALTER TABLE test1 ADD BLSH INT(4) …

Mysql设置了更新时间自动更新,指定更新部分sql时不进行时间更新

现象&#xff1a; 因为字段设置了自动更新&#xff0c;所以sql语句一进行修改此字段就会自动更新时间&#xff0c;但是呢我们的有部分定时任务是半夜执行&#xff0c;并且不能让这个任务修改到数据的更新时间 解决&#xff1a; <update id"updateCreative">ALT…

GoLand GC(垃圾回收机制)简介及调优

GC(Garbage Collector)垃圾回收机制及调优 简单理解GC机制 其实gc机制特别容易理解&#xff0c;就是物理内存的自动清理工。我们可以把内存想象成一个房间&#xff0c;程序运行时会在这个房间里存放各种东西&#xff0c;但有时候我们会忘记把不再需要的东西拿出去&#xff0c…

HubSpot CRM是什么?如何添加、使用呢?

HubSpot CRM是一款强大的客户关系管理工具&#xff0c;它不仅简化了销售和市场营销过程&#xff0c;还提供了多种功能&#xff0c;有助于增强客户互动、提高销售效率和提供更多的洞察信息。 今天运营坛将带领大家深入了解HubSpot CRM&#xff0c;涵盖了它的定义、使用流程、添…

基于STM32闭环步进电机控制系统设计

**单片机设计介绍&#xff0c;1654基于STM32闭环步进电机控制系统设计&#xff08;仿真&#xff0c;程序&#xff0c;说明&#xff09; 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序文档 六、 文章目录 一 概要 基于STM32的闭环步进电机控制系统设计是…

Java版 招投标系统简介 招投标系统源码 java招投标系统 招投标系统功能设计

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

maven配置问题

问题&#xff1a; maven使用mvn -v命令报错: please set the JAVA_HOME variable in your environment.&#xff08;请在你的环境中配置javahome变量&#xff09; 可能出错的原因及解决方案&#xff1a; a. 配置的javahome变量后有分号导致变量识别失败&#xff0c;删除变量地…

nbcio-boot如何进行gitee第三方登录

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 1、用户g…

【开题报告】基于Spring Boot的家装产品展示交易平台的设计与实现

1.研究背景和目的 随着人们对居住环境舒适度和个性化需求的不断提升&#xff0c;家装市场正逐渐发展成为一个重要的消费领域。为了满足消费者对家装产品的需求&#xff0c;建立一个高效、可靠的家装产品展示交易平台变得尤为重要。本项目旨在通过使用Spring Boot框架&#xff…

Dockerfile文件详细教程

写在前面 Dockerfile是用来构建镜像的,他实际上就是把在linux下的命令操作写到了Dockerfile中,通过Dockerfile去执行设置好的操作命令,保证通过Dockerfile的构建镜像是一致的。 实战分析 该例子来自于 chromium 项目 主要干的事情: 来指定用哪个镜像;安装一些编译需要的…

深入理解Python中的元类

Python元类&#xff1a;metaclass 1、类也是对象2、什么是元类3、__metaclass__属性4、自定义元类5、为什么要用metaclass类而不是函数6、究竟为什么要使用元类7、结语 声明&#xff1a; 本文主要参考文章&#xff1a;https://stackoverflow.com/questions/100003/what-are-met…

安卓逆向之雷电模拟器中控

一, 雷电模拟器 安装使用 官方地址: https://www.ldmnq.com ,官方论坛 https://www.ldmnq.com/forum/ . 有一个多开管理器,还有就是设置手机的参数比较关键。 二,雷电模拟器开启面具,安装LSP。 设置root 权限。