”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > AtoZ CSS: 用媒体查询打造响应式设计

AtoZ CSS: 用媒体查询打造响应式设计

发布于2025-04-10
浏览:831

AtoZ CSS: Creating Responsive Design with Media Queries

关键要点

  • 避免在创建响应式设计时使用特定设备的断点。相反,设置主要断点和次要微调点,这些断点大约是大多数手机、平板电脑和台式/笔记本电脑设备的尺寸。
  • 使用 em 或 rem 作为断点单位,而不是像素,以获得更好的可伸缩性。如果用户缩放页面或增加文本大小,这将有所帮助。
  • CSS 媒体查询是创建响应式设计的强大工具。它们允许您为具有不同屏幕尺寸的不同设备应用不同的样式。但是,避免使用它们来定位特定设备,因为这会导致维护噩梦。相反,专注于创建适用于所有屏幕尺寸的响应式设计。

本文是 AtoZ CSS 系列的一部分。在此处查看媒体查询的完整屏幕截图和成绩单。

欢迎来到我们的 AtoZ CSS 系列!在本系列中,我将探索不同的 CSS 值(和属性),每个值都以字母表的不同字母开头。我们知道,有时屏幕截图是不够的,因此在本文中,我添加了一个关于媒体查询的新快速提示/课程。 AtoZ CSS: Creating Responsive Design with Media Queries

M 代表媒体查询

我猜想,绝大多数网页设计师和开发人员如今都熟悉响应式设计的概念。如果不是,请查看媒体查询屏幕截图。

由于响应式设计非常流行,因此这是一个学习一些技巧的好地方,这些技巧可以改进我们为多种设备开发网站和应用程序的方式。以下是一些 CSS 提示,可以帮助您。

技巧 1:不要使用特定设备的断点

希望这不用说,但以防万一您需要提醒或以前没有遇到过这种最佳实践,我认为值得重申一下。

特定设备的断点很容易在您的代码中通过如下所示的媒体查询识别(添加注释以提高清晰度):

/* ipad 纵向 */
@media screen and (min-width: 768px;) {}

/* ipad 横向 */
@media screen and (min-width: 1024px;) {}

/* iphone */
@media screen and (min-width: 320px) and (max-width: 480px;) {}

这些断点已针对 Apple 设备设置,并具有“神奇数字”值,例如 768px 或 1024px。

如果用户的窗口是 1025px 或 1023px 怎么办?

媒体查询将不会生效,并且该设备尺寸的样式将不会应用。

有时您可能需要断点的非常具体的数值(稍后会详细介绍),但在我看来,看到这些特定设备的断点是一种代码异味。

那么你应该怎么做呢?

技巧 2:设置主要断点和次要微调点

在响应式项目上工作时,我倾向于设置任意整数断点,这些断点大约是大多数手机、平板电脑和台式/笔记本电脑设备的尺寸。

我倾向于使用以下主要断点(尽管有时这可能会根据项目而有所更改):

/* 大手机和小平板 */
@media screen and (min-width: 500px;) {}

/* 平板电脑和小显示器 */
@media screen and (min-width: 800px;) {}

/* 笔记本电脑和台式机 */
@media screen and (min-width: 1200px;) {}

使用这些断点不会将设计限制为仅在这些点处更改,而是为使用三种主要设备类型提供良好的基础。

对于基于内容的设计调整(即:当内容开始看起来损坏、不平衡或不太适合时),您可以使用微调点来调整元素并润色项目的细节。

/* 调整共享按钮的位置 */
@media screen and (min-width: 1150px;) {
  margin-right: 1em;
}

技巧 3:使用 em 或 rem 作为断点单位

不要使用 px,而是使用这些相对单位之一,以便如果用户缩放页面或增加文本大小,可以获得更好的可伸缩性。例如,当我使用 em 单位进行大小调整时,上面的主要断点如下所示。

/* 500px / 16px = 31.25em */
@media screen and (min-width: 31.25em;) {}

