浅谈css3 device-width和width之间的差异

本篇文章和大家谈谈css媒体查询中device-widthwidth的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

浅谈css3 device-width和width之间的差异

【推荐教程:CSS视频教程 】

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之间的差异的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2880250.html

(0)
上一篇 2025年3月10日 19:51:42
下一篇 2025年3月7日 16:48:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • css3怎么设置元素背面不可见

    在css3中,可以利用backface-visibility属性,通过给元素添加“backface-visibility: hidden;”样式来设置背面不可见。backface-visibility属性可以设置当元素不面向屏幕时是否可见。…

    2025年3月10日 编程技术
    200
  • 详细了解CSS3中的border-image-slice属性

    【推荐教程:CSS视频教程 】 首先我们来了解一下它是干嘛的。 说明: 文档说明:它是控制图像边界向内偏移的。 what???这是嘛意思啊?根本看不懂!!!好的,我们先不要急,我们在看看: 立即学习“前端免费学习笔记(深入)”; 基础知识:…

    2025年3月10日 编程技术
    200
  • 浅谈CSS3 Grid网格布局(display: grid)的用法

    【推荐教程:CSS视频教程 】 我们一起来学习一下CSS 的Grid布局是如何使用的 通过这篇文章以后等我们自己做UI库的时候就会多了一种做法。 我们来使用CSS Grid创建一个超酷的图像网格图,它可以根据屏幕的宽度来改变列的数量。最精彩…

    2025年3月10日 编程技术
    200
  • css怎么设置宽为100vw

    在css中,可以使用“width:100vw;”样式来设置宽为100vw,width属性可以设置元素的宽度。vw是一个视口单位,是指相对于视口的宽度;1vw等于视口宽度的1%,比如浏览器的宽度为1920px,则“1vw=19.2px”。 本…

    2025年3月10日
    200
  • css中width什么意思

    在css中,width的意思为“宽度”,是用于设置元素宽度的一个属性,基本语法格式“width:length|%;”;该属性可以定义元素内容区的宽度,在内容区外面可以增加内边距、边框和外边距。 本教程操作环境:windows7系统、CSS3…

    2025年3月10日
    200
  • 什么是CSS优先级

    所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序;浏览器是通过优先级来判断哪些属性值与元素最相关以决定并应用到该元素上的。优先级就是分配给指定的CSS声明的一个权重,它由匹配的选择器中的每一种选择器类型的数值决定。 本教程操作环…

    2025年3月10日
    200
  • 使用CSS3实现简单时间轴效果(附代码)

    本篇文章分享一个使用css3实现的时间轴效果。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 【推荐教程:CSS视频教程 】 最近打开电脑就能看到一个实战路径图页面,效果是这样的: 立即学习“前端免费学习笔记(深入)”; …

    2025年3月10日
    200
  • css3中怎么调节透明度

    css3中调节透明度的方法:可以使用opacity属性来设置透明度,如【opacity:0.5; filter:Alpha(opacity=50);】,表示将元素透明度设置为0.5。 本文操作环境:windows10系统、css 3、thi…

    2025年3月10日
    200
  • css3中实现动画有哪两种方式

    css3中实现动画的两种方式分别是:1、分别利用transition属性和transform属性来设置过渡和形状;2、利用动画属性animation设置动画效果。 本文操作环境:windows10系统、css 3、thinkpad t480…

    2025年3月10日
    200
  • CSS3如何实现流星雨效果?(代码示例)

    本篇文章给大家通过代码示例介绍一下使用css3如何实现流星雨效果。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 【推荐教程:CSS视频教程】 说明:正文只讲述单个流星雨的实现方式,多个的效果只需要对单个的动画起始点、宽度…

    2025年3月10日
    200

发表回复

登录后才能评论