CSS基础笔记-05layout

news2025/2/25 12:30:07

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.coloradmin.cn/o/1383195.html

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

相关文章

信息质量要求

目录 \quad 会计信息质量要求 会计核算的信息质量要求是对会计核算提供信息的基本要求,是处理具体会计业务的基本依据&#xff0c;是在会计核算前提条件制约下进行会计核算的标准和质量要求。 \quad \quad 可靠性 也就是真实性, 要求会计记录以实际凭证为依据如实反映财务状况和…

Compileflow工作流引擎使用讲解

文章目录 1 Compileflow1.1 简介1.2 特点1.3 Compileflow插件下载1.4 main方法调用1.4.1 pom.xml1.4.2 新建bpm文件1.4.3 各个节点绑定方法1.4.4 测试方法 1.5 bpm各个标签说明1.5.1 BPM根节点1.5.2 全局变量1.5.3 开始节点: start1.5.4 结束节点: end1.5.5 自动节点: autoTask…

关于Quartz远程调用服务方法失败如何解决,@Inner详细介绍

1.单独在要调用服务的controller写上相关方法&#xff08;Inner(value true)要走aop&#xff0c;会检测是否有内部调用标识&#xff09;具体见下述 2. 编写Feign远程调用的接口&#xff0c;注意加上RequestHeader(SecurityConstants.FROM) String from。因为inner(value true…

带你拿捏SpringBoot自动装配的核心技术?模块装配(@EnableXXX注解+@Import)+ 条件装配(@ConditionalXXX)

文章目录 Profile激活指定配置文件主配置文件中指定激活的profile命令行激活设置虚拟机参数激活 profile控制不到的地方 Spring原生的条件装配注解ConditionalConditional接口讲解案例讲解 Spring Boot封装的条件装配注解ConditionalXXX自己实现ConditionalOnBeanSpringBoot 源…

【目标检测】评价指标:mAP概念及其计算方法(yolo源码/pycocotools)

本篇文章首先介绍目标检测任务中的关键评价指标mAP的概念&#xff1b;然后介绍其在yolo源码和pycocotools工具中的实现方法&#xff1b;最后比较两种mAP的计算方法的不同之处。 目标检测中的评价指标&#xff1a; mAP概念及其计算方法(yolo源码/pycocotools) 混淆矩阵概念及其…

6.2 声音编辑工具GoldWave5简介(7)

6.2.5其它常用功能 1&#xff0e;高低通 把录制的语音和背景音乐融合在一起时&#xff0c;可能会出现背景音乐音量过大&#xff0c;语音音量过小的现象&#xff0c;这时可以选择“低通”将背景音乐的音量降低一些。 (1)选择【效果】|【波波器】|【低通/高通】命令&#xff0…

开箱即用的企业级前后端分离【.NET Core6.0 Api + Vue 2.x + RBAC】权限框架-Blog.Core

前言 今天要给大家推荐一个开箱即用的企业级前后端分离【.NET Core6.0 Api Vue 2.x RBAC】权限框架&#xff08;提高生产效率&#xff0c;快速开发就选它&#xff09;&#xff1a;Blog.Core。 推荐原因 Blog.Core通过详细的文章和视频讲解&#xff0c;将知识点各个击破&…

2024-1-12 关于SVPWM的理解疑问

直流母线电压利用率是指逆变电路&#xff08;电机控制器&#xff09;所能输出的交流电压基波最大幅值U1m和直流母线电压之比。 电压利用率 SVPWM算法理解&#xff08;二&#xff09;——关于非零基本矢量幅值和线电压幅值的解释 因此我们在实际应用中提供的直流侧电压Udc&…

ssm基于Web的课堂管理系统设计与实现论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

【Linux】 系统目录结构

进入到根目录 cd /ls目录名具体作用/存放系统系统相关的目录文件/boot放置linux系统内核文件和启动时用到的一些引导文件/home包含linux系统上各用户的主目录&#xff0c;子目录名称默认以该用户名命名/root系统管理员root的家目录/bin包含常用的命令文件&#xff08;如ls 等&a…

STM32 CAN学习(一)

STM32 CAN CAN协议简介 CAN是控制器局域网络(Controller Area Network)的简称&#xff0c;它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的&#xff0c;并最终成为国际标准&#xff08;ISO11519&#xff09;&#xff0c;是国际上应用最广泛的现场总线之一。CAN总线协…

Qat++,轻量级开源C++ Web框架

目录 一.简介 二.编译Oat 1.环境 2.编译/安装 三.试用 1.创建一个 CMake 项目 2.自定义客户端请求响应 3.将请求Router到服务器 4.用浏览器验证 一.简介 Oat是一个面向C的现代Web框架 官网地址&#xff1a;https://oatpp.io github地址&#xff1a;https://github.co…

JavaScript中alter、confrim、prompt的区别及使用

文章目录 一、alter1.什么是alert&#xff1f;2.alter的使用 二、confrim1.什么是confrim&#xff1f;2.confrim的使用 三、prompt1.什么是prompt&#xff1f;2.prompt的使用 四、总结alter、confrim、prompt的区别 一、alter 1.什么是alert&#xff1f; 在JavaScript中&…

ssm基于Vue的健身房会员管理系统+vue论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#x…

强化学习应用(四):基于Q-learning算法的无人车配送路径规划(提供Python代码)

一、Q-learning算法介绍 Q-learning是一种强化学习算法&#xff0c;用于解决基于环境的决策问题。它通过学习一个Q-table来指导智能体在不同状态下采取最优动作。下面是Q-learning算法的基本步骤&#xff1a; 1. 定义环境&#xff1a;确定问题的状态和动作空间&#xff0c;并…

1.5矩阵元素的引用

通过下标来引用矩阵的元素 A(3, 2)表示A矩阵第3行第2列的元素。 >> arr [1,2,3;4,5,6]; >> arr(4, 5) 10arr 1 2 3 0 04 5 6 0 00 0 0 0 00 0 0 0 10>> 如果引用元素超过矩阵的大小将自…

ssm基于spring和vue开发的web新闻流媒体平台论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

隧道应用3-Cobalt Strike正反向连接多层内网

Cobalt Strike 正向连接多层内网&#xff1a; teamserver 不允许访问 B &#xff0c;但是服务器上A有权限&#xff08; A 与 B 在同一网段&#xff09;&#xff0c;若 A 服务上已经有了 cs 的后门&#xff0c;则可以通过 cs 的正向连接去连接 B &#xff0c;在 teamserver 通…

基于机器学习的高考志愿高校及专业分析系统

本项目在“基于 Python 的高考志愿高校及专业分析系统”基础上补充添加了机器学习算法对高考总问进行预测&#xff1b; 项目采用了网络爬虫技术&#xff0c;从指定的高考信息网站上抓取了各大高校的历年录取分数线数据。 通过精细的数据清洗过程&#xff0c;这些数据被存储于…

黑马程序员SpringBoot2-开发实用篇

视频连接&#xff1a;开发实用篇-67-手工启动热部署_哔哩哔哩_bilibili 热部署 手动启动热部署 热部署仅包含restart的过程。 自动启动热部署 按CtrlAltShift/打开下列界面。 禁用热部署 配置高级 ConfigurationProperties 宽松绑定/松散绑定 常用计量单位绑定 数据校验 设置…