css实现响应式详解

一、媒体查询(Media Queries)

基本概念
媒体查询是 CSS3 中用于根据不同的设备特性(如屏幕宽度、高度、设备类型等)应用不同样式规则的技术。它允许你为特定的媒体类型(如屏幕、打印、手持设备等)和条件(如最小宽度、最大宽度等)定义样式。
例如,你可以为屏幕宽度小于 768px 的设备(通常是手机)定义一组样式,为屏幕宽度在 768px 到 1024px 之间的设备(平板电脑)定义另一组样式。
语法结构
媒体查询的基本语法如下:

@media media - type and (media - feature - rule) {
    /* CSS样式规则 */
}

其中,media - type可以是screen(用于屏幕设备)、print(用于打印设备)、handheld(用于手持设备)等。media - feature - rule是具体的媒体特性规则,如(max - width: 768px)表示最大宽度为 768px 的设备。
例如,以下代码会在屏幕宽度小于或等于 600px 时将背景颜色设置为蓝色:

@media screen and (max - width: 600px) {
    body {
        background - color: blue;
    }
}

常见的媒体特性
屏幕宽度相关
max - width:指定一个最大宽度值,当屏幕宽度小于或等于这个值时,媒体查询中的样式规则生效。例如,(max - width: 480px)适用于屏幕宽度不超过 480px 的设备,常用于为手机等小屏幕设备设计样式。
min - width:指定一个最小宽度值,当屏幕宽度大于或等于这个值时,样式规则生效。比如,(min - width: 768px)可以用于为平板电脑及更大屏幕设备设计样式。
屏幕高度相关(相对较少使用,但在某些场景下很有用)
max - height和min - height的作用与宽度相关特性类似,只是针对屏幕的高度。例如,在设计一个高度受限的弹出窗口或者全屏应用时,可以使用这些特性来确保样式在不同高度的屏幕上都能正常显示。
设备方向
orientation: portrait(纵向)和orientation: landscape(横向)可以根据设备的方向应用不同的样式。例如,在手机从纵向切换到横向时,可以改变布局,使内容更好地适应屏幕。

二、弹性布局(Flexbox)

基本概念
Flexbox 是一种用于在容器中布局子元素的 CSS 布局模型。它提供了一种灵活的方式来分配空间和对齐元素,使得布局能够更好地适应不同的屏幕尺寸。
使用 Flexbox,可以轻松地实现水平和垂直方向的对齐,以及子元素的自动缩放和排列。
关键属性
容器属性
display: flex:将一个元素设置为 Flex 容器。一旦设置为 Flex 容器,其内部的子元素(称为 Flex 项目)就可以使用 Flexbox 的布局规则进行排列。
flex - direction:用于指定 Flex 项目的排列方向。可以是row(水平方向,从左到右)、row - reverse(水平方向,从右到左)、column(垂直方向,从上到下)或column - reverse(垂直方向,从下到上)。
justify - content:用于在主轴(由flex - direction确定)上对齐 Flex 项目。常见的值有flex - start(默认值,项目向主轴起点对齐)、flex - end(项目向主轴终点对齐)、center(项目在主轴上居中对齐)、space - between(项目在主轴上均匀分布,两端对齐)和space - around(项目在主轴上均匀分布,每个项目两侧的间隔相等)。
align - items:用于在交叉轴(与主轴垂直的轴)上对齐 Flex 项目。值包括stretch(默认值,项目会拉伸以填充交叉轴方向的容器空间)、flex - start、flex - end和center。
项目属性
flex - grow:定义 Flex 项目在容器有剩余空间时的伸展比例。例如,如果有两个 Flex 项目,一个flex - grow为 1,另一个为 2,那么后者将占用剩余空间的三分之二,前者占用三分之一。
flex - shrink:与flex - grow相反,它定义了在容器空间不足时 Flex 项目的收缩比例。
flex - basis:用于指定 Flex 项目在分配多余空间或收缩之前的初始大小。它可以是一个长度值(如100px)或一个百分比。

三、网格布局(Grid Layout)

