css3媒体查询中device-width和width的区别详解


Posted in HTML / CSS onMarch 27, 2020

1.device-width

定义:定义输出设备的屏幕可见宽度。

不管你的网页是在safari打开还是嵌在某个webview中,device-width都只跟你的设备有关,如果是同一个设备,那么他的值就不会变。

比如iphone6的device-width*device-height为375*667,而跟他的dpr等无关。

2.width

定义:定义输出设备中的页面可见区域宽度。

输出的是你的网页可见区域的宽高,假设你的网页是移动端网页嵌套在某个webview中,width实际上就是webview的宽高,如果在不同的浏览器中,width和height也有可能不一样,又假如,你的页面用的rem布局,并且对于retina屏来说dpr>1,meta标签中设置了content="width=device-width, initial-scale=0.5, minimum-scale=0.5, maximum-scale=0.5, user-scalable=no,viewport-fit=cover",你的iphone6上的width大小就为750px了。

我这里用得比较用得多的是device-width和device-height,因为不用考虑横屏的情况

比如说适配iphoneX,你已经明确知道了iphoneX(375*812)的尺寸就可以用下面语句:

/*iphone x*/
@media only screen and (device-width:375px) and (device-height:812px) and (-webkit-device-pixel-ratio:3) {
    .foriphoneX()
}

又比如最新的三星折叠屏

@media screen and (device-width: 586px) and (device-height: 820px){
    html{
        font-size: 110px !important;
    }
}

总之,device-width在一个设备中是不会变的,他的值跟设备宽度有关,width在不同的布局方案或者不同的容器中展示都有可能不一样,这里我觉得device-width就相当于js的window.screen.width,width相当于js的document.body.clientWidth了。

另外记录一下我这里适配华为折叠屏的情况,由于此时还没真机,我只知道华为展开情况下的分辨率为2200*2480,dpr什么的还不清楚,因此不知道device-width和device-height(我这边不能用width来做查询,原因关系到业务逻辑),因此选了device-aspect-ratio,

最开始我在我的less中是这样写的

@media (device-aspect-ratio: 55/62) {
    /*适配*/
}

然后css中device-aspect-ratio被计算成小数了

@media (device-aspect-ratio: 0.887097) {
    /*适配*/
}

device-aspect-ratio是不支持小数的,因此匹配不上

所以查了一下怎么让less不执行55/62的结果,发现将属性用引号包起来,并且前面加上波浪号就可以了,像这样:

@media (device-aspect-ratio: ~"55/62") {
    /*适配部分*/
}

问题解决!

不过MDN上已经不推荐使用device-aspect-ratio了,这个属性将会被逐废弃,如果找到了更好的解决方案我也会用替代方案。

到此这篇关于css3媒体查询中device-width和width的区别详解的文章就介绍到这了,更多相关css3 device-width width内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
利用CSS3的transform做的动态时钟效果
Sep 21 HTML / CSS
css3气泡 css3关键帧动画创建的动态通知气泡
Feb 26 HTML / CSS
css3 伪元素和伪类选择器详解
Sep 04 HTML / CSS
浅谈pc和移动端的响应式的使用
Jan 03 HTML / CSS
html5 自定义播放器核心代码
Dec 20 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
Jul 31 HTML / CSS
localStorage、sessionStorage使用总结
Nov 17 HTML / CSS
Html5 video标签视频的最佳实践
Feb 26 HTML / CSS
HTML利用九宫格原理进行网页布局
Mar 13 HTML / CSS
canvas实现图片镜像翻转的2种方式
Jul 22 HTML / CSS
在html页面中取得session中的值的方法
Aug 11 HTML / CSS
纯html+css实现奥运五环的示例代码
Aug 02 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
Mar 27 #HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
Mar 26 #HTML / CSS
css3 中translate和transition的使用方法
Mar 26 #HTML / CSS
CSS3 不定高宽垂直水平居中的几种方式
Mar 26 #HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
Mar 24 #HTML / CSS
css3通过scale()、rotate()实现放大、旋转
Mar 19 #HTML / CSS
CSS3属性 line-clamp控制文本行数的使用
Mar 19 #HTML / CSS
You might like
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
Javascript中的call()方法介绍
2015/03/15 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
python自动化生成IOS的图标
2018/11/13 Python
python 实现敏感词过滤的方法
2019/01/21 Python
Django实现文件上传下载
2019/10/06 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
python 实用工具状态机transitions
2020/11/21 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
介绍一下grep命令的使用
2015/06/12 面试题
高中生学习总结的自我评价范文
2013/10/13 职场文书
中学生学习生活的自我评价
2013/10/26 职场文书
火锅店营销方案
2014/02/26 职场文书
2014年应急工作总结
2014/12/11 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
人民币符号
2022/02/17 杂记
24年收藏2000多部退役军用电台
2022/02/18 无线电
Python  lambda匿名函数和三元运算符
2022/04/19 Python