CSS基础笔记-05layout

CSS基础笔记系列

  • 《CSS基础笔记-01CSS概述》
  • 《CSS基础笔记-02动画》
  • 《CSS基础笔记-03选择器》
  • 《CSS基础笔记-04cascade-specificity-inheritance》

文章目录

  • CSS基础笔记系列
  • 什么是CSS布局
  • 布局方法
    • normal flow
    • flexbox
    • grid
    • floats
  • 总结

什么是CSS布局

CSS布局是指在页面中对元素的排列和定位。通过在HTML中使用CSS使得元素的编排更结构化。

布局方法

CSS提供了多种布局技术,如:normal flow、flexbox、grid、floats。一般通过元素的display属性来设置布局。

normal flow

正常布局流(normal flow):在不进行任何布局控制时,浏览器默认的html布局方式。

block element:出现在一个元素下面的元素被称为块元素。

inline element:出现在一个元素旁边的元素被称为内联元素。

block和inline其实也好理解。就像我们正常的写字一样,一句话里面的每个字的排列就是inline(并排排列),而一段话与一段话之间就是block(上下排列)。

在这里插入图片描述

在这里插入图片描述

可以看到

元素默认是block,元素默认是inline。

flexbox

flexbox即时 flexible box layout的简称。

flexbox是一种创建横向或是纵向的一维页面布局方式,被布局的对象既可以横向分布也可以纵向分布。他的特点是:父元素的display设置成flex后,它的直接子元素成为flex items,基于父元素这个盒子(flex container)进行弹性布局。

举例说明下:

<div class="wrapper"><div>第四章</div><div>第五章</div><div>第六章</div>
</div>
.wrapper{display: flex;
}.wrapper > div {border-radius: 5px;background-color: rgb(207 232 220);padding: 10px;box-shadow: 5px 5px 5px 5px rgba(0, 0, 0, 0.7);
}

父元素div定义了一个wrapper类且display设置为flex,它的子元素div为了方便观察,添加了些样式。

运行的效果如下:

在这里插入图片描述

可以看到,父元素divdisplayflexflex-directionrow,即按行排列。父元素就好比一个盒子,其子元素可以在这个盒子里面按照相应的属性值进行布局。由于display不支持继承,所以子元素divdisplay还是默认的block

三个子元素div为什么看起来是在垂直方向上填满了,而水平方向上从左到右紧挨着排队而没有将右边的空白也填满呢?

要解释清楚这个问题,还涉及几个概念:主轴(main axis)、交叉轴(cross axis)、align-items。

弹性容器(flex)的主轴和交叉轴是垂直的,而主轴和交叉轴的具体方向是由flex-direction属性决定。

如果flex-direction的值是rowrow-reverse,那么主轴就是横向的,交叉轴就是纵向的。

在这里插入图片描述

如果flex-direction的值是columncolumn-reverse,那么主轴就是纵向的,交叉轴就是横向的。

在这里插入图片描述

align-items属性控制items在交叉轴上的对齐方式;对于flex,align-items的默认值是strech,即在交叉轴方向上填充(strech)。

若将height:400px添加到wrapper,这种交叉轴方向上的stretch会更加明显。

在这里插入图片描述

justify-content属性控制:在主轴方向上,items之间 以及 items和父元素之间的空间分布。对于flex,justify-content的默认值是start,start的作用是:从行首开始排列,每行第一个子元素与行首对齐,同时所有后续的子元素与前一个对齐。

若将justify-content改为space-between(在每行上均匀分配弹性元素;相邻元素间距离相同;每行第一个元素与行首对齐,每行最后一个元素与行尾对齐。),那么效果就发生变化了。

在这里插入图片描述

不仅可以对flex容器进行属性设置,也可以对flex items进行属性设置。比如,flex属性可以设置flex items如何增大或缩小以适应其弹性容器中可用的空间。

在这里插入图片描述

grid

grid用于同时在两个维度上把元素 按 行和列 排列整齐。

