Media query 详解

最近更新文章不及时,在此说声抱歉,关于 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}}


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>

具体效果展示如下:

时间: 2024-10-16 15:27:22

Media query 详解的相关文章

css Media Query详解

Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: 1 <link href="css/reset.css" rel="stylesheet" type="text/css" media="screen" /> 2 <link href="css/style.css" rel="stylesheet" type

1:CSS中一些@规则的用法小结 2: @media用法详解

第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule是一个声明,为CSS提供执行或怎么表现的指令.每个声明以@开头,后紧跟一个可用的关键字,这个关键字充当一个标识符,用于表示CSS该做什么.这是一个通用的语法,尽管每个at-rule有其它语法变体.常规规则 常规规则遵循下面的语法: 复制代码 代码如下: @[KEYWORD] (RULE); @charset

CSS3学习教程:Media Queries详解

说起CSS3的新特性,就不得不提到 Media Queries . Media Queries 的引入,其作用就是允许添加表达式用以确定媒体的情况,以此来应用不同的样式表.换句话说,其允许我们在不改变内容的情况下,改变页面的布局以精确适应不同的设备,以此加强体验.所以Media Queries和CSS优化没有关系,甚至是矛盾的. CSS2.1定义了 Media 的部分,包括类型.组别和规则等.CSS并非为了显示器而创造,而是应用于各种各样的媒体,比如常见的显示器,越来愈多的手持设备,可能略显过时

Media Queries 详解

Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码:  <link href="css/reset.css" rel="stylesheet" type="text/css" media="screen" />  <link href="css/style.css" rel="stylesheet" type=&

Media Queries详解

Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码:  <link href="css/reset.css" rel="stylesheet" type="text/css" media="screen" />  <link href="css/style.css" rel="stylesheet" type=&

CSS3 Media Queries 详解

说起CSS3的新特性,就不得不提到 Media Queries .最近 Max Design 更新的一个泛读列表里,赫然就有关于 Media Queries 的文章.同时位列其中的也有前天我刚刚翻译的 IE9, Opacity 和 Alpha . 虽然标题相同,但本文并不是列表上 CSS3 Media Queries 的译文,因为原版有Demo有例子有图片,全文不长而且不难看懂,所以我也就不翻译了.基于自己已经了解到一定程度,所以就打算自己写. CSS2中有已经定义了 Media 的部分,包括类

【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csdn.net/shulianghan VLC 二次开发 视频教程 : http://edu.csdn.net/course/detail/355 博客总结 : -- 本博客目的 : 让 Android 开发者通过看本博客能够掌握独立移植 VLC Media Player 核心框架到自己的 app 中,

分享知识-快乐自己:Hibernate 中Criteria Query查询详解

1):Hibernate 中Criteria Query查询详解 当查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中. 此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条件封装为一个Criteria对象. 在实际应用中,使用Session的createCriteria()方法构建一个org.hibernate.Criteria实例,然后把具体的查询条件通过Criteria的add()方法加入到Cr

Media Queries媒体查询详解

Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码: <link href=”css/reset.css” rel=”stylesheet” type=”text/css” media=”screen” /><link href=”css/style.css” rel=”stylesheet” type=”text/css” media=”all” /><link href=”css/print.css” rel=”s