CSS 弹性布局

提示:这章比较重要,做复杂页面时经常会用到!会不断更新❗

文章目录

  • 前言
  • 主轴和侧轴
  • flex-direction 主轴方向
  • flex-wrap 折行
  • justify-content 主轴排列方式
    • flex-start:默认左对齐
    • flex-end:右对齐
    • center:居中
    • space-between:两端对齐
    • space-around:子标记之间的间距是子标记与父标记边框之间的间距2倍
    • space-evenly:间距平均
  • justify-content 侧轴排列方式
  • align-items与align-content 侧轴排列方式
  • flex 子标记样式


前言

提示:这里可以添加本文要记录的大概内容:

弹性布局的总体思想是把布局不写在标记上,而是把布局的样式代码写在最大的父标记上

让布局实现自适应和自动调整,可以在不同屏幕大小和设备上保持一定的布局效果,同时也可以方便地进行响应式设计

示例代码:

    /* 弹性布局 */display: flex;/* 主轴水平居中 */justify-content: center;/* 侧轴垂直居中 */align-items: center;/* 改变主轴方向 */flex-direction: column;

提示:以下是本篇文章正文内容,下面案例可供参考

主轴和侧轴

盒子变成弹性盒子后标记怎么排列?它是按照两个轴为方向进行排列显示(主轴和侧轴)

默认主轴是水平的,默认侧轴是垂直的

先设置一个大div,里面放五个小div,并分别控制他们的样式

【示例代码】:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.p{width: 300px;height: 300px;border: 2px solid black;margin-top: 50px;margin-left: 100px;}.s{width: 50px;height: 50px;background-color: aqua;}</style>
</head>
<body><!-- div.p>div{div$}.s*5 公式生成--><div class="p"><div class="s">div1</div><div class="s">div2</div><div class="s">div3</div><div class="s">div4</div><div class="s">div5</div></div></body>
</html>

输出效果:从上到下,五个小div默认排列
在这里插入图片描述

在父标记内加上弹性布局 display: flex;
输出显示:
在这里插入图片描述

弹性盒子中的子标记,是先按照主轴排列,再按照侧轴排列
主轴侧轴彼此垂直交叉

flex-direction 主轴方向

flex-direction:row      /*子元素沿主轴方向排列,也就是水平方向 row为默认值*/
flex-direction:column   /*子元素沿侧轴方向排列,也就是垂直方向 */

主轴默认是水平方向,【flex-direction: column; 垂直排列】
column主轴方向是垂直的(列)
row主轴方向是水平的(行)

弹性盒子中的子标记都会变成:行内块类型

接下来看一下

子标记里的5个div宽都是50px,总宽度是250px,接下来看一下他在整个大div宽300px内的显示
在这里插入图片描述
如果把5个小div的宽度改成80px,那总宽是400px,而大div总宽是300px,那会不会主轴不满然后侧轴排列?

输出结果:
在这里插入图片描述
这就是弹性盒子的特点:等比例压缩了

弹性盒子中的子标记占据的总尺寸超过弹性盒子的尺寸,默认弹性盒子会讲子标记等比例的压缩
在这里插入图片描述

flex-wrap 折行

如果说不想让他等比例压缩,要他折行显示侧轴排列时用到

在父标记中加入flex-wrap: wrap;

输出显示:
在这里插入图片描述

弹性盒子对于一些简单的样式声明,他会完成一些复杂的计算和排列

弹性盒子尺寸小于子标记的总尺寸时,会在侧轴排列(折行显示)

justify-content 主轴排列方式

flex-start:默认左对齐

主轴水平→左对齐,主轴垂直→上对齐

justify-content: flex-start;

总代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.p{width: 500px;height: 300px;border: 2px solid black;margin-top: 50px;margin-left: 100px;/* 弹性布局 */display: flex;/* 水平向右排列(默认值) */flex-direction: row;flex-wrap: wrap;justify-content: space-evenly;}.s{width: 80px;height: 50px;background-color: aqua;}</style>
</head>
<body><!-- div.p>div{div$}.s*5 公式生成--><div class="p"><div class="s">div1</div><div class="s">div2</div><div class="s">div3</div><div class="s">div4</div><div class="s">div5</div></div></body>
</html>

flex-end:右对齐

主轴水平右对齐,主轴是垂直下对齐

justify-content: flex-start;

在这里插入图片描述

