htmlCSS-----弹性布局

 目录

前言

什么是弹性布局

 样式

 学习概要

容器和项目

弹性布局的排列方式

1.横向排列(默认样式)

 2.父元素容器的属性(*5)

(1)主轴 

代码示例:

 (2)交叉轴

3.子元素项目的属性(*4)


前言

        前面我们学习了浮动布局方式,那么今天我们学习新的布局方式---弹性布局,这类布局方式可以使得我们的页面实现自适应或者按比例缩放的效果,不需要去一个个调整,那下面我们就一起去看看吧。

什么是弹性布局

传统布局基本依靠display float position来完成,有些特殊的布局写起来不太方便。

CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间

        相较于浮动,弹性布局是属于文档流的,而浮动是属于脱离文档流的 

 样式

为父级元素添加 display: flex; 或者 display: inline-flex; 。其子元素则可按照弹性盒模型的规则进行布局。

 学习概要

1.什么是容器

2.什么是项目

3.什么是主轴

4.什么是交叉轴

下面我会按照以上的四个问题的方向一一去讲解说明弹性布局的特点和性质,搞懂了这四个问题基本上就理解了弹性布局了。

容器和项目

容器:是设定了display: flex; 的样式的盒子作为容器

项目:容器里面的子类元素就作为项目

看下面代码示例: 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.div{display: flex;width: 800px;height: 500px;border: 2px solid;}</style>
</head>
<body><!-- 这里div类是属于容器 --><div class="div"><!-- 这里的div1是div的子类是属于项目 --><div class="div1"><!-- 这里的div2是div1的子类,但不是项目 --><div class="div2"></div></div></div>
</body>
</html>

弹性布局的排列方式

父级为弹性盒模型时,子元素默认有一些特殊的展示方式。当然我们可以通过后面的学习知道如何改变这些展示方式。

1.横向排列(默认样式)

默认盒模型中,各子元素上下排列,弹性盒模型中,子元素默认按主轴从左到右横向排列。(可以通过属性改变主轴及主轴起点),这就是弹性布局的默认形式。

看代码示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.divall{width: 800px;height: 600px;border: 1px solid;display:flex;}.div{/* 注意 我把每一个子元素盒子的宽度设置为500px */width: 500px;height: 300px;}.div1{background-color: red;}.div2{background-color: blue;}.div3{background-color: aquamarine;}.div4{background-color: rosybrown;}.div5{background-color: rgb(127, 255, 142);}</style>
</head>
<body><!-- 弹性布局盒子 --><div class="divall"><div class="div1 div"></div><div class="div2 div"></div><div class="div3 div"></div><div class="div4 div"></div><div class="div5 div"></div></div>
</body>
</html>

效果展示:

 子元素总宽大于父级宽度,默认不换行,按比例缩放各个子元素的宽,上面我把每一个子元素盒子的宽度设置为500px,实际上整个父元素盒子的宽度只有800px,所以这里会按照1:1的形式进行一一缩放,直到宽度填满这个父元素盒子的宽度为止,这就是弹性布局的自适应特点。

 2.父元素容器的属性(*5)

(1)主轴 

flex-direction

flex-direction属性决定主轴的方向,默认为row,即水平方向,起点在左。

子项目按照主轴的方向从起点开始排列。

注意:主轴方向是只有一个的,主轴数量是可以多个的

  • row ,默认值,水平主轴,起点在左;

  • row-reverse,水平主轴,起点在右;

  • column,垂直主轴,起点在上;

  • column-reverse,垂直主轴,起点在下

flex-wrap

flex-wrap属性决定子元素主轴摆放不下的时候,项目换不换行,默认不换行。

  • none ,默认值,不换行;(摆放不下按比例缩放)

  • wrap,换行,第一排在最前;

  • wrap-reverse,换行,最后一排在最前。

justify-content

justify-content属性定义子元素在主轴的对齐方式。

  • flex-start,默认值,起点对齐;

  • flex-end,终点对齐;

  • center,居中

  • space-between,两端对齐,中间间隔分均分配;

  • space-around,所有间隔分均分配,即所有子元素拥有相同的左右(上下)间隔。

  • space-evenly 所有间隔平均分均

