Media query 详解

响应式布局基本实现Media Query(媒介查询) Media Query的使用方法、设备类型、设备特性、特殊情况、在bootstrap中的应用... 阅读详情

最近更新文章不及时,在此说声抱歉,关于 media query 在网络上实际已经有很多成型的文章,但是在编者查看之后,发现并没有特别基础的入门教程,所以今天上午特意去对知识进行了整理,于是就有了下面的这篇文章,希望在阅读过这篇文章之后,能够帮助到你,感谢.

������5月24是作者的生日呦,希望大家多多留言点赞!������

0.前言

很多时候,前期使用 HTML 和 CSS 设计的样式非常精美,但是经常会因为对方的设备,浏览器等的原因,分辨率达不到要求,最后导致用户看到的界面非常丑陋,很多内容位置发生改变.

为了解决这个问题,,从 CSS 2.1 开始就定义了各种媒体类型(如显示器,便携浏览器等),允许设计者针对不用的媒体设备进行不同的 CSS 样式设计.

1.语法

语法规则如下:

@media not|only 设备类型 [and 设备特性] *

在上面的语法中,[and 设备特性] 部分可以出现 0 ~ N 次,通过使用多个 [and 设备特性] 可以对多个设备特性进行匹配.

media query 语法格式中支持设备如下:

--
all适用于所有的设备
aural适用于语音和音频合成器
braille适用于触觉反馈设备
embossed适用于凸点文字(盲文)印刷设备
handheld适用于小型或者手提设备
print适用于打印机
projection适用于投影图像,如幻灯片
sceen适用于计算机显示器(最常用的一个)
tty适用于使用固定间距字符格的设备,如电传打字机和终端.
tv适用于电视类设备

media query 语法格式中设备特性如下:

特性合理的特性值是否支持 max/min说明
width带单位的长度值,如100px是匹配浏览器宽度
height带单位的长度值,如100px是匹配浏览器高度
aspect-ratio比例值,如 16/9是匹配浏览器的宽度值和高度值的比例
device-width带单位的长度值,如100px是匹配设备分辨率的宽度值
device-height带单位的长度值,如100px是匹配设备分辨率的高度值
device-aspect-ratio比例值,如 16/9是匹配设备分辨率的宽度值与高度值的比例
color整数值是匹配设备使用多少位的色深,比如真彩色是32,如果不是彩色设备则为 0
color-index整数值是匹配色彩表中的颜色数
monochrome整数值是匹配单色帧缓冲器中每像素的位(bit)数,如果不是单色设备,这个数值为 0
resolution分辨率,如300dpi是匹配设备的物理分辨率
scan只能是 progressive 或者 interlace否匹配设备的扫描方式,其中 progressive 代表逐行扫描, interlace 代表隔行扫描
grid只能是 0 或 1否匹配设备是否基于栅格,1代表基于栅格,0代表其他类型

我们发现是不是很牛 X ,几乎设备所有物理特性我们都可以获取到,这样我们是不是也可以根据我们获取到的特性的内容,我们可以去针对不同的内容去进行设置了?那我们现在就根据上面的特性来去做几个简单的例子.

2.示例

首先我们先来看一个基础案例,就是我们通过我们改变浏览器的大小,来让我们浏览器中的文字也随之变化,给用户一种,我们的界面内容是可以随着浏览器的改变而改变的感觉.

2.1 案例一

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            html,body {
                height:100%;
            }
            html{font-size:10px}
            h2 {
                font-size:1.9rem;
            }
            /*媒体查询*/
            @media screen and (min-width:321px) and (max-width:375px){
            html{font-size:11px}}
            @media screen and (min-width:376px) and (max-width:414px){
            html{font-size:12px}}
            @media screen and (min-width:415px) and (max-width:639px){
            html{font-size:15px}}
            @media screen and (min-width:640px) and (max-width:719px){
            html{font-size:20px}}
            @media screen and (min-width:720px) and (max-width:749px){
            html{font-size:22.5px}}
            @media screen and (min-width:750px) and (max-width:799px){
            html{font-size:23.5px}}
            @media screen and (min-width:800px){html{font-size:25px}}
        </style>
    </head>
    <body>
        <div>
            <h2>我是李先生</h2>
            <span>李鹏</span>
            <span>2016年05月24日</span>
        </div>
    </body>
    </html>

