【前端】CSS3弹性布局、媒体查询实现响应式布局和自适应布局

news2024/12/27 13:59:52

文章目录

    • 弹性布局
      • 基本概念
      • 容器(container)的属性
      • 容器成员(item)的属性
    • 媒体查询
      • 响应式布局
      • 自适应布局
    • 参考

弹性布局

基本概念

任何一个容器都可以指定为 Flex 布局。

display:flex;

行内元素也可以:

display:inline-flex;

Webkit内核的浏览器,要加上-webkit前缀。

display:-webkit-flex;

采用了flex布局的元素称为“容器”,里面的子元素成为元素成员,称为“项目”(item)。

容器有两根轴:

  • 水平的主轴(开始位置:与边框的交叉点)
  • 竖直的交叉轴

紫色是主轴,绿色是交叉轴:

容器(container)的属性

容器的属性:

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex-direction:决定主轴的方向,即元素里的成员item排列的方向。

flex-direction: row | row-reverse | column | column-reverse;
  • row(默认值):主轴为水平方向,从左到右
  • row-reverse:主轴为水平方向,从右到左
  • column:主轴为垂直方向,从上到下
  • column-reverse:主轴为垂直方向,从下到上

flex-wrap:决定项目是否可以换行

flex-wrap: nowrap | wrap | wrap-reverse;
  • 默认不换行nowrap
  • wrap:换行
  • wrap-reverse:换行,第一行在下方,从左到右,从下往上

在这里插入图片描述

一般使用wrap:

在这里插入图片描述

flex-flow:flex-direction和flex-wrap的简写。默认:row nowrap,即item水平排列且不换行。

justify-content:主轴上的对齐方式(默认从左到右怎么对齐)

justify-content: flex-start | flex-end | center | space-between | space-around;

即:靠左|靠右|居中|两端靠边(between)间隔平均排列|两端不靠边(around)间隔平均排列

在这里插入图片描述

align-items:交叉轴如何对齐。

注意:交叉轴默认上是起点。

align-items: flex-start | flex-end | center | baseline | stretch;

即:从上往下|从下往上|居中|第一行文字的基线对齐(baseline)|item铺满整个容器(默认,item未设置高度或auto)

在这里插入图片描述

align-content:多根轴线的对齐方式。若只有一根轴线,此属性无效。

align-content: flex-start | flex-end | center | space-between | space-around | stretch;

即:靠上|靠下|居中| 贴边(between) 间隔平均分布| 不贴边(around) 间隔平均分布(轴线之间的间隔>轴线与边界的间隔)

在这里插入图片描述

容器成员(item)的属性

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

order:项目的排列顺序。数值越小,此项目排列越靠前。默认为0.

.item {
  order: <integer>;
}

flex-grow:定义项目的放大比例,默认为0.

.item {
  flex-grow: <number>; /* default 0 */
}

举例理解:

若所有项目的flex-grow属性都为1,则它们等分剩余空间(如有);若有一个项目的flex-grow属性为2,其他为1,则此项目所占据的剩余空间是其他的2倍。

flex-shrink属性:定义项目的缩小比例,默认为1,即:若空间不足则缩小。

.item {
  flex-shrink: <number>; /* default 1 */
}

举例理解:

若所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。若有一项目flex-shrink属性为0,其他为1,则为0的不缩小。

负值无效。

flex-basis:在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据此属性,计算主轴是否还有多余空间。默认为auto,即项目本身的大小。

.item {
  flex-basis: <length> | auto; /* default auto */
}

小技巧:可以设为跟width或height属性一样的值,则项目将占据固定的空间。

flex:为flex-grow、flex-shrink、flex-basis的简写,默认为:0,1,auto,即:不放大,(若需要)等比例缩小,项目占据主轴的空间为项目本身大小。

align-self:允许单个项目与其他项目不一样的对齐方式,可覆盖align-items属性。默认为auto,即继承父元素的align-items。若无父元素,则等同于stretch(align-items的默认值)。

媒体查询

响应式布局

浏览器需要以下代码才能响应式布局:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">

前端笔记:媒体查询和响应式布局_Naisu Xu的博客-CSDN博客

自适应布局

