响应式CSS 媒体查询——WEB开发系列39

news2024/11/15 12:02:28

CSS媒体查询(Media Queries)是响应式设计中的核心技术之一,帮助我们在不同设备上展示不同的样式。通过媒体查询,开发者可以检测用户设备的特性,如屏幕宽度、高度、分辨率、方向等,针对性地调整网页布局。


一、CSS媒体查询基础

1.1 什么是媒体查询?

媒体查询是CSS3引入的一种技术,允许开发者根据用户的设备特性应用不同的样式规则。它不仅可以检测设备的类型,还能检查诸如设备宽度、高度、分辨率等特性。通过媒体查询,可以实现同一页面在不同设备上呈现不同的布局。


1.2 媒体类型(Media Types)

媒体类型是媒体查询中的基础,它定义了应用媒体查询的设备类型。常见的媒体类型包括以下几种:

  • all:适用于所有设备,不限制设备类型。这是默认的媒体类型,即如果没有指定其他类型,媒体查询将应用于所有设备。
  • print:用于打印机或打印预览时应用的样式。这种媒体类型在设计打印样式时非常有用,可以确保页面在打印时格式正确,隐藏一些不必要的内容,如导航栏等。
  • screen:专为屏幕设备设计的样式,适用于电脑、平板、手机等显示屏幕的设备。
  • speech:用于屏幕阅读器等有声设备,帮助为语音输出设备提供优化样式。

示例:

/* 适用于所有设备 */
@media all {
    body {
        font-size: 16px;
    }
}

/* 适用于屏幕设备 */
@media screen {
    body {
        background-color: #f4f4f4;
    }
}

/* 适用于打印机 */
@media print {
    body {
        color: black;
    }
}

1.3 媒体特征规则(Media Features)

媒体特征是媒体查询的核心部分,允许开发者根据设备的特性应用样式。常见的媒体特征包括设备的宽度、高度、分辨率和方向等。以下是几个关键的媒体特征:


1.3.1 宽度和高度(Width & Height)

​width​​和​​height​​​分别表示设备视口的宽度和高度,这两个特征通常用于针对不同设备的尺寸调整布局。例如,手机的屏幕较窄,通常需要在窄屏设备上显示单列布局,而宽屏设备可以显示多列布局。

/* 适用于视口宽度大于等于768px的设备 */
@media screen and (min-width: 768px) {
    body {
        font-size: 18px;
    }
}

/* 适用于视口宽度小于768px的设备 */
@media screen and (max-width: 768px) {
    body {
        font-size: 16px;
    }
}
1.3.2 朝向(Orientation)

​orientation​​媒体特征用于检测设备的屏幕朝向,分为​​portrait​​(竖屏)和​​landscape​​​(横屏)。这对于处理移动设备的屏幕旋转非常有用。

/* 适用于竖屏设备 */
@media screen and (orientation: portrait) {
    body {
        background-color: lightblue;
    }
}

/* 适用于横屏设备 */
@media screen and (orientation: landscape) {
    body {
        background-color: lightcoral;
    }
}
1.3.3 使用指点设备(Pointer)

​pointer​​媒体特征用于检测用户是否使用了指点设备(如鼠标、触控笔)。它有三个可能的值:

  • none:表示设备没有指点能力。
  • coarse:表示设备使用粗略的指点设备,如手指。
  • fine:表示设备使用精确的指点设备,如鼠标。
/* 适用于使用精确指点设备的设备,如鼠标 */
@media (pointer: fine) {
    body {
        cursor: pointer;
    }
}

/* 适用于使用粗略指点设备的设备,如手指 */
@media (pointer: coarse) {
    body {
        cursor: default;
    }
}

二、更复杂的媒体查询

CSS媒体查询不仅可以通过单一特征进行判断,还可以通过逻辑运算符构建更加复杂的查询条件。下面将介绍如何通过“与”、“或”和“非”逻辑组合媒体查询。


2.1 媒体查询中的“与”逻辑(​​and​​)

​and​​​运算符允许开发者组合多个媒体特征,只有当所有特征条件都满足时,样式才会生效。例如,我们可以同时检测设备的宽度和屏幕朝向,只有当设备宽度大于768px且为竖屏时,才应用特定的样式。

/* 适用于宽度大于等于768px且为竖屏的设备 */
@media screen and (min-width: 768px) and (orientation: portrait) {
    body {
        background-color: lightgreen;
    }
}

2.2 媒体查询中的“或”逻辑(​​or​​)

​or​​​运算符可以通过多个查询条件中的任意一个满足条件时应用样式。通过逗号分隔多个条件实现“或”逻辑。