基本概念
CSS Grid 是一种二维布局系统,它允许你将页面划分为行和列,然后将元素放置在这些网格单元中。网格布局提供了强大的布局控制能力,能够创建复杂的页面布局,并且在响应式设计中也非常有用。
关键属性
容器属性
display: grid:将一个元素设置为网格容器。
grid - template - rows和grid - template - columns:用于定义网格的行和列的大小。例如,grid - template - rows: 100px 200px;表示网格有两行,第一行高度为 100px,第二行高度为 200px。grid - template - columns的用法类似。
grid - gap:用于设置网格单元之间的间隙大小。可以分别设置行间隙和列间隙,如grid - row - gap和grid - column - gap,也可以使用grid - gap同时设置行和列的间隙(grid - gap: 10px 20px;表示行间隙为 10px,列间隙为 20px)。
项目属性
grid - row - start、grid - row - end、grid - column - start和grid - column - end:这些属性用于指定项目在网格中的位置,即项目从哪一行 / 列开始,到哪一行 / 列结束。例如,grid - row - start: 2; grid - row - end: 4;表示项目跨越从第二行到第四行(不包括第四行)的网格单元。
grid - area:这是一个简写属性,可以同时指定项目的行和列位置。例如,grid - area: 2/1/4/3;表示项目从第二行第一列开始,到第四行第三列结束。

四、相对单位(如 vw、vh、% 等)

## vw 和 vh(视口单位)
vw(viewport width)表示视口宽度的 1%,vh(viewport height)表示视口高度的 1%。例如,如果一个元素的宽度设置为50vw,那么它的宽度将是视口宽度的 50%。
这些单位在创建全屏幕或基于视口比例的布局时非常有用。比如,你可以使用vh来设置一个元素的高度,使其始终占据屏幕高度的一定比例,这样在不同高度的屏幕上也能保持一致的视觉效果。
百分比(%)单位
百分比单位是相对于父元素的尺寸来计算的。例如,在一个容器中,如果一个子元素的宽度设置为50%,那么它的宽度将是父元素宽度的一半。
在响应式设计中,百分比单位可以用于创建灵活的布局。比如,在一个多列布局中,各列的宽度可以使用百分比来定义,这样当父容器的宽度发生变化时(如在不同屏幕尺寸下),列宽也会相应地调整。
em 和 rem:
em 是相对于元素的字体大小,rem 是相对于根元素(通常是 )的字体大小。使用它们可以创建基于字体大小的相对尺寸。
例如,font-size: 1.2em; 会使元素的字体大小为父元素字体大小的 1.2 倍;font-size: 1.2rem; 会使元素的字体大小为根元素字体大小的 1.2 倍。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core - 配置系统之自定义配置提供程序

ASP.NET Core - 配置系统之自定义配置提供程序 4. 自定义配置提供程序IConfigurationSourceIConfigurationProvider 4. 自定义配置提供程序 在 .NET Core 配置系统中封装一个配置提供程序关键在于提供相应的 IconfigurationSource 实现和 IConfigurationProvider 接口实现&…

MPLS原理及配置

赶时间可以只看实验部分 由来:90年代中期,互联网流量的快速增长。传统IP报文依赖路由器查询路由表转发,但由于硬件技术存在限制导致转发性能低,查表转发成为了网络数据转发的瓶颈。 因此,旨在提高路由器转发速度的MPL…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【327-337】

327. 断点调试(Debug) 一个实际需求 在开发中,程序员在查找错误时,可用断点模式在断点调试过程中,是运行状态,是以对象的运行类型来执行的。 A extends B; B b new A(); b.xx();//按照运行类型来执行的 …

Qt 各版本选择

嵌入式推荐用 Qt4.8,打包的程序小:Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的 最后支持xp系统的长期支持版本:Qt5.6.3;Qt5.7.0是最后支持xp系统的非长期支持版本。 最后提供mysql数据库插件的版本&#xf…

常见好用的PHP CMS开源系统有哪些?

开源的系统,网站大家估计也见过很多,尤其是用PHP写的开源系统也很受用户们欢迎,这类系统通常以简单、使用、开源为优势,为用户提供更好的服务。以下就为大家介绍几个常见且好用的PHP CMS开源系统。欢迎补充! 1、WordP…

DuckDB:精通Insert语句处理数据冲突

本文介绍DuckDB insert语句用法,包括常规的批量插入,尤其是插入数据冲突的处理,最后还提及returning子句的用法,每个用法提供示例说明。 insert插入数据 INSERT INTO向表中插入新行。可以插入由值表达式指定的一行或多行&#xf…

【spring mvc】文件上传、下载

