绝对大小使用CSS

Absolute sizing using CSS

本文关键字:CSS      更新时间:2023-09-26

我知道CSS中有一些绝对大小的单位。例如,cm, in, mm…但是当我在我的网页中使用它们时,它们很少受到尊重。

有关屏幕物理尺寸和像素分辨率的信息应该可以从EDID中获得-因此浏览器可以访问它们并计算该特定设备上每1厘米的像素数量。我说的是普通的CRT/LED/等离子屏幕,不是投影机。

我想在移动设备上使用它。一个常见的标准是每个触摸目标的尺寸至少为9毫米。但是当我在CSS代码中使用height: 9mm时,在我的HTC Desire HD上实际尺寸约为3毫米。

那么我如何让浏览器使用绝对大小显示元素呢?

你不能。无论出于何种原因,移动设备上的浏览器都会一致地告诉您,宽度为1in("一英寸")的元素大小为96像素宽。实际分辨率是多少并不重要;他们都这么说。

解决这个问题而不失去理智的唯一方法是将"虚拟像素"适当大小的所有责任交给设备制造商(和设备软件供应商)。换句话说,你必须相信苹果、谷歌、三星、LG、HTC、摩托罗拉等公司会为公众提供设备,让你的16px文本在用户看到的任何设备上都能读懂,而不管一个16px字形涉及多少实际像素。

有时候,你输了;新款iPad Mini就是一个很好的例子,因为它的屏幕尺寸与iPad 2相同,但屏幕要小得多。这意味着在iPad 2上清晰的16px在iPad Mini上就显得很小了。你的网页几乎不可能弄清楚它是在iPad Mini还是iPad 2上(这是设计的!)苹果故意这样做(em> ),所以最终的结果是,倒霉的iPad Mini购买者得到了制造商的不公平服务。

相比之下,Nexus 7平板电脑的实际屏幕分辨率高于iPad Mini,但它向你的网页报告的屏幕尺寸小于。这意味着你在上的16px文本设备看起来很棒—Nexus 7的用户得到了该制造商的良好服务。

(你当然可以提供工具让用户调整布局。对于一个响应式网站,由于浏览器的各种特性(bug ),很难使一个网站工作得很好,可以用熟悉的移动设备手势缩放。

这很大程度上取决于设备设置。在许多情况下——出于"兼容性的原因"——真正的互操作性与产品进入市场是对立的。

或者换句话说:设备供应商为他们的客户固定了网站,这样他们就可以"随心所欲"地上网了。

Your Desire HD:

  • 对角厘米(在): 11 (4.3)
  • 的决议: 480×800
  • ppcm (PPI): 85(217) <一口> *
  • CSS像素比:1.5

*基于给定显示尺寸的近似计算。

如果你看到这个列表,你可以想象这在每个设备上是不同的。所以你不能相信设备本身。

如果您想解决这个问题,您需要为您的用户提供一种配置它的方法,以便您可以采用。一些供应商/浏览器提供头文件,告诉这些设备做真正的事情。这要看情况而定,我手头没有很好的资源来简单地解决这个问题。我会从研究不同的模型和它们的浏览器软件开始,然后创建一个矩阵,如果有一些通用的程序可用,如果它们能一起工作。

在此之前,我只是要求用户使用相关设置,但根据用户的偏好对body元素进行采用设置。

9mm与9毫米的物理测量值有两个基本的区别。

首先,在显示设备中,锚定单元(CSS Values and Units Module Level 3)通常是像素,mm单元被解释为满足方程1in = 25.4mm = 96px。(即使在印刷媒体中,mm原则上应该固定在物理毫米上,它也多少偏离了它。)你对此无能为力。

其次,在移动设备中,浏览器通常会自动缩放页面。原因是,否则大多数页面将表现得非常糟糕,因为它们是为更大的屏幕设计的(即使是在每个方向的像素数量方面)。可以使用像

这样的标签来防止这种情况。
<meta name="viewport" content="width=device-width, initial-scale=1">

如果这些真实世界的测量值是可靠的,那么它们只会在用于打印格式时才可靠。任何电子产品都会考虑像素,而不是这些像素在现实世界的测量中转化成什么。例如,当您将设备插入投影仪或具有不同分辨率和DPI的外部显示器时,cm和mm应该意味着什么?

哪个设备能记录mm和cm的换算?是显示设备还是发送显示数据的设备?太乱了。RL测量仅用于打印,即使在我的经验中,它们也可能有点冒险。至少我几年前的经历是很冒险的。

我想到了一个方法:大多数浏览器在user-agent header中沿HTTP请求发送设备类型。基于这些信息,我可以在服务器上找到真正的DPI,并将其发送回响应中(例如,作为修改后的CSS)。

然而,保持和维护设备数据库以获得精确的DPI是昂贵的。我最终使用了一组公共参数的近似DPI。在这种情况下,1mm不是恒定的,但差异应该最小化(通常)。

相关文章:
  • 没有找到相关文章