这可能是史上最全的CSS自适应布局总结教程 - 茄果 - 博客园 (cnblogs.com)

自适应布局方案 - 掘金 (juejin.cn)

参考

Flex 布局教程:语法篇 - 阮一峰的网络日志 (ruanyifeng.com)

Flex 布局教程:实例篇 - 阮一峰的网络日志 (ruanyifeng.com)

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

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

相关文章

Apollo规划模块代码学习(2): 轨迹规划流程理论基础详解(lane follow场景为例)

文章目录1、轨迹规划基础2、Frenet坐标系3、路径规划和速度规划4、轨迹优化&#xff08;QP过程&#xff09;5、规划流程(lane follow场景为例)1、规划模块流程2、Apollo中各场景3、Lane_follow场景中task本文以具体场景Lane follow为例梳理具体的轨迹规划算法流程。详细介绍轨迹…

关于selenium的等待

目录 隐式等待 显式等待 注意事项 隐式等待 简单来说&#xff1a;在规定的时间范围内&#xff0c;轮询等待元素出现之后就立即结束。 如果在规定的时间范围内&#xff0c;元素仍然没有出现&#xff0c;则会抛出一个异常【NoSuchElementException】&#xff0c;脚本停止运行…

【Linux学习笔记】2.Linux 系统启动过程及系统目录结构

前言 本章介绍Linux的系统启动过程和系统目录结构。 Linux 系统启动过程 linux启动时我们会看到许多启动信息。 Linux系统的启动过程并不是大家想象中的那么复杂&#xff0c;其过程可以分为5个阶段&#xff1a; 内核的引导。运行 init。系统初始化。建立终端 。用户登录系…

【ARM架构】armv8 系统安全概述

ARMv8-A 系统中的安全 一个安全或可信的操作系统保护着系统中敏感的信息&#xff0c;例如&#xff0c;可以保护用户存储的密码&#xff0c;信用卡等认证信息免受攻击。 安全由以下原则定义&#xff1a; 保密性&#xff1a;保护设备上的敏感信息&#xff0c;防止未经授权的访问…

C#值传递、引用传递、输出传递详解

C#值传递、引用传递、输出传递详解1、值传递2、引用传递3、输出传递4、ref 和 out导读&#xff1a; 1&#xff0c;值传递时&#xff0c;为什么被调用的方法中的形参值的改变不会影响到相应的实参&#xff1f; 答&#xff1a;因为按值传递时&#xff0c;系统首先为被调用的方法的…

高级信息系统项目管理(高项 软考)原创论文——风险管理(2)

1、如果您想了解如何高分通过高级信息系统项目管理师(高项)你可以点击一下链接: 高级信息系统项目管理师(高项)高分通过经验分享_高项经验 2、如果您想了解更多的高级信息系统项目管理(高项 软考)原创论文,您可以点击以下链接: 高级信息系统项目管理(高项 软考)原创论文…

mqtt协议1- 简介和报文格式

文章目录1.mqtt协议1: 简介和报文格式1.1.MQTT概念1.2.数据2.控制报文格式2.1.MQTT数据包结构2.2.固定头2.2.1.控制报文类型2.2.2.标志FLag2.2.3.剩余长度2.3.可变头2.4.有效载荷Payload消息体安全QoS(Quality of Service levels)ref:1.mqtt协议1: 简介和报文格式 Message Que…

c语言机试练习

1.打印日期 给出年分m和一年中的第n天&#xff0c;算出第n天是几月几号。 输入描述&#xff1a; 输入包括两个整数y(1<y<3000)&#xff0c;n(1<n<366)。 输出描述&#xff1a; 可能有多组测试数据&#xff0c;对于每组数据&#xff0c; 按 yyyy-mm-dd的格式将输入中…

51单片机入门 - 驱动多位数码管

我使用的是普中51单片机开发板A2套件&#xff08;2022&#xff09;&#xff0c;驱动数码管可能需要参考电路原理图。开发环境的搭建教程在本专栏的 51单片机开发环境搭建 - VS Code 从编写到烧录 有过介绍。 关于我的软硬件环境信息&#xff1a; Windows 10STC89C52RCSDCC &am…