<div class="wrapper"><div class="box1">第一章</div><div class="box2">第二章</div><div class="box3">第三章</div><div class="box4">第四章</div><div class="box5">第五章</div><div class="box6">第六章</div>
</div>
.wrapper>div {border-radius: 5px;background-color: rgb(207 232 220);padding: 1em;
}.wrapper {display: grid;grid-template-columns: 1fr 1fr;grid-template-rows: 100px 100px 100px;gap: 10px;
}

grid-template-rows定义grid container中 行数和每一行的高度,高度可以用px、百分比和fr(fraction of available space)表示。上例中,在grid中定义了3行,每行高度为100px。

grid-template-columns定义grid container中 列数和每一列的宽度,宽度可以用px、百分比和fr表示。上例中,在grid中定义了2列,没列高度为1fr。

fr 是一种度量单位,用来为每个网格成比例的分配空白空间,适合用于弹性和响应式布局。

gap 表示网格行与列之间的间隔。即可用于flex也可以用于grid。

在这里插入图片描述

<div class="wrapper"><div class="box1">第一章</div><div class="box2">第二章</div><div class="box3">第三章</div></div>
.wrapper>div {border-radius: 5px;background-color: rgb(207 232 220);padding: 1em;border: 1px solid black;
}.wrapper {display: grid;grid-template-columns: 1fr 1fr 1fr;grid-template-rows: 100px 100px;gap: 10px;/* border: 1px solid black; */}.box1 {grid-column: 2 / 4;grid-row: 1;}.box2 {grid-column: 1;grid-row: 1 / 3;}.box3 {grid-row: 2;grid-column: 3;}

本例是一个2行3列的网格。

grid-column属性用于设置grid item的显示从第几列开始,到第几列结束;例如,box1从第二列开始显示,到第四列结束。

grid-row属性用于设置grid item的显示从第几行开始,到第几列结束;例如,box2从第二行开始显示,到第三行结束。

在这里插入图片描述

floats

虽然现在新的CSS代码不再使用float布局,但有些老的项目中可能还有float的代码,因此,也得知道floats布局到底是怎么个搞法,以便代码维护。

将设置float的元素从normal flow”去除”,也就是说独立于normal flow中的元素,甭管normal flow中的元素布局位置怎么变,设置float的元素“岿然不动”。

<h1>Float 使用示例</h1><div class="box">Float</div><p>央视网消息:透过数据看中国经济。近日,一批经济数据陆续发布,2023年全年收购粮食超4亿吨、我国寄递业务量超1600亿件、全国油气产量当量创新高……多项数据显示,我国经济活力持续向好,经济整体将稳定恢复。2023年全国粮食总产量达13908.2亿斤,比上年增长1.3%,连续9年稳定在1.3万亿斤以上,粮食市场保持平稳运行,国家储备实力和应急保障能力进一步增强,为经济回升向好和高质量发展,提供有力支撑。</p>
.box {background-color: rgb(207 232 220);border: 2px solid rgb(79 185 227);padding: 10px;border-radius: 5px;float: left;width: 150px;height: 150px;margin-right: 30px;}

将box是设置为float:left,div将始终靠左,并且与p元素相互独立,然后视觉上有一种p元素中的文字环绕着box的效果。

总结

本文研究了CSS layout的normal flow,flex,grip和float。normal flow就是默认的页面布局,flex是一种一维 (或行或列,main axis)的布局方式,grid是一种二维的网格式布局方式。

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

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

相关文章

前端中什么是DOM对象

DOM&#xff08;文档对象模型&#xff09;是一种编程接口&#xff0c;用于HTML和XML文档。它提供了一种将文档结构表示为树结构的方式&#xff0c;这使得程序和脚本能够动态地访问和更新文档的内容、结构和样式。 在前端开发中&#xff0c;DOM是非常重要的概念。当浏览器加载网…

websocket: 了解并利用nodejs实现webSocket前后端通信

目录 第一章 前言 1.1 起源 1.2 短轮询与长轮询 1.2.1 短轮询 1.2.2 长轮询 1.2.3 长连接&#xff08;SSE&#xff09; 1.2.4 websocket 第二章 利用Node以及ws创建webSocket服务器 2.1 创建ws服务器&#xff08;后端部分&#xff09; 2.1.1 了解一下 2.1.2 代创建W…