文件上传,存储至本地目录中 一、代码1、工具类(敏感后缀过滤)2、文件上传,存储至本地3、文件下载 二、效果演示1、上传1.1、postMan 请求1.2、上传效果 2、下载2.1、下载效果 一、代码 1、工具类(敏感后缀过滤&#x…

Ansible实战:如何正确选择 command 和shell模块?

在使用Ansible进行自动化运维时,command 和 shell 模块是我们执行命令的好帮手。虽然它们看起来很相似,但在功能特性和适用场景上其实有着明显的不同。正确选择合适的模块不仅能够提高任务的效率,还能帮助我们规避一些潜在的风险。在这篇文章…

手撕Transformer -- Day7 -- Decoder

手撕Transformer – Day7 – Decoder Transformer 网络结构图 目录 手撕Transformer -- Day7 -- DecoderTransformer 网络结构图Decoder 代码Part1 库函数Part2 实现一个解码器Decoder,作为一个类Part3 测试 参考 Transformer 网络结构 Decoder 代码 Part1 库函数…

UI自动化测试:异常截图和page_source

自动化测试过程中,是否遇到过脚本执行中途出错却不知道原因的情况?测试人员面临的不仅是问题的复现,还有对错误的快速定位和分析。而异常截图与页面源码(Page Source)的结合,正是解决这一难题的利器。 在实…

Unity-Mirror网络框架-从入门到精通之RigidbodyBenchmark示例

文章目录 前言示例代码逻辑测试结论性能影响因素最后前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计,它…

【Unity3D】【已解决】TextMeshPro无法显示中文的解决方法

TextMeshPro无法显示中文的解决方法 现象解决方法Assets 目录中新建一个字体文件夹在C:\Windows\Fonts 中随便找一个中文字体的字体文件把字体文件拖到第一步创建的文件夹中右键导入的字体,Create---TextMeshPro---Font Asset,创建字体文件资源把 SDF文件…

走出实验室的人形机器人,将复刻ChatGPT之路?

1月7日,在2025年CES电子展现场,黄仁勋不仅展示了他全新的皮衣和采用Blackwell架构的RTX 50系列显卡,更进一步展现了他对于机器人技术领域,特别是人形机器人和通用机器人技术的笃信。黄仁勋认为机器人即将迎来ChatGPT般的突破&…

Docker PG流复制搭建实操

目录标题 制作镜像1. 删除旧的容器2. 创建并配置容器3. 初始化数据库并启动 主库配置参数4. 配置主库5. 修改 postgresql.conf 配置 备库配置参数6. 创建并配置备库容器7. 初始化备库 流复制8. 配置&检查主库复制状态9. 检查备库配置 优化建议问题1:FATAL: usin…

【Flink】Flink内存管理

Flink内存整体结构图: JobManager内存管理 JVM 进程总内存(Total Process Memory)Flink总内存(Total Flink Memory):JVM进程总内存减去JVM Metaspace(元空间)和JVM Overhead(运行时开销)上图解释: JVM进程总内存为2G;JVM运行时开销(JVM Overh…

Flink系统知识讲解之:Flink内存管理详解

Flink系统知识讲解之:Flink内存管理详解 在现阶段,大部分开源的大数据计算引擎都是用Java或者是基于JVM的编程语言实现的,如Apache Hadoop、Apache Spark、Apache Drill、Apache Flink等。Java语言的好处是不用考虑底层,降低了程…

VM(虚拟机)和Linux的安装

文章目录 1.虚拟机1.1 VM的安装和删除1.1.1 安装前提1.1.2 安装步骤 1.2 虚拟机快照1.3 虚拟机的克隆 2.Linux的安装2.1 CentOS2.2 Ubuntu 1.虚拟机 (1)Linux系统的安装方式 ①物理机安装:直接将操作系统安装到服务器硬件上 ②虚拟机安装&am…

Unity中实现倒计时结束后干一些事情

问题描述:如果我们想实现在一个倒计时结束后可以执行某个方法,比如挑战成功或者挑战失败,或者其他什么的比如生成boss之类的功能,而且你又不想每次都把代码复制一遍,那么就可以用下面这种方法。 结构 实现步骤 创建一…

citrix netscaler13.1 重写负载均衡响应头(基础版)

在 Citrix NetScaler 13.1 中,Rewrite Actions 用于对负载均衡响应进行修改,包括替换、删除和插入 HTTP 响应头。这些操作可以通过自定义策略来完成,帮助你根据需求调整请求内容。以下是三种常见的操作: 1. Replace (替换响应头)…

新垂直电商的社交传播策略与AI智能名片2+1链动模式S2B2C商城小程序的应用探索

摘要:随着互联网技术的不断进步和电商行业的快速发展,传统电商模式已难以满足消费者日益增长的个性化和多元化需求。新垂直电商在此背景下应运而生,通过精准定位、用户细分以及深度社交传播策略,实现了用户群体的快速裂变与高效营…