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

媒体查询

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

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

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

语法格式

/* 写法一:内嵌式 */
@media 逻辑符 媒体类型 and (媒体特性) {
    执行的 css 代码
}

/* 写法二:外链式 */
<link rel="stylesheet" media="逻辑符 媒体类型 and (媒体特性)" href="xx.css" >
/* 视口宽度最小为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;
    }
}

@media 解析过程

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

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

注意事项

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

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

媒体类型及特性

类型名称描述
屏幕screen带屏幕的设备
打印预览print打印预览模式
阅读器speech屏幕阅读模式
不区分类型all默认值,包括以上3种情形
@media screen and (min-width: 1024px) and (max-width: 1600px) {
    body {
        background: #0f0;
    }
}
特性名称属性
视口的宽和高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;
    }
}

20210508101606129
20210507180317809
20210507180340495

@media (resolution: 2dppx) {
    h1::after {
        content: '2倍屏';
        color: #f00;
    }
}

@media (resolution: 3dppx) {
    h1::after {
        content: '3倍屏';
        color: #00f;
    }
}

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/';
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤安先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值