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使用transition实现的鼠标悬停淡入淡出
Jan 09 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
Nov 06 HTML / CSS
W3C公布最新的HTML5标准草案
Oct 17 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
Dec 09 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
May 15 HTML / CSS
2014年圣诞节倒计时网页的制作过程
Dec 05 HTML / CSS
webView加载html图片遇到的问题解决
Oct 08 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
Nov 01 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 HTML / CSS
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
Dec 06 HTML / CSS
企业开发CSS命名BEM代码规范实践
Feb 12 HTML / CSS
css3应用示例:新增的选择器
Mar 16 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实现的随机广告显示代码
2007/06/14 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
javascript 三种编解码方式
2010/02/01 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
python 文件操作api(文件操作函数)
2016/08/28 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
anaconda如何查看并管理python环境
2019/07/05 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
python适合做数据挖掘吗
2020/06/16 Python
俄罗斯女装店:12storeez
2019/10/25 全球购物
超市创业计划书
2014/04/24 职场文书
2014年稽查工作总结
2014/12/20 职场文书
离职感谢信
2015/01/21 职场文书
长城导游词300字
2015/01/30 职场文书
布达拉宫导游词
2015/02/02 职场文书
护士辞职信怎么写
2015/02/27 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
学会Python数据可视化必须尝试这7个库
2021/06/16 Python