/* 800px / 16px = 50em */
@media screen and (min-width: 50em;) {}

/* 1200px / 16px = 75em */
@media screen and (min-width: 75em;) {}

关于 CSS 媒体查询和断点的常见问题解答 (FAQ)

什么是设置 CSS 断点的最佳实践?

CSS 断点对于创建响应式设计至关重要。它们允许布局在预定义点处更改,即为不同屏幕尺寸提供不同的布局。设置 CSS 断点的最佳实践包括首先从移动布局开始,然后逐步向上工作。还建议使用 em 或 rem 单位而不是像素作为断点,因为它们更灵活且更易于访问。最后,避免使用过多的断点。坚持使用移动设备、平板电脑和台式机的标准尺寸。

如何将 CSS 媒体查询用于响应式设计?

CSS 媒体查询是创建响应式设计的强大工具。它们允许您为具有不同屏幕尺寸的不同设备应用不同的样式。您可以使用 @media 规则、媒体功能的条件(如 max-widthmin-width)以及您想要应用的 CSS 样式在 CSS 中使用它们。

响应式设计的标准 CSS 断点是什么?

响应式设计的标准 CSS 断点通常如下:移动设备为 320px,平板电脑纵向为 768px,平板电脑横向和小台式机为 1024px,大台式机为 1200px。但是,这些并非硬性规定,可以根据设计的具体需求进行调整。

如何测试我的 CSS 断点?

您可以使用浏览器中的检查工具来测试您的 CSS 断点。此工具允许您模拟不同的屏幕尺寸并查看您的布局如何响应。此外,您可以使用 BrowserStack 或响应式设计测试网站等在线工具在不同的设备和屏幕分辨率上进行测试。

我可以使用 CSS 媒体查询来定位特定设备吗?

是的,您可以使用 CSS 媒体查询来定位特定设备。但是,通常不建议这样做,因为它会导致维护噩梦。相反,专注于创建适用于所有屏幕尺寸的响应式设计。

如何使用 CSS 媒体查询更改字体大小?

您可以使用 CSS 媒体查询根据屏幕尺寸更改字体大小。例如,您可能希望为更大的屏幕增加字体大小以提高可读性。您可以通过定义具有所需屏幕尺寸的媒体查询,然后设置新的字体大小来实现此目的。

CSS 媒体查询中的 min-widthmax-width 有什么区别?

CSS 媒体查询中的 min-widthmax-width 指的是媒体查询内的样式将应用的最小和最大视口大小。min-width 用于为大于指定值的任何视口大小应用样式,而 max-width 用于为小于或等于指定值的任何视口大小应用样式。

我可以将 CSS 媒体查询与 JavaScript 一起使用吗?

是的,您可以使用 window.matchMedia() 方法将 CSS 媒体查询与 JavaScript 一起使用。此方法返回一个 MediaQueryList 对象,该对象表示指定 CSS 媒体查询字符串的结果,然后可以使用它根据屏幕大小应用不同的 JavaScript 功能。

如何使用 CSS 媒体查询处理高分辨率屏幕?

您可以使用分辨率媒体功能使用 CSS 媒体查询处理高分辨率屏幕。此功能允许您根据屏幕的像素密度应用样式。例如,您可能希望为高密度屏幕提供更高分辨率的图像,以确保它们看起来清晰锐利。

我可以使用 CSS 媒体查询检测暗模式吗?

是的,您可以使用 CSS 媒体查询来检测用户是否将其系统设置为暗模式。您可以使用 prefers-color-scheme 媒体功能来实现此目的。此功能允许您根据用户的首选颜色方案(即浅色或深色)应用不同的样式。

最新教程 更多>
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-04-16
  • 在Python中查找MIME类型的方法及技巧
    在Python中查找MIME类型的方法及技巧
    在python Python provides a range of options for obtaining MIME types:python-magic:python-magic is a highly regarded library for handling file analysis...
    编程 发布于2025-04-16
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-04-16
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-04-16
  • input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It?