center:居中

主轴水平整体水平居中,主轴是垂直整体垂直居中

justify-content: center;

在这里插入图片描述

space-between:两端对齐

主轴水平,左右两端的子标记紧挨着父标记的边框,
主轴垂直,上下两端子标记紧挨着父标记的边框,子标记之间间距相等

justify-content: space-between;

在这里插入图片描述

在这里插入图片描述

space-around:子标记之间的间距是子标记与父标记边框之间的间距2倍

子标记之间的间距是子标记与父标记边框之间的间距2倍

justify-content: space-around;

在这里插入图片描述

space-evenly:间距平均

子标记之间的间距和子标记与父标记边框之间的间距相等

justify-content: space-evenly;

在这里插入图片描述

justify-content 侧轴排列方式

只需要在父标记中加上下面代码
根据上面主轴的显示效果,可以理解成把它们逆时针旋转90°

/* 侧轴排列 */
flex-direction: column;

比如说space-evenly:间距平均
子标记之间的间距和子标记与父标记边框之间的间距相等

justify-content: space-evenly;

在这里插入图片描述

align-items与align-content 侧轴排列方式

align-items侧轴排列方式:

lign-items:侧轴排列方式
flex-start:侧轴垂直上对齐,侧轴水平左对齐
flex-end:侧轴垂直下对齐,侧轴水平右对齐
center:侧轴垂直居中,侧轴水平居中
align-items: flex-start;垂直方向上这几个标记靠上方

【案例代码】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.p{width: 500px;height: 300px;border: 2px solid black;margin-top: 50px;margin-left: 100px;/* 弹性布局 */display: flex;/* 主轴方向 column主轴方向是垂直的,row主轴方向是水平的(行)*/flex-direction: row;flex-wrap: wrap;justify-content: flex-start;/* align-items,侧轴排列方式 */align-items: flex-start;}.s{width: 80px;height: 50px;background-color: aqua;}</style>
</head>
<body><!-- div.p>div{div$}.s*5 公式生成--><div class="p"><div class="s">div1</div><div class="s">div2</div><div class="s">div3</div><div class="s">div4</div><div class="s">div5</div></div></body>
</html>

在这里插入图片描述

align-items: flex-end;垂直方向侧轴靠下排列
在这里插入图片描述
align-items: center;垂直方向侧轴中间排列
在这里插入图片描述


align-content侧轴排列方式与align-items侧轴排列方式区别在于:多行显示时会看出效果

首先看一下

align-items: center; 
/* align-content: center; */

【案例代码】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.p{/* 此处把宽度改小,使其多行显示 */width: 200px;height: 300px;border: 2px solid black;margin-top: 50px;margin-left: 100px;/* 弹性布局 */display: flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;align-items: center; /* align-content: center; */}.s{width: 80px;height: 50px;background-color: aqua;}</style>
</head>
<body><!-- div.p>div{div$}.s*5 公式生成--><div class="p"><div class="s">div1</div><div class="s">div2</div><div class="s">div3</div><div class="s">div4</div><div class="s">div5</div></div></body>
</html>

每一行中都在中间
在这里插入图片描述

 /* align-items: center;  */align-content: center;

在这里插入图片描述

flex 子标记样式

前面的标记都放在了父标记中,只有flex是唯一一个安排在子标记中的样式

flex是弹性布局中唯一一个设置在子标记中的样式
flex:整数;子标记占据父标记尺寸空间的比例
flex: 0 0 整数px; 代表子标记固定的尺寸,【0 0】:不压缩不扩大,固定

第一种写法:子标记中写数字

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>.p{width: 400px;height: 200px;border: 2px green solid;/* 变弹性盒子 */display: flex;}.p>div{height: 100px;}.s1{background-color: red;flex: 1;}.s2{background-color: yellow;flex: 2;}.s3{background-color: blue;flex: 2;}</style>
</head>
<body><div class="p"><div class="s1"></div><div class="s2"></div><div class="s3"></div></div>
</body>
</html>

在这里插入图片描述
第二种写法:固定样式写法

这里以s1举例

        .s1{background-color: red;/* s1,固定150px */flex: 0 0 150px;}

flex: 0 0 整数px; 代表子标记固定的尺寸,【0 0】:不压缩不扩大,固定

输出效果:
s2和s3是125×100
在这里插入图片描述


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

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

相关文章

