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开启硬件加速的使用和坑
Aug 21 HTML / CSS
表单button的outline在firefox浏览器下的问题
Dec 24 HTML / CSS
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
Aug 24 HTML / CSS
html5本地存储_动力节点Java学院整理
Jul 12 HTML / CSS
html5之Canvas路径绘图、坐标变换应用实例
Dec 26 HTML / CSS
HTML5实现晶莹剔透的雨滴特效
May 14 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
Mar 21 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
Apr 05 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
Dec 14 HTML / CSS
总结html5自定义属性有哪些
Apr 01 HTML / CSS
Html5大屏数据可视化开发的实现
Jun 11 HTML / CSS
CSS Transition通过改变Height实现展开收起元素
Aug 07 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
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
php查看当前Session的ID实例
2015/03/16 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
js 获取Listbox选择的值的代码
2010/04/15 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
Javascript实现图片不间断滚动的代码
2016/06/22 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
Selenium启动Chrome时配置选项详解
2020/03/18 Python
python求前n个阶乘的和实例
2020/04/02 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
详解python对象之间的交互
2020/09/29 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
如何通过jdbc调用存储过程
2012/04/19 面试题
《母鸡》教学反思
2014/02/25 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
西安事变观后感
2015/06/12 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python