/* 适用于宽度大于等于1024px的设备或横屏设备 */
@media screen and (min-width: 1024px), screen and (orientation: landscape) {
    body {
        background-color: lightyellow;
    }
}

2.3 媒体查询中的“非”逻辑(​​not​​)

​not​​​运算符用于排除某些条件,即当条件不满足时应用样式。

/* 不适用于屏幕设备 */
@media not screen {
    body {
        display: none;
    }
}

三、如何选择断点

断点是媒体查询中定义不同样式的关键点。选择合理的断点可以确保网页在各种设备上表现良好。一般情况下,断点应基于内容,而非设备。常见的做法是根据内容的布局需求设定断点,而不是针对具体设备型号。


3.1 常用断点示例

/* 小屏设备(如手机) */
@media screen and (max-width: 600px) {
    body {
        font-size: 14px;
    }
}

/* 中等屏设备(如平板) */
@media screen and (min-width: 601px) and (max-width: 1024px) {
    body {
        font-size: 16px;
    }
}

/* 大屏设备(如桌面) */
@media screen and (min-width: 1025px) {
    body {
        font-size: 18px;
    }
}

3.2 内容优先原则

选择断点时,应遵循内容优先原则,即根据网页的内容来确定何时需要更改布局。例如,当一个多列布局在较窄的屏幕上变得难以阅读时,这就是一个适合定义断点的时机。


四、移动优先的响应式设计

移动优先(Mobile First)是现代响应式设计的基本理念,指的是首先为移动设备设计页面样式,然后通过媒体查询为更大屏幕设备添加样式。这种设计方式确保页面在小屏设备上的加载和展示更高效,适合当前移动设备用户量大幅增长的趋势。

4.1 移动优先的媒体查询

在移动优先设计中,我们通常使用​​min-width​​​媒体查询,即默认样式适用于所有设备,然后通过断点逐步为更大屏幕的设备添加样式。​

/* 默认样式适用于移动设备 */
body {
    font-size: 14px;
}

/* 适用于平板和桌面设备 */
@media screen and (min-width: 768px) {
    body {
        font-size: 16px;
    }
}

/* 适用于桌面设备 */
@media screen and (min-width: 1024px) {
    body {
        font-size: 18px;
    }
}

可以看到移动设备优先设计的思想,即所有设备默认使用小屏设备的样式,然后针对更大的屏幕逐步增强样式。


如有表述错误及欠缺之处敬请指正补充。

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

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

相关文章

「数组」十大排序:精讲与分析(C++)

概述 截止目前,我们已经讲解并分析了十种最常见的排序算法,下附对应文章链接和全体Code。 链接 「数组」冒泡排序|选择排序|插入排序 / 及优化方案(C) 「数组」归并排序 / if语句优化|小区间插入优化(C&#xff09…

使用Jlink给AT32下载程序

点击下载之后选择target device,这里我使用的是AT32F403ACGT7,M4内核,就选择Cortex-M4. 如果已经选过了,但不知道选没选对,就把ini文件删除即可再次进行选择。 我这里使用SW接线方式,选好后立马识别出来了…

Java【集合】

一、集合的概述 集合建立在数组基础上,主要位于java.util包中,用来存储Java类对象,并且可以实现各种数据结构。 集合大小可以改变,可以存放不同数据类型数据。集合不能存放基本类型数据,只能存放引用数据类型数据。集…

浅谈树型结构——树

文章目录 一、什么是树?二、树的特点三、树的概念四、树的表示形式五、树的应用 一、什么是树? 树是一种 非线性 的数据结构,是树型结构。是一个由n个有限结点组成的一个具有层次关系的集合,这种集合因为看起来像一颗倒挂的树&am…

测试-Gatling 与性能测试

Gatling 与性能测试详解 一、什么是性能测试? 性能测试是一种软件测试类型,旨在评估系统在负载下的响应时间、吞吐量和资源利用率等性能指标。通过性能测试,开发者和运维团队能够识别出系统的瓶颈、优化系统性能,并确保其在实际…

鸿蒙之Hello Word 遇坑总结 mac系统 不能预览 提示 Only files in a module can be previewed 解决办法

顺时代, 应潮流 !鸿蒙崛起不可阻挡, 鸿蒙开发大有可为, 万丈高楼平地起,学编程的第一步当然是Hello World起,请看 第一步是下载 编辑器,直接官网 文档中心下载对应的系统版本安装,…

用nginx-rtmp-win32-master及ffmpeg模拟rtmp视频流

效果 使用nginx-rtmp-win32-master搭建RTMP服务 双击exe就可以了。切记整个目录不能有中文 README.md ,启用后本地的RTM路径: rtmp://192.168.1.186/live/xxx ffmpeg将地本地视频推RMTP F:\rtsp\ffmpeg-7.0.2-essentials_build\bin>ffmpeg -re -i F:\rtsp\123.mp4 -c c…

Java设计模式—面向对象设计原则(六) ----->合成复用原则(CRP) (完整详解,附有代码+案例)

文章目录 3.6 合成复用原则(CRP)3.6.1 概述3.6.2 案列 3.6 合成复用原则(CRP) 合成复用原则(CRP):Composite Reuse Principle,CRP 又叫: 组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)…