大家可以看到,我在代码中首先获取的 设备类型 是我们的屏幕.

之后我们通过 and 设备特性 对不同情况下的文字大小进行了修改,如下图.

@media screen and (min-width:321px) and (max-width:375px){
html{font-size:11px}}

test_3.gif


2.2 案例二

让我们的网页中的内容结构随着我们的界面大小而不断改变,具体样例如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
            /*设置默认的 CSS 样式*/
            .container{
                text-align: center;
                margin: 10px auto;
                width: 750px;
            }
            .container>div{
                border: 1px solid rgba(0,0,0,0.3);
                text-align: left;
                /*设置 HTML 组件的 width 属性包括边框*/
                box-sizing: border-box;
                background-color: #96FF6B;
                padding: 5px;
            }
            div .left{
                width: 300px;
                height: 230px;
                float: left;
            }
            div .main{
                width: 450px;
                height: 230px;
                float: left;
                /*这里不采用 clearfix 的用法了,直接 clear */
                clear:right;
            }
            div .right{
                width: 750px;
                float: left;
            }

            @media screen and (min-width: 1000px){
                .container{
                text-align: center;
                margin: 10px auto;
                width: 960px;
                }
                .container>div{
                    border: 1px solid rgba(0,0,0,0.3);
                    /*设置 HTML 组件的 width 属性包括边框*/
                    box-sizing: border-box;
                    background-color: #96FF6B;
                    padding: 5px;
                }
                div .left{
                    width: 240px;
                    height: 240px;
                    float: left;
                }
                div .main{
                    width: 460px;
                    height: 240px;
                    float: left;
                }
                div .right{
                    width: 260px;
                    height: 240px;
                    float: left;
                }
            }
            @media screen and (min-width: 180px) and (max-width: 500px){
                .container{
                text-align: center;
                margin: 10px auto;
                width: 450px;
                }
                .container>div{
                    border: 1px solid rgba(0,0,0,0.3);
                    /*设置 HTML 组件的 width 属性包括边框*/
                    box-sizing: border-box;
                    background-color: #96FF6B;
                    padding: 5px;
                }
                div .left{
                    width: 450px;
                    height: 240px;
                    float: left;
                }
                div .main{
                    width: 450px;
                    height: 240px;
                    float: left;
                }
                div .right{
                    width: 450px;
                    height: 240px;
                    float: left;
                }
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="left">
                <h2>我是你们的李先生呀</h2>
                <ul>
                    <li>MR_LP</li>
                    <li>MR_LP</li>
                    <li>MR_LP</li>
                    <li>MR_LP</li>
                </ul>
            </div>

            <div class="main">
                <h2>我是你们的李先生呀</h2>
                <p>MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP MR_LP</p>
            </div>

            <div class="right">
                <h2>我是你们的李先生呀</h2>
                <ul>
                    <li>MR_LP</li>
                    <li>MR_LP</li>
                    <li>MR_LP</li>
                    <li>MR_LP</li>
                </ul>
            </div>
        </div>
    </body>
    </html>

具体效果展示如下:

test_2.gif

二维码.jpg

手把手教你用芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏(附完整寄存器配置表) 本文详细介绍了如何使用芯驰X9HP驱动MAX96755/MAX96752实现智能座舱仪表屏的完整开发流程,包括硬件架构解析、关键寄存器配置、Linux BSP集成及调试技巧。通过实战指南和完整寄存器配置表,帮助开发者快速掌握驱动开发核心技术,提升智能座舱系统的显示性能与稳定性。 阅读详情

相关推荐

深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用

深度学习中 Internal Covariate Shift 问题以及 Batch Normalization 的作用前言一、Batch Normalization是什么?1.1 Internal Covariate Shift1.2 Internal Covariate Shift 带来的影响1.3 如何减缓 Internal Covariate Shift 问题带来的影响白化(Whitening)白化存在的问题二、Batch Normalization2.1 传统 Normalization2.2 改进

一扣解千愁的博客 4297

CSS | 响应式布局之媒体查询(media-query)详解

media query功能:这种机制允许设置在css样式中添加media query表达式,这种表达式不仅可以对媒体类型进行匹配,也可以对媒体分辨率、色深等各种细节进行匹配,因此可以针对不同类型,不同参数细节的媒体设计提供精确控制。语法:@media 设备名 only(选取条件) not (选取条件) and (设备选取条件) , 设备二{sRules}

青春木鱼的博客 1万+

ABB机器人姿态与四元数(笔记)

通常使用机器人作业时,机器人的法兰轴(5轴)往往是垂直与作业平面的,此时需要将机器人的姿态调整(示教)到垂直于工作平面的状态,然后记录当前的姿态,作为之后作业的参考标准姿态。不同机器人表示控件姿态的方式不一样,但也无外乎3中:旋转矩阵、欧拉角和四元数。 ABB机器人使用的是四元数(可转欧拉角)作为机器人控件姿态的表示方式。这里主要是记录在不通过示教的方式下,如何定义四元数,使机器人达到垂直于工作平面的姿态。 5轴竖直向下(常用):此时,各轴角度为 [0,0,0,0,9...

Zythonista的博客 1万+

这是媒体查询

媒体查询什么是媒体查询背景介绍媒体查询的使用组成mediatype 查询类型关键字媒体特性媒体特性(拓展属性——了解)媒体查询语法规范 什么是媒体查询 背景 近几年整个社会发生了翻天覆地的变化,各种智能手机,pad,之类的移动端设备随处可见。那么,程序员界就刮起了一阵风暴,大家在思考 “ 如何让我们的网站在各种移动端设备上都能布局合理呢? ”为每一个设备写一套代码自然是非常麻烦的。那么,聪明的程序员们想到了一个办法,“ 我只要一套代码,就能让我的网站在不同大小的设备上正确显示 ”。于是,响应式设计模型诞生啦

csdn_jwdlh的博客 733

Honeywell EPKS 核心功能块组态与执行调度实战解析

本文深入解析Honeywell EPKS系统的核心功能块组态与执行调度技术,涵盖控制模块(CM)、顺序控制模块(SCM)和输入输出模块(IOM)的配置方法。通过实战案例分享执行顺序(ORDERINCM)和CEE执行周期的优化策略,帮助工程师提升工业自动化系统的控制精度和运行效率。

weixin_28724319的博客 414

把外部系统一键装进 SAP Build Work Zone:从零开始创建 HTML5 URL App

HTML5 URL App 是一种轻量级解决方案,可将外部网页或系统入口快速集成到SAP企业门户中。开发者只需在manifest.json中配置目标URL、导航模式等参数,无需开发完整前端应用。该方案利用SAP BTP的HTML5 Application Repository集中存储静态资源,通过HTML5 Apps Content Provider将应用暴露给子账号,最终在SAP Build Work Zone中以Fiori磁贴形式呈现。文章详细介绍了manifest.json的关键配置、三种基础设施组件

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 241

如何使用媒体查询(media query)来适配不同设备上的样式?

如何使用媒体查询(media query)来适配不同设备上的样式?

商务合作欢迎私信我 5717

Linkage Mapper 工具参数详解——Building Network and Map Linkages

此文档用于解析使用LinkageMapper各输入输出参数详情以及可能的影响,并介绍了如何解释模型输出结果和输出参数,适合刚入手的人。篇幅很长很啰嗦,是因为每个参数都解释的万分细致。

sumuses的博客 6113

媒体查询(media query)总结

媒体查询是css3新语法,可以针对不同的媒体类型定义不同的样式,可简单理解为根据页面不同的宽度,来使用不同的css样式。

qq_51099065的博客 2403

代码复现3—VLN-CE

运行训练完后在 data文件下会自动生成一个“checkpoints”文件,文件下包含任务文件“seq2seq”,该文件下会包括训练出来的权重和评估结果。数据集下载完后路径提取:data/scene_datasets/mp3d/{scene}/{scene}.glb。注意这里下载的数据集并不是所有的matterport3d,只需要一部分,包含90个场景,大小压缩后约16G。在“eval”时,会在data文件下生成videos文件,里面存放的是可视化的轨迹视频。

qq_44100524的博客 3201

SAM3 几行代码支持任意图像分辨率,减少显存占用(针对transformers库)

几行代码让sam3支持任意图像分辨率

qq_41234663的博客 156

媒体查询语法

媒体查询语法简介 媒体查询(media query)是css3的新语法 使用@media查询可以针对不同媒体类型定义不同的样式 @media 可以针对不同屏幕的尺寸设置不同的样式 当重置浏览器大小的过程中 页面也会根据浏览器的宽度和高度重新渲染页面 语法 @media mediatype and |not |only(media feature){ css-code } 用@ 开头 @media 注意@符号 mediatype 媒体类型 关键字 and not only media featu

MDR_0820的博客 1315

78.在 Vue3 中使用 OpenLayers 实现地图地点搜索定位功能

本文详细介绍了如何在 Vue3 中集成 OpenLayers,实现地图地点搜索和定位功能。Vue3 项目环境的搭建与依赖安装。使用语法实现地图初始化和控件集成。通过 OpenLayers 的 Popup 和 Geocoder 插件,实现地址搜索和定位。希望这篇博文能帮助你快速掌握 Vue3 与 OpenLayers 的集成技术。如果在使用过程中遇到问题,欢迎在评论区留言讨论,或者参考 OpenLayers 官方文档获得更多帮助。注意。

小彭的博客 1848

ECharts -Media Query

目录ECharts组件的定位和布局定位方式横向(horizontal)和纵向(vertical)Media Queryquery:option: ECharts组件的定位和布局 定位方式 大部分『组件』和『系列』会遵循两种定位方式: left/right/top/bottom/width/height 定位方式: 这六个量中,每个量都可以是『绝对值』或者『百分比』或者『位置描述』。 绝对值 单位是浏览器像素(px),用 number 形式书写(不写单位)。例如 {left: 23, height: 40

别下完这场雪 1681

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

media query和响应式布局

media query允许设计者在CSS样式中添加media query表达式,他们可以对媒体类型进行匹配 也可以对媒体分辨率 色深等各种细节进行匹配 所以可以针对不同类型,不同参数细节的媒体设备提供精确控制 语法格式 @media not|only 设备类型 [and 设备特性]* 在上面语法格式中,[ and 设备特性 ] 部分可以出现0~N次],通过使用多个[ and 设备特性 ]可以对多...

L1194774003的博客 316

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

media type与media query

http://www.qianduan.net/media-type-and-media-query.html http://broadcast.oreilly.com/2010/04/using-css-media-queries-ipad.html media type(媒体类型)是css 2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式

东名夜雨 的专栏 2742

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

CSS link、@import、media type、media query

[b]CSS link、@import共同点:[/b]都是为了加载CSS文件。 [b]CSS link、@import不同点:[/b] [list] [*]Link属于XHTML标签,而@import完全是CSS提供的一种方式。link除了可以加载CSS外,还可以做很多其它的事情,比如[b]定义RSS,定义rel连接属性[/b]等,@import就只能加载CSS了。 [*]@impor...

如果你真的想做一件事,你一定会找到方法; 如果你不想做一件事,你一定会找到借口。 292

PostCSS Extract Media Query 教程

PostCSS Extract Media Query 教程 1、项目介绍 postcss-extract-media-query 是一个 PostCSS 插件,用于从 CSS 文件中提取媒体查询(@media queries)并将它们移动到一个单独的 CSS 文件中。这个插件可以帮助开发者更好地管理和优化 CSS 文件,特别是在处理大型项目时。 2、项目快速启动 安装 首先,你需要安装 post...

gitblog_00643的博客 933

media query相关表格

media query表: media query兼容性:

C860_zy的专栏 891

ECharts学习五 --- 移动端自适应 Media Query

&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;ECharts&lt;/title&gt; &lt;!-- 引入 echarts.js 采用的是cdn 引入,需保证外网连接正常 --&gt; &lt;script

树洞树洞-单纯记录 2743

postcss-combine-media-query 使用教程

postcss-combine-media-query 使用教程 1、项目介绍 postcss-combine-media-query 是一个开源的 PostCSS 插件,旨在帮助开发者将 CSS 文件中的多个媒体查询合并为一个,从而减少 CSS 文件的大小并提高加载性能。该插件特别适用于大型项目,其中包含大量的媒体查询规则。 2、项目快速启动 安装 首先,确保你已经安装了 Node.js 和 n...

gitblog_00450的博客 521

PostCSS Combine Media Query 项目教程

PostCSS Combine Media Query 项目教程 1. 项目目录结构及介绍 postcss-combine-media-query/ ├── examples/ │ └── gulp/ │ └── test/ ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── index.js ├── packa...

gitblog_00014的博客 458

Media Query Splitting Plugin 使用教程

Media Query Splitting Plugin 使用教程 项目介绍 Media Query Splitting Plugin 是一个用于 Webpack 的插件,旨在帮助开发者更高效地管理和优化 CSS 文件中的媒体查询。通过该插件,开发者可以将不同媒体查询的 CSS 代码分离成独立的文件,从而实现按需加载,提升网页性能。 项目快速启动 安装 首先,你需要通过 npm 安装该插件: np...

gitblog_00020的博客 300

stylelint 的 media-query-no-invalid 规则:按 Media Queries Level 5 语法校验媒体查询

`media-query-no-invalid` 是 stylelint 内置的一条核心校验规则,用于**禁止语法无效的 `@media` 媒体查询**,其判定依据是 W3C [Media Queries Level 5](https://link.gitcode.com/i/61748217d246dfefea5b8f2cc9717e53) 为骨架,结合仓库中规则实现源码与完整测试用例,讲清该规

gitblog_00042的博客 962

Sass Media Query Combiner

Sass Media Query Combiner Sass Media Query Combiner 是一个用于合并 Sass 中的媒体查询的工具。它可以让你更有效地管理和优化你的 CSS 代码。 什么是 Sass Media Query Combiner? Sass Media Query Combiner 是一个基于 Node.js 的命令行工具。它可以帮助你将多个媒体查询合并成一个,从而减...

gitblog_00085的博客 429

优化你的CSS:postcss-combine-media-query插件推荐

优化你的CSS:postcss-combine-media-query插件推荐 项目介绍 在现代前端开发中,CSS的模块化管理变得越来越重要。然而,随着项目规模的扩大,CSS文件中的媒体查询(Media Queries)可能会变得冗长且重复,尤其是在组件化开发中,每个组件内部的媒体查询规则可能会多次出现。这不仅增加了CSS文件的大小,还可能导致维护困难。 为了解决这一问题,postcss-comb...

gitblog_01091的博客 467
上一篇: H5学习_番外篇_PHP数据库操作
下一篇: 编写高质量的 JavaScript 代码(一)
MR_LP
博客等级 码龄11年 236粉丝 89原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值