代码示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.divall{width: 800px;height: 500px;border: 1px solid;display:flex;/* 按x轴为主轴,默认 */flex-direction: row;/* 设置为所有间隔分均分配,即所有子元素拥有相同的左右(上下)间隔。 */justify-content: space-around;/* 如果子元素宽度大于父元素宽度进行换行 */flex-wrap: wrap;}.div{width: 250px;height: 300px;}.div1{background-color: red;}.div2{background-color: blue;}.div3{background-color: aquamarine;}.div4{background-color: rosybrown;}.div5{background-color: rgb(127, 255, 142);}</style>
</head>
<body><!-- 弹性布局盒子 --><div class="divall"><div class="div1 div"></div><div class="div2 div"></div><div class="div3 div"></div><div class="div4 div"></div><div class="div5 div"></div></div>
</body>
</html>

效果如下:

 以上的主轴是x轴所以会以x轴作为基准,如果子元素盒子的高度大于父元素的高度的话,那么就胡出现超出的情况。

 (2)交叉轴

align-items

align-items定义子元素在副轴的对齐方式。

  • flex-start,副轴起点对齐;

  • flex-end,副轴终点对齐;

  • center,副轴居中对齐;

  • baseline,文本基线对齐

  • stretch,默认值,子元素如果没有设置高度(宽度),占满整个容器。(如果全部子元素都有设置高度值,则表现和flex-start一致。)

align-content

align-content属性定义多主轴之间(也就是换行后行与行之间)的对齐方式。所以,如果子元素没有换行,这个属性就不起作用。

  • flex-start,副轴起点对齐;

  • flex-end,副轴终点对齐;

  • center,副轴居中对齐;

  • space-between,副轴两端对齐,中间平均分配;

  • space-around,每行之间间距平均分配;

  • strecth,默认值,如果子元素没有设置高度,则占满对应主轴。(其余5个值中,没有设置高度的子元素和该行最高的高度一样)

  • space-evenly 所有间隔平均分均

3.子元素项目的属性(*4)

flex-basis

flex-basis属性定义在分配空间之前,子元素占据的主轴空间大小。默认值auto即元素本来的大小。

这里只接受一个值,这个值的大小是表示子元素盒子内容的大小,并不是宽度的大小。实际上这个样式一般不怎么用,我们一般会提前设置好宽度和高度

如图所示:

order

order属性定义子元素(视觉上)的展示顺序,值为一个数字,越小越优先摆放。如果没设置的话,默认是为0.

flex-shrink

flex-shrink属性用于规定 主轴空间不足时 子元素缩小的分配比例,默认为1,即分均分配来缩小。

计算方式: 

<style>*{ margin: 0; padding: 0;}.wrap{display: flex;width: 400px;height: 100px;margin: 20px auto;border: 1px solid red;font-size: 26px;font-weight: bolder;}.wrap .d1{width: 150px;background-color: #99cc99;flex-shrink: 1;}.wrap .d2{width: 200px;background-color: #f60; flex-shrink: 1;}.wrap .d3{width: 250px;background-color: #1da6ba; flex-shrink: 2;}
</style>
<div class="wrap"><div class="d1">1</div><div class="d2">2</div><div class="d3">3</div>
</div>

 

flex-grow

flex-grow属性用于规定 主轴有剩余空间时 子元素增大的分配比例,默认为0,即不增大。

<style>*{ margin: 0; padding: 0;}.wrap{display: flex;width: 400px;height: 100px;margin: 20px auto;border: 1px solid red;font-size: 26px;font-weight: bolder;}.wrap .d1{width: 50px;background-color: #99cc99;}.wrap .d2{width: 150px;flex-grow: 1;background-color: #f60;}.wrap .d3{width: 50px;flex-grow: 2;background-color: #1da6ba;}
</style>
<div class="wrap"><div class="d1">1</div><div class="d2">2</div><div class="d3">3</div>
</div>

 好了,以上就是今天的全部内容了,我们下一期再见!!!

分享一张壁纸:

樱花庄的宠物女孩_360百科

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

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

相关文章

Android 网络编程-网络请求

Android 网络编程-网络请求 文章目录 Android 网络编程-网络请求一、主要内容二、开发网络请求前的基本准备1、查看需要请求的网址是否有效&#xff08;1&#xff09;通过网页在线验证&#xff08;2&#xff09;使用专用window网咯请求工具&#xff08;3&#xff09;编写app代码…

网络安全 Day31-运维安全项目-容器架构下

容器架构下 6. Dockerfile6.1 Docker自动化DIY镜像之Dockerfile1) 环境准备2) 书写Dockerfile内容3&#xff09; 运行Dockerfile生成镜像4) 运行容器5) 小结 6.2 案例14&#xff1a;Dockerfile-RUN指令1) 书写Dockerfile2) 构建镜像3) 启动容器4) 测试结果 6.3 Dockerfile指令 …

