像素和CSS媒体查询?
我们知道像素是一个相对单位,不是一个拥有固定大小的点单位。但我想请问:在CSS中媒体查询用到的PX究竟是怎样一个单位?乃至我想问:在CSS中,像素是否已经不再是一个相对单位,而是一个拥有固定宽度的单位?
举例:
我用媒体查询 @media (min- width: 1200px) {……}这样的语句来控制在大于1200px的屏幕才显示某个DIV。
我用手机访问这个页面时,此DIV却不显示,但我的手机分辨率是1920*1080,按道理讲是满足min- width: 1200px这条件的,但为什么不显示呢?
难道PX是拥有固定长度的单位?
谢谢解答!
回复内容:
其实几句话就说明白了呀.......css里所有的px都是css pixel,其显示大小是相对的而不是绝对的,是设备相关的。
而css pixel * devicePixelRatio = 实际屏幕像素。
(平时电脑屏幕的devicePixelRatio都是1所以感觉不到,会让你误以为css里的px就是实际屏幕像素)
同时media query使用的px显然也是css pixel。
可以用chrome按f12开emulator看,一目了然。


下图左边的就是css pixel, 右边是devicePixelRatio


可以看到大部分安卓设备的css pixel尺寸都是360x640
你可以这么简单理解:
不管是1080x1920的屏幕还是720x1280的屏幕,对于移动端浏览器来说,尺寸都是360x640
所以,写css的时候以css pixel为准,也就是说:假设设计图做成了720x1280的,那么css里所有尺寸都除以2即可。
而对于图片,比如一张实际大小100*100px的图片,并且width和height都设了100px(注意这里的px是css pixel),实际占用了屏幕的像素数就是(假设devicePixelRatio是3)300*300px(注意这里的px是真实的屏幕像素)
所以,如果希望网页的元素在高ppi设备上显示不模糊(比如1080x1920屏幕的手机),位图应该做3倍的尺寸(比如做300*300px的图,然后在css中设width和height为100px),svg(矢量图)就无所谓了。
(所以svg大法好!png都是异端!)
因此在你的例子中,应该写min-width:400px
同时最好加上
(绝大部分1080x1920屏幕的设备devicePixelRatio都是3,1200/3=400)

手机浏览器会找你的,如果指定了width,就会把页面放到指定width的viewport里面取,如果没有指定,则默认值有的是980,具体根据浏览器来定的。
送你一个文档链接:Using the viewport meta tag to control layout on mobile browsers
还有像素的问题:
此像素非彼像素A pixel is not a pixel is not a pixel 因为大多数1920*1080的手机上是把网页当成 640*360 缩小三倍显示处理的,所以生效的其实是360这个宽度 搜一下关键词 window.devicePixelRatio 前面几个答案从实际应用层面解答了,不过我想了下你的疑问是针对单位的,那么从“像素是一个相对单位”这句话入手做个解答吧。
一、像素的显示定义
像素,即图像元素的基本单位。
分辨率,即屏幕图像的精密度,是指显示屏所能显示的像素的多少。
对网页开发者来说,像素的概念多启蒙于桌面显示器,并且基本只需要知道这一单位。当跨屏到其他设备时,会有难以理解的诸多单位相关概念出现,如dp\dpi\ppi等进而产生混乱,从硬件屏幕的显示差异入手理解会清晰一些。
我们知道,图像显示需要媒介,有如台式机、手机、相机和纸张实物等。像素基于图像, 屏幕分辨率基于像素,而跨屏设备的屏幕分辨率与物理尺寸无关(是的无关),因此在电子设备上,像素是一个纯电子尺寸而非物理尺寸。
也就是说呢,跨屏设备的分辨率像素之间是存在物理差异的。举个栗子,同为1280分辨率宽的桌面显示器与三星NOTE,一个是17",宽为13.27"(33.72cm);一个是5.3",宽为4.49"(11.42cm)。一个像素单位所占的物理空间分别为:33.72/1280 = 0.02634(cm) 与 11.42/1280=0.0089(cm),相差3倍。
二、手机浏览器的逻辑分辨率与媒体查询
(逻辑分辨率称为逻辑pt分辨率会更为精确,这里为便于理解暂且忽略pt)
手机厂商会提供一个分辨率如三星NOTE为1280*800(物理分辨率),但此分辨率通常不是手机网页浏览器的渲染尺寸,这是因为手机网页浏览器是以逻辑分辨率进行渲染的,而逻辑分辨率=物理分辨率/devicePixelRatio。
普通密度桌面显示屏的devicePixelRatio=1 高密度桌面显示屏(Mac Retina)的devicePixelRatio=2 主流手机显示屏的devicePixelRatio=2或3

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

在 Vue.js 中使用 Bootstrap 分为五个步骤:安装 Bootstrap。在 main.js 中导入 Bootstrap。直接在模板中使用 Bootstrap 组件。可选:自定义样式。可选:使用插件。

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

创建 Bootstrap 分割线有两种方法:使用 标签,可创建水平分割线。使用 CSS border 属性,可创建自定义样式的分割线。

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

要调整 Bootstrap 中元素大小,可以使用尺寸类,具体包括:调整宽度:.col-、.w-、.mw-调整高度:.h-、.min-h-、.max-h-

要设置 Bootstrap 框架,需要按照以下步骤:1. 通过 CDN 引用 Bootstrap 文件;2. 下载文件并将其托管在自己的服务器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根据需要编译 Sass/Less;5. 导入定制文件(可选)。设置完成后,即可使用 Bootstrap 的网格系统、组件和样式创建响应式网站和应用程序。

在 Bootstrap 中插入图片有以下几种方法:直接插入图片,使用 HTML 的 img 标签。使用 Bootstrap 图像组件,可以提供响应式图片和更多样式。设置图片大小,使用 img-fluid 类可以使图片自适应。设置边框,使用 img-bordered 类。设置圆角,使用 img-rounded 类。设置阴影,使用 shadow 类。调整图片大小和位置,使用 CSS 样式。使用背景图片,使用 background-image CSS 属性。

如何使用 Bootstrap 按钮?引入 Bootstrap CSS创建按钮元素并添加 Bootstrap 按钮类添加按钮文本
