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 相关文章推荐
学做Bootstrap的第一个页面
May 15 HTML / CSS
利用CSS3实现平移动画效果示例代码
Oct 12 HTML / CSS
CSS3改变浏览器滚动条样式
Jan 04 HTML / CSS
html5仿支付宝密码框的实现代码
Sep 06 HTML / CSS
HTML5 Canvas图像模糊完美解决办法
Feb 06 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
Mar 07 HTML / CSS
一款html5 canvas实现的图片玻璃碎片特效
Sep 11 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
Jan 11 HTML / CSS
Html5页面二次分享的实现
Jul 30 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 HTML / CSS
使用canvas实现雪花飘动效果的示例代码
Mar 30 HTML / CSS
CSS几步实现赛博朋克2077风格视觉效果
Jun 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 utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
简单谈谈js的数据类型
2017/09/25 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
详解Vite的新体验
2021/02/22 Javascript
python list转dict示例分享
2014/01/28 Python
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python实现最大优先队列
2019/08/29 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
yy司仪主持词
2014/03/22 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
欢迎领导标语
2014/06/27 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers