首页 前端知识 CSS3媒体查询

CSS3媒体查询

2025-02-25 13:02:52 前端知识 前端哥 916 224 我要收藏

CSS媒体查询

媒体查询(Media Query)是CSS3新语法

  1. 使用@media查询,可以针对不同的媒体类型定义不同的样式
  2. @media可以针对不同的屏幕尺寸设置不同的样式(主要价值)
  3. 当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面
  4. 媒体查询一般按照从大到小或者从小到大的顺序来
  5. 目前针对很多苹果手机、Android手机,平板等设备都用得到多媒体查询

语法规范

@media mediatype and | on | only (media feature) }
CSS-code;
}
  1. 用@media开头 注意@符号
  2. mediatype媒体类型
  3. 关键字 and not only
  4. media feature 媒体特性 必须有小括号包含

mediatype查询类型

  1. 将不同的终端设备划分成不同的类型,称为媒体类型

    设备类型
    All(常用)所有设备
    Braille盲人用点字法触觉回馈设备
    Embossed盲文打印机
    Handheld便携设备
    Print(常用)打印用纸或打印预览视图
    Projection各种投影设备
    Screen(常用)电脑显示器
    Speech语音或音频合成器
    Tv电视机类型设备
    Tty使用固定密度字母栅格的媒介,比如电传打字机和终端

关键字

  1. 关键字将媒体类型或多个媒体特性连接到一起作为媒体查询的条件
    1. and:可以将多个媒体特性连接到一起,相当于“且”
    2. not:排除某个媒体类型,相当于“非”,可以省略
    3. only:指定某个特定的媒体类型,可以省略

媒体特性

  1. 每种媒体类型都具有各自不同的特性,根据不同媒体类型的媒体特性设置不同的展示风格

    解释说明
    width定义输出设备中页面可见区域的宽度
    min-width定义输出设备中页面最小可见区域宽度(包含等于)
    max-width定义输出设备中页面最大可见区域宽度(包含等于)
  2. 案例:屏幕尺寸改变屏幕背景颜色

    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @media screen and (max-width: 639px) {
            body {
                background-color: pink;
            }
        }
    
        @media screen and (min-width: 640px) and (max-width: 799px) {
            body {
                background-color: skyblue;
            }
        }
    
        @media screen and (min-width: 800px) {
            body {
                background-color: tomato;
            }
        }
    </style>
    </head>
    

媒体查询+rem实现元素动态大小变化

  1. 媒体查询+rem:可以实现不同的设备宽度,实现页面元素大小的动态变化

  2. 案例:屏幕尺寸改变字体大小

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 屏幕尺寸小于639px时,html字体大小为50px */
        @media screen and (max-width: 639px) {
          html {
            font-size: 50px;
          }
        }
    
        /* 屏幕尺寸大于640px时,html字体大小为100px */
        @media screen and (min-width: 640px) {
          html {
            font-size: 100px;
          }
        }
    
        div {
            height: 1rem;
            font-size: .7rem;
            color: #fff;
            background-color: skyblue;
            text-align: center;
            line-height: 1rem;
        }
    </style>
    </head>
    
    <body>
        <div>主页</div>
    </body>
    
    </html>
    

引入资源

使用link标签引入

  1. 当样式比较繁多的时候,我们可以针对不同的媒体使用不同的stylesheets(样式表)

  2. 原理:直接在link中判断设备的尺寸,然后引入不同的css文件

  3. 建议:媒体查询最好的方法是从小到大

  4. 引入资源就是:针对于不同的屏幕尺寸,调用不同的css文件

  5. 演示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    
        <!-- 建议:媒体查询最好的方法是从小到大
        引入资源就是:针对于不同的屏幕尺寸,调用不同的css文件 -->
        <link rel="stylesheet" media="screen and (min-width: 300px)" href="style300.css">
        <link rel="stylesheet" media="screen and (min-width: 800px)" href="style800.css">
    </head>
    
    <body>
        <div>1</div>
        <div>2</div>
    </body>
    </html>
    
    /* style300.css文件 */
    div {
        width: 100%;
        height: 100px;
    }
    div:nth-child(1) {
        background-color: pink;
    }
    div:nth-child(2) {
        background-color: skyblue;
    }
    
    /* style800.css文件 */
    div {
        float: left;
        width: 50%;
        height: 100px;
    }
    div:nth-child(1) {
        background-color: pink;
    }
    div:nth-child(2) {
        background-color: skyblue;
    }
    
  6. 语法规范:<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="style.css">

使用@import引入

  1. 使用方法:

    @import "printstyle.css" print;
    /* 只在媒体为 print 时导入 "printstyle.css" 样式表 */
    
    @import "mobstyle.css" screen and (max-width: 768px);
    /* 只在媒体为 screen 且视口最大宽度 768 像素时导入 "mobstyle.css" 样式表 */
    
  2. 使用@import的缺点

    1. 加载顺序问题:在 a.css 中使用 import 引用 b.css,只有当使用当使用 import 命令的宿主 css 文件 a.css 被下载、解析之后,浏览器才会知道还有另外一个 b.css 需要下载
    2. 兼容性问题@import只有在 IE5 以上的才能识别,而 link 标签无此问题
    3. 当使用JS控制DOM去改变样式的时候,只能使用link标签,因为@import不是DOM可以控制的
  3. 从性能优化的角度来讲,尽量要避免使用 @import

转载请注明出处或者链接地址:https://www.qianduange.cn//article/21322.html
标签
评论
发布的文章

python调用ollama库详解

2025-02-25 13:02:30

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!