FastAPI 应用安全加固:HTTPSRedirectMiddleware 中间件全解析

在当今的网络环境中,数据安全变得越来越重要。HTTPS 作为一种安全协议,它通过加密传输数据来保护用户信息免受窃取和篡改。在 FastAPI 应用中,确保所有的 HTTP 请求都通过 HTTPS 进行是至关重要的。 中间件在 FastAPI 中用于处理请求前后的…

探索 Electron:助力文档操作应用快速落地

Electron是一个开源的桌面应用程序开发框架,它允许开发者使用Web技术(如 HTML、CSS 和 JavaScript)构建跨平台的桌面应用程序,它的出现极大地简化了桌面应用程序的开发流程,让更多的开发者能够利用已有的 Web 开发技能…

智慧农业数据集(一)

目录 葡萄叶片病虫害害数据集 茄子果实病虫害数据集 81类水果数据集 小麦叶片病虫害数据集 番茄叶片病害数据集 草莓叶片病虫害数据集 水稻叶片病虫害数据集 菠萝成熟度数据集 10类水果数据集 葡萄叶片病虫害害数据集 数据集下载链接:葡萄叶片病虫害数据集…

几分钟学会搭建一个自己的外卖霸王餐系统

大家好,我是鲸天科技千千,大家都知道我是做小程序开发的,平时会给大家分享一些互联网相关的创业项目,感兴趣的可以跟我关注一下。 搭建一个首先就是要搭建一个自己的霸王餐小程序,我们自己的工作就是把这个小程序推广…

H5 CSS布局样式定位position

1. H5 H5 CSS布局样式定位position 布局是html中非常重要的一部分,而定位在页面布局中也是使用频率很高的方法,本章节为定位在布局中的使用技巧和注意事项。   position定位有4个属性,分别是static(默认),absolute&a…

6芯7芯可旋转电连接器航空插头

概述 可旋转电航空插头是一种能够在旋转或相对运动的部件间稳定传输电气信号或电源的装置,广泛应用于航空航天、自动化设备、医疗设备等多个领域。它的核心在于精密的接触系统,由旋转端和固定端两部分组成,通过金属触点或导电环实现电气连接。…

pyflink 安装和测试

FPY Warning! 安装 apache-Flink # pip install apache-Flink -i https://pypi.tuna.tsinghua.edu.cn/simple/ Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/ Collecting apache-FlinkDownloading https://pypi.tuna.tsinghua.edu.cn/packages/7f/a3/ad502…

华为CNA VRM搭建(使用vmware worfstartion搭建)

创建虚拟机: 自定义→高级 选择硬件兼容性:默认安装版本,如果未来想要将此虚拟机安装到其他电脑,其他电脑版本过低,此时可以向下兼容,这里我们默认版本 稍后安装操作系统: CNA采用Euler OS系统…

合肥鲸天科技的外卖会员卡系统有人做过吗?赚钱吗?

我们先来了解一下这个合肥鲸天科技,通过我在网上找到的资料和企业查询,这家公司还是很有实力的,合肥鲸天科技有限公司也是欢迎有合作的人到公司来进行一个考察和合作其他一些项目的。 外卖会员卡简介绍: 这个外卖会员卡&#xf…

先框架后历元还是先历元后框架?

最近测绘同行高总发现了一个问题,《CH/T 2014-2016 大地测量控制点坐标转换技术规范》中”5.1.4.1 a) 不同ITRF间框架转换参数的历元归算“中历元不明确,不知是观测历元还是目标历元。他和一些同行用一些数据测试验证后认为观测历元更为贴合实际。 ​编…

lftools frida调试小工具

前言 这两天在分析mac程序数据 ,偶尔翻到了以前写的frida代码,如下 那个时候刚刚接触frida 调试Mac电脑上的程序,通过tcp转发到自己写的分析数据的工具上…(专门研究了一下Python的异步编程,libuv啥的…) 每隔那么久…

21:I2C三:MPU6050的使用

MPU6050的使用 1、MPU6050简介1.1:加速度与姿态测量1.2:陀螺仪与姿态测量1.3:MPU6050内部结构1.4:模块内部寄存器 2、程序模拟I2C读写MPU60502.1:数据的读取2.2:转换为角度并进行融合 3、片上外设I2C2读写M…