• 移动Web:媒体查询及手机端PC端识别


    媒体查询

    响应式布局的核心,能够检测视口的宽度,然后编写差异化的 css 样式调整网页的布局方式。

    响应式布局原理:根据 UI 设计稿需求合理设置响应断点,配合媒体查询书写差异化CSS样式。

    响应断点是指媒体查询所采用的视口的宽度。作用:将屏幕尺寸划分成若干的区间。

    语法格式

    /* 写法一:内嵌式 */
    @media 逻辑符 媒体类型 and (媒体特性) {
        执行的 css 代码
    }
    
    /* 写法二:外链式 */
    "stylesheet" media="逻辑符 媒体类型 and (媒体特性)" href="xx.css" >
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    /* 视口宽度最小为320px,最大为640px时,呈现样式 */
    @media (min-width: 320px) and (max-width: 640px) {
        body {
            background: #f00;
        }
    }
    
    /* 视口宽度最小为640px,最大为1024px时,呈现样式 */
    @media (min-width: 640px) and (max-width: 1024px) {
        body {
            background: #00f;
        }
    }
    
    /* 视口宽度最小为1024px,最大为1600px时,呈现样式 */
    @media (min-width: 1024px) and (max-width: 1600px) {
        body {
            background: #0f0;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    @media 解析过程

    浏览器解读代码时,实时对当前设备进行检测

    • 如果条件满足 (表达式结果为 true ),那么久应用这条 @media 规则对应的样式。
    • 如果条件不满足 (表达式结果为 false ),{} 内的CSS就被忽略。

    注意事项

    @media 样式要放在默认样式的后面,根据css特性,后面的样式会覆盖前面的样式。

    • 若媒体特性使用 min-width 时:媒体查询从小到大书写。
    • 若媒体特性使用 max-width 时:媒体查询从大到小书写。
    <html>
        <head>
            
            <link rel="stylesheet" href="css/index.css" />
            <style> 当前默认样式 style>
            
            
            <link rel="stylesheet" media="(min-width: 320px) and (max-width: 640px)" href="css/media.css" />
        head>
        <body>body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    媒体类型及特性

    类型名称描述
    屏幕screen带屏幕的设备
    打印预览print打印预览模式
    阅读器speech屏幕阅读模式
    不区分类型all默认值,包括以上3种情形
    @media screen and (min-width: 1024px) and (max-width: 1600px) {
        body {
            background: #0f0;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    特性名称属性
    视口的宽和高width、height数值
    视口最大宽或高max-width、max-height数值
    视口最小宽或高min-width、min-height数值
    屏幕方向orientationportrait: 竖屏 landscape: 横屏

    横竖屏

    /* 横屏 */
    @media (orientation: landscape) {
        h1::before {
            content: '现在是横屏状态';
            color: #f00;
        }
    }
    
    /* 竖屏*/
    @media (orientation: portrait) {
        h1::before {
            content: '现在是竖屏状态';
            color: #00f;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    20210508101606129
    20210507180317809
    20210507180340495

    @media (resolution: 2dppx) {
        h1::after {
            content: '2倍屏';
            color: #f00;
        }
    }
    
    @media (resolution: 3dppx) {
        h1::after {
            content: '3倍屏';
            color: #00f;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    20210508103328926

    20210508103435438


    手机端和PC端识别

    判断是否为移动端

    通过正则判断是否为移动端

    function idApp () {
        // 是否是苹果
        if (/iphone/i.test(navigator.userAgent)) {
            return true;
        }
        
       	// 是否是安卓
        if (/android/i.test(navigator.userAgent)) {
            return true;
        }
        
        // 是否是 windows phone
        if (/windows phone/i.test(navigator.userAgent)) {
            return true;
        }
        
        return false;
    }
    
    // 如果是移动端就跳转到移动端页面
    if (isApp()) {
        location.href = 'https://m.js.com/';
    } else {	// 否则就跳转到PC端页面
        location.href = 'https://www.js.com/';
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    【C++】string类
    Apache服务器优化
    【JS】浅谈浅拷贝与深拷贝
    直播带货小程序的前端开发技巧与工具
    python3.10 安装问题解决
    在vue2项目中使用vue-quill-editor实现富文本编译器
    Python连本地MySQL接数据库
    使用html+css实现一个静态页面【传统文化茶带音乐6页】HTML学生个人网站作业设计
    C++初阶(1)
    ffmpeg5及以上-s和像素格式转换 画屏问题
  • 原文地址:https://blog.csdn.net/qq_41952539/article/details/127636785