4.文件保护

第四章 文件管理 4.文件保护 ​   加密保护&#xff1a;可以用“密码”与文件的原始数据依次做异或运算。这样可以把整个文件的数据都进行加密&#xff0c;所以系统中保存的并不是文件的原始数据&#xff0c;而是保存了对文件进行加密之后的数据&#xff0c;所以如果一个用户…

一、初始 Spring MVC

文章目录 一、回顾 MVC 模式二、初始 Spring MVC2.1 Spring MVC 核心组件2.1.1 前端控制器&#xff08;DispatcherServlet&#xff09;2.1.2 处理器映射器&#xff08;HandlerMapping&#xff09;2.1.3 处理器适配器&#xff08;HandlerAdapter&#xff09;2.1.3 后端控制器&am…

[NepCTF 2023] crypto 复现

这个赛很不理想&#xff0c;啥都不会。 拿了WP看了几个题&#xff0c;记录一下 random_RSA 这题不会是正常情况&#xff0c;我认为。对于论文题&#xff0c;不知道就是不知道&#xff0c;基本没有可能自己去完成论文。 题目不长&#xff0c;只有两个菜单&#xff0c;共可交…

qemu简单使用

参考&#xff1a; 记一次全设备通杀未授权RCE的挖掘经历 claude1 安装使用 附件下载 下载后拖到虚拟机 解压 使用root用户 运行.sh脚本即可 运行脚本解读 #!/bin/bashsudo qemu-system-mipsel \-cpu 74Kf \-M malta \-kernel vmlinux-3.2.0-4-4kc-malta \ -hda debian…

VSCode使用SSH无密码连接Ubuntu

VSCode使用SSH无密码连接Ubuntu 前提条件&#xff1a; 1. 能够正常使用vscode的Remote-ssh连接Ubuntu 2. Ubuntu配置静态ip&#xff08;否则经常需要修改Remote-ssh的配置文件里的IP&#xff09; 1. windows下 打开Win下的PowerShell&#xff0c;生成公钥和私钥 ssh-keygen…

Windows电脑快速搭建FTP服务教程

FTP介绍 FTP&#xff08;File Transfer Protocol&#xff09;是一种用于在计算机网络上进行文件传输的标准协议。它提供了一种可靠的、基于客户端-服务器模型的方式来将文件从一个主机传输到另一个主机。在本文中&#xff0c;我将详细介绍FTP的工作原理、数据传输模式以及常见…

回归预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现L…

EXCEL按列查找,最终返回该列所需查询序列所对应的值,VLOOKUP函数

EXCEL按列查找&#xff0c;最终返回该列所需查询序列所对应的值 示例&#xff1a;国标行业分类汉字&#xff0c;匹配id 使用VLOOKUP函数 第一参数&#xff1a;拿去查询的值。 第二参数&#xff1a;匹配的数据。 Ps&#xff1a;Sheet1!$C 21 : 21: 21:E 117 &#xff0c;需要…

《Java极简设计模式》第03章:工厂方法模式(FactoryMethod)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 源码地址&#xff1a;https://github.com/binghe001/java-simple-design-patterns/tree/master/j…

openLayers实战(五):overlay绘制标记

引入与创建overlay import Overlay from "ol/Overlay";// 创建map实例以及其他地图操作请看前几篇文章 // 省略2k行代码methods&#xff1a; {creatMark(markDom, txt, idstr) {if (markDom null) {markDom document.createElement("div");if (txt) {ma…