android dp单位 什么是CSS的dp(密度无关像素)单位?



dp单位 (6)

http://www.w3.org/TR/css3-values/#lengths

CSS中最接近的单位是视口百分比单位。

  • vw - 等于初始包含块宽度的1%。
  • vh - 等于初始包含块高度的1%。
  • vmin - 等于较小的vw或vh。
  • vmax - 等于vw或vh中的较大者。

Opera唯一知道不支持这些单元的移动浏览器。 http://caniuse.com/#feat=viewport-units

对于Android,人们建议对UI元素使用dp(密度无关像素)测量,并且存在诸如使用48dp作为按钮高度等的约定。

我正在开发一个Web应用程序,我对UI设计提出了很多批评,称它不符合Android设计标准。 显然,我的应用程序看起来会有所不同,因为它使用的是CSS和HTML而不是Android Holo主题,但我仍然希望尽可能地使它符合要求。 然而,CSS不允许密度独立测量。

当我在不同的分辨率和像素密度上测试我的应用程序时,它看起来不太好,有时,它是不成比例的,所以它甚至不起作用。 CSS没有像Android原生开发那样的dp单元,但我想知道一些替代方案是什么。

我能以某种方式使用Javascript获得像素密度并手动缩放所有内容吗? 制作适合所有分辨率/密度的Web应用程序的最佳方法是什么?


Answer #1

使用rem

它是根元素的字体大小,是其他UI元素大小的非常好的基本单位。

如果使用相同的绝对大小(厘米),文本和其他元素在移动设备上会太大或在桌面上太小。

如果使用相同数量的像素,则文本和其他元素在移动设备上会太小或在桌面上太大。

rem单位在现场,因为它说“嘿,这是正常文本的大小。” 基于其他UI元素的大小是一个非常合理的选择。


Answer #2

为什么不使用点,它是跨设备的一致大小。 并且是相对于屏幕尺寸。 大多数人都不熟悉它,因为它来自传统出版。


Answer #3

基于rem单位的界面怎么样?

我没有足够的经验确认,但我认为你可以根据视口大小做一些数学运算,在根元素中应用字体大小,整个界面会相应调整。 这件事对我来说有点巫术。


Answer #4

在CSS3中,可能更准确地说网络没有Android的pxCSS3的px规范说明了这一点:

像素; 1px等于1英寸的1/96

px可能是您将来想要的衡量标准。


Answer #5

从CSS3开始,没有真正与设备无关的CSS单元。 有关绝对长度的信息,请参阅W3C规范 。 特别是,绝对单位可能与其物理测量值不匹配。

如果物理单位符合他们的目的,你可以使用点数; 积分足够接近dps:

1 in = 72 pt
1 in = 160 dp

1 dp = 72 / 160 pt

如果您使用SCSS,您可以编写一个函数以pts返回:

@function dp($_dp) {
  @return (72 / 160) * $_dp + pt;
}

并使用它:

.shadow-2 {
  height: dp(2);
}




screen