Pytorch从零开始实战16

Pytorch从零开始实战——ResNeXt-50算法的思考 本系列来源于365天深度学习训练营 原作者K同学 对于上次ResNeXt-50算法&#xff0c;我们同样有基于TensorFlow的实现。具体代码如下。 引入头文件 import numpy as np from tensorflow.keras.preprocessing.image import Ima…

【昕宝爸爸定制】如何将集合变成线程安全的?

如何将集合变成线程安全的? ✅典型解析&#x1f7e2;拓展知识仓☑️Java中都有哪些线程安全的集合&#xff1f;&#x1f7e0;线程安全集合类的优缺点是什么&#x1f7e1;如何选择合适的线程安全集合类☑️如何解决线程安全集合类并发冲突问题✔️乐观锁实现方式 (具体步骤)。✅…

2024年了,Layui再战三年有问题不?

v2.9.3 2023-12-31 2023 收官。 form 优化 input 组件圆角时后缀存在方框的问题 #1467 bxjt123优化 select 搜索面板打开逻辑&#xff0c;以适配文字直接粘贴触发搜索的情况 #1498 Sight-wcgtable 修复非常规列设置 field 表头选项时&#xff0c;导出 excel 出现合计行错位的…

[Python办公自动化 – 数据预处理和数据校验

Python办公自动化 – 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自动化 – 对Excel文档和数据库的操作…

【C++】STL 算法 ③ ( 函数对象中存储状态 | 函数对象作为参数传递时值传递问题 | for_each 算法的 函数对象 参数是值传递 )

文章目录 一、函数对象中存储状态1、函数对象中存储状态简介2、示例分析 二、函数对象作为参数传递时值传递问题1、for_each 算法的 函数对象 参数是值传递2、代码示例 - for_each 函数的 函数对象 参数在外部不保留状态3、代码示例 - for_each 函数的 函数对象 返回值 一、函数…

中小企业低成本如何进行推广?媒介盒子解答

数字化时代下&#xff0c;用户想要购买产品的第一步都是在网上查询相关信息&#xff0c;因此对于中小企业来说&#xff0c;怎么把自己曝光到网上&#xff0c;怎么可以让用户搜到类似关键词时名列其中是企业需要考虑的问题&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;中…

五、Spring AOP面向切面编程(基于XML方式实现)

本章概要 Spring AOP基于XML方式实现(了解)Spring AOP对获取Bean的影响理解 根据类型装配 bean使用总结 5.6 Spring AOP基于XML方式实现(了解) 准备工作 加入依赖 <!-- spring-aspects会帮我们传递过来aspectjweaver --> <dependency><groupId>org.spr…

代理IP连接不上/网速过慢?如何应对?

当您使用代理时&#xff0c;您可能会遇到不同的代理错误代码显示代理IP连不通、访问失败、网速过慢等种种问题。 在本文中中&#xff0c;我们将讨论您在使用代理IP时可能遇到的常见错误、发生这些错误的原因以及解决方法。 一、常见代理服务器错误 当您尝试访问网站时&#…

10个最容易被忽视的 FastAPI 实用功能

FastAPI是一种现代、高性能的Python Web框架&#xff0c;用于构建Web应用程序和API。 它基于Python的异步编程库asyncio和await语法&#xff0c;以及类型注解和自动文档生成等特性&#xff0c;提供了快速、易用和可靠的开发体验&#xff0c;接下来本文将介绍10项被忽视的FastA…

Qt/QML编程学习之心得:hicar手机投屏到车机中控的实现(32)

hicar,是华为推出的一款手机APP,有百度地图、华为音乐,更多应用中还有很多对应手机上装在的其他APP,都可以在这个里面打开使用,对开车的司机非常友好。但它不仅仅是用在手机上,它还可以投屏到车机中控上,这是比较神奇的一点。 HiCar本质上是一套智能投屏系统,理论上所有…