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 透明色 RGBA使用介绍
Aug 06 HTML / CSS
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
May 07 HTML / CSS
css3设置box-pack和box-align让div里面的元素垂直居中
Sep 01 HTML / CSS
css3的transform造成z-index无效解决方案
Dec 04 HTML / CSS
CSS3绘制圆角矩形的简单示例
Sep 28 HTML / CSS
css3编写浏览器背景渐变背景色的方法
Mar 05 HTML / CSS
解决margin 外边距合并问题
Jul 03 HTML / CSS
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
Jan 23 HTML / CSS
HTML5 Canvas鼠标与键盘事件demo示例
Jul 04 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
May 29 HTML / CSS
Html5实现二维码扫描并解析
Jan 20 HTML / CSS
HTML5调用手机发短信和打电话功能
Apr 29 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
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
js option删除代码集合
2008/11/12 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
python中学习K-Means和图片压缩
2017/11/20 Python
python面向对象法实现图书管理系统
2019/04/19 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
摄影实习自我鉴定
2013/09/20 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
借条如何写
2015/05/26 职场文书
员工工作心得体会
2019/05/07 职场文书