output: 解决“Warning: mysqli_query() 参数应为 mysqli 而非 resource”错误的解析与修复方法
    input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It? output: 解决“Warning: mysqli_query() 参数应为 mysqli 而非 resource”错误的解析与修复方法
    mysqli_query()期望参数1是mysqli,resource给定的,尝试使用mysql Query进行执行MySQLI_QUERY_QUERY formation,be be yessqli:sqli:sqli:sqli:sqli:sqli:sqli: mysqli,给定的资源“可能发...
    编程 发布于2025-04-16
  • 将字符串形式的列表转换为列表对象的方法
    将字符串形式的列表转换为列表对象的方法
    将列表的字符串表示形式转换为列表在使用类似列表的字符串时,必须将它们转换为实际列表对象以进行进一步处理。本文提供了一个全面的解决方案,解决了以下问题:如何将列表表示字符串表示为列表对象?水果=“ ['苹果','橙色','Banana']” 导入 水果...
    编程 发布于2025-04-16
  • 如何使用不同数量列的联合数据库表?
    如何使用不同数量列的联合数据库表?
    合并列数不同的表 当尝试合并列数不同的数据库表时,可能会遇到挑战。一种直接的方法是在列数较少的表中,为缺失的列追加空值。 例如,考虑两个表,表 A 和表 B,其中表 A 的列数多于表 B。为了合并这些表,同时处理表 B 中缺失的列,请按照以下步骤操作: 确定表 B 中缺失的列,并将它们添加到表的末...
    编程 发布于2025-04-16
  • 如何处理PHP文件系统功能中的UTF-8文件名?
    如何处理PHP文件系统功能中的UTF-8文件名?
    在PHP的Filesystem functions中处理UTF-8 FileNames 在使用PHP的MKDIR函数中含有UTF-8字符的文件很多flusf-8字符时,您可能会在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    编程 发布于2025-04-16
  • JavaScript事件处理中如何保留实例作用域:通过变量别名捕获“this”
    JavaScript事件处理中如何保留实例作用域:通过变量别名捕获“this”
    在事件处理程序中的acpoping:javascript中的“ this” conundrum 在JAVAScript中,实例方法用作事件处理程序可以导致求程问题。当触发事件处理程序时,“此”的范围从预期的实例转移到调用回调的元素。这需要使用变量来“捕获”并维护实例的范围。声明“自我”变量以使“别...
    编程 发布于2025-04-16
  • .NET XML序列化中如何控制命名空间前缀?
    .NET XML序列化中如何控制命名空间前缀?
    .NET XML序列化:命名空间前缀控制 .NET 提供两种主要的 XML 序列化机制:DataContractSerializer 和 XmlSerializer。然而,它们默认生成的命名空间前缀由内部机制管理,这限制了自定义前缀的需求。 利用 XmlSerializerNamespaces 若...
    编程 发布于2025-04-16
  • 在Matplotlib中如何创建可重用的AxesSubplot对象?
    在Matplotlib中如何创建可重用的AxesSubplot对象?
    在matplotlib 从图实例中解除AxessSubplot创建的情况,人们可以将传递轴实例的功能考虑到函数。例如: def plot(x,y,ax = none): 如果斧头没有: ax = plt.gca()#获取当前轴实例(默认) ax.plot(x,y,&...
    编程 发布于2025-04-16
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-04-16
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-04-16
  • Java静态初始化块使用时机及原因
    Java静态初始化块使用时机及原因
    在Java中理解静态初始化块,静态初始化块提供了一种特殊的机制,可以在类中初始化静态字段。静态字段仅初始化一次,并在类的所有实例中共享相同的值。虽然可以在声明中的静态字段中分配值,但在某些情况下,这种方法是不切实际的。为什么使用静态初始化障碍?在其声明点上无法确定静态字段的值。例如,想象一下您的字...
    编程 发布于2025-04-16
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能在使用内容属性引用时未能显示图像的情况。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-04-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3