2018年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&#xff0c;题目常常看&a…

English Learning - L3 作业打卡 Lesson7 Day54 2023.6.29 周四

English Learning - L3 作业打卡 Lesson7 Day54 2023.6.29 周四 引言&#x1f349;句1: I daydreamed like I did as a little girl and I imagined myself walking gracefully, helping other people through my journey and snowboarding again.成分划分连读爆破语调 &#x…

mysql-数据迁移 及报错解决(ERROR 1290 (HY000)

文章目录 1. 物理迁移1. 迁移前&#xff0c;配置mysql的输出目录1. 查看mysql的输出目录2. 修改mysql的输出目录 2. 文件迁移 1. 物理迁移 1. 迁移前&#xff0c;配置mysql的输出目录 1. 查看mysql的输出目录 在安装MySQL的会限制了导入与导出的目录权限。只允许在规定的目录…

2-css-3

一 选择器 1 结构伪类选择器 作用&#xff1a;根据元素的结构关系查找元素。 选择器说明E:first-child查找第一个E元素E:last-child查找最后一个E元素E:nth-child(N)查找第N个E元素&#xff08;第一个元素N值为1&#xff09; li:first-child {background-color: green; }2 :…

一.《泽诺尼亚》背包物品数据分析和遍历

寻找突破口 1.首先寻找突破口,围绕一个“变”字去找 2.之前在别的课程中也给同学们说过,我们在找背包物品遍历,无非就是要先拿到物品对象 3.然而要拿到物品对象,必须先拿到物品属性,然后逆向分析拿到物品对象 4.那么问题来了, 怎么拿到物品属性呢&#xff1f; 5.这时候就要…

【⑤MySQL函数】:让你的数据库操作更高效(二)

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL日期时间、条件判断、系统信息、加密、进制转换和IP地址转换函数的讲解✨ 目录 前言一、日期和时间函数二、条件判断函数三、系统信息函数四、加密函数五、进制转换函数六、IP地址转换函数七、总结 一、日期和时…

Binder系列--ServiceManager的启动

ServiceManager的启动 hongxi.zhu Android 13 主要流程&#xff1a; 1. 启动ServiceManager进程 ServiceManager是由init(pid 1)进程启动的 system/core/rootdir/init.rc on init......# Start essential services.start servicemanager //framework层使用start hwservic…

iOS distribution发布证书过期或者被手动revoke了app会被下架吗?

在距离distribution 证书过期一个月&#xff08;或被手动revoke了&#xff09;的时候会受到apple的邮件 虽然distribution过期&#xff08;或者被手动revoke&#xff09;了&#xff0c;如果你的开发者账号是company&#xff08;公司&#xff09;类型或个人类型的&#xff0c;只…

【youcans动手学模型】MobileNet 模型-CIFAR10图像分类

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】MobileNet 模型-CIFAR10图像分类 1. MobileNet 卷积神经网络模型1.1 模型简介1.2 论文介绍 2. 在 PyTorch 中定义 MobileNet V1 模型类2.1 深度可分离卷积&#xff08;DSC&…

PHP 的 Logo 为什么是大象?

因为大象是世界上最好的动物。 当然&#xff0c;这只是开玩笑&#xff0c;那么为什么PHP的LOGO是大象呢&#xff1f;还有哪些关于PHP的LOGO的有趣的事情呢&#xff1f; 吉祥物-大象 ElePHPant 是一款可爱的 PHP 吉祥物&#xff0c;其设计中有一头大象。 最初的LOGO 1998 年…

高斯过程(Gaussian Process)回归预测,例子,代码及可视化展示

高斯过程指的是一组随机变量的集合&#xff0c;这个集合里面的任意有限个随机变量都服从联合正态分布。&#xff08;联合正态分布是指多个随机变量的联合分布满足正态分布。联合分布是指多个随机变量同时满足的概率分布&#xff0c;一个常见的例子是考虑两个随机变量&#xff1…

如何在 Spring Boot 中使用 WebMvc

如何在 Spring Boot 中使用 WebMvc 引言 Spring Boot 是一个快速、简单的开发框架&#xff0c;可以帮助我们快速地搭建一个基于 Spring 的 Web 应用程序。在 Spring Boot 中&#xff0c;我们可以使用 WebMvc 来构建 Web 应用程序。WebMvc 是 Spring 框架中的一个模块&#xf…