HTML 基础【快速掌握知识点】

目录 一、什么是HTML&#xff1f; 二、HTML的发展史 三、HTML5的优势 四、HTML基本结构 五、DOCTYPE声明 六、title标签 七、meta标签 八、标题标签 九、段落标签 十、换行标签 十一、水平线标签 十二、字体样式标签 十三、特殊符号 十四、图像标签 十五、链接标…

JavaScript 进阶--charater3

文章目录前言一、编程思想1.1 面向过程介绍1.2 面向对象编程 (oop)对比二、构造函数三、原型3.1原型3.2 constructor 属性3.3 对象原型3.4 原型继承3.5 原型链总结前言 &#x1f191;学习目标 理解面向对象思想&#xff0c;掌握函数原型对象运用面向对象封装继承特点&#xf…

腾讯开源的 hel 提供了加载远程模块的能力,谈谈它的实现原理

腾讯开源的 hel&#xff0c;提供了一种运行时引入远程模块的能力&#xff0c;模块部署在 CDN&#xff0c;远程模块发布后&#xff0c;不需要重新构建发布&#xff0c;就能生效。 个人觉得它的实现原理非常的不错&#xff0c;因此分享给大家。 远程模块可以作为微模块&#xf…

Jenkins利用docker部署vue项目

Jenkins利用docker部署vue项目一、环境准备1、安装docker2、安装nodejs3、安装cnpm与配置淘宝镜像4、jenkins安装nodejs插件二、jenkins以vue项目1、全局参数配置2、源码配置3、构建环境4、构建三、构建项目四、访问一、环境准备 本次jenkins与部署vue项目在同一台机器&#x…

RocketMQ5.0.0的Broker主从同步机制

目录 一、主从同步工作原理 1. 主从配置 2. 启动HA 二、主从同步实现机制 1. 从Broker发送连接事件 2. 主Broker接收连接事件 3. 从Broker反馈复制进度 4. ReadSocketService线程读取从Broker复制进度 5. WriteSocketService传输同步消息 6. GroupTransferService线程…

【每日一题Day127】LC1238循环码排列 | 格雷码构造 位运算

格雷码 看到题目就想到了格雷码 然后就疯狂搜索格雷码 手动构造了一波格雷码 看了题解 emmm 有点亏 理论基础 n 位格雷码序列 是一个由 2n 个整数组成的序列&#xff0c;其中&#xff1a; 每个整数都在范围 [0, 2n - 1] 内&#xff08;含 0 和 2n - 1&#xff09;第一个整数是…

深度学习之“制作自定义数据”--torch.utils.data.DataLoader重写构造方法。

深度学习之“制作自定义数据”–torch.utils.data.DataLoader重写构造方法。 前言&#xff1a; ​ 本文讲述重写torch.utils.data.DataLoader类的构造方法&#xff0c;对自定义图片制作类似MNIST数据集格式&#xff08;image, label&#xff09;&#xff0c;用于自己的Pytorc…

大数据Hadoop教程-学习笔记04【数据仓库基础与Apache Hive入门】

视频教程&#xff1a;哔哩哔哩网站&#xff1a;黑马大数据Hadoop入门视频教程 总时长&#xff1a;14:22:04教程资源: https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g 提取码: 6666【P001-P017】大数据Hadoop教程-学习笔记01【大数据导论与Linux基础】【17p】【P018-P037】大…

Spring boot开启定时任务的三种方式(内含源代码+sql文件)

Spring boot开启定时任务的三种方式&#xff08;内含源代码sql文件&#xff09; 源代码sql文件下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87486580 目录Spring boot开启定时任务的三种方式&#xff08;内含源代码sql文件&#xff09;源代码…

【无人机】回波状态网络(ESN)在固定翼无人机非线性控制中的应用(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

前端常见手写面试题集锦

实现迭代器生成函数 我们说迭代器对象全凭迭代器生成函数帮我们生成。在ES6中&#xff0c;实现一个迭代器生成函数并不是什么难事儿&#xff0c;因为ES6早帮我们考虑好了全套的解决方案&#xff0c;内置了贴心的 生成器 &#xff08;Generator&#xff09;供我们使用&#xff…