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

svujldwt  于 2023-01-07  发布在  Android
关注(0)|答案(9)|浏览(177)

对于Android,人们建议对UI元素使用dp(密度无关像素)度量,并且存在一些约定,例如使用48dp作为按钮高度等。
我正在开发一个网页应用程序,我收到了很多关于UI设计的批评,说它不符合Android设计标准。显然,我的应用程序看起来会有所不同,因为它使用CSS和HTML而不是Android Holo主题,但我仍然希望尽可能地使它符合标准。然而,CSS不允许密度独立的测量。
当我在不同的分辨率和像素密度下测试我的应用程序时,它看起来并不好,有时候,它甚至不成比例,所以它甚至不起作用。CSS没有像Android原生开发那样的dp单元,但我想知道有什么替代品。
我能用Javascript获得像素密度,然后手动适当地缩放所有内容吗?制作一个在所有分辨率/密度下都看起来和工作得很好的Web应用程序的最佳方法是什么?

ntjbwcob

ntjbwcob1#

我不同意目前公认的答案,正如uber5001所建议的,px是一个固定的单位,与Android专用的dp的努力精神相似。
根据材料质量标准:
编写CSS时,在声明dp或sp的地方使用px。只有在开发Android时才需要使用Dp。
另外
当设计网页时,用px(像素)替换dp。

rdrgkggo

rdrgkggo2#

使用rem

它是根元素的字体大小,也是其他UI元素大小的一个很好的基本单位。
如果使用相同的绝对大小(厘米),文本和其他元素在移动的上会太大,在桌面上会太小。
如果使用相同数量的像素,文本和其他元素在移动的上会太小,在桌面上会太大。
rem单元是正确的,因为它说“嘿,这就是正常文本应该有多大。”将其他UI元素的大小基于此是一个相当合理的选择。

x7yiwoj4

x7yiwoj43#

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

x8goxv8g

x8goxv8g4#

在CSS3中,更准确的说法是网络没有Android的px。CSS3的px规范是这样说的:
像素; 1 px等于1英寸的1/96
px可能是您将来需要的度量。

wbgh16ku

wbgh16ku5#

从CSS3开始,没有真正独立于设备的CSS单位。请参见W3C规范中关于绝对长度的内容。特别是,绝对单位可能与它们的物理测量值不匹配。
注:如果锚单位是像素单位,则物理单位可能与其物理度量不匹配。或者,如果锚单位是物理单位,则像素单位可能不会Map到整数个设备像素。
注:像素单位和物理单位的定义与以前版本的CSS不同。特别是,在以前版本的CSS中,像素单位和物理单位没有固定的比例关系:物理单位总是与它们的物理测量值相联系,而像素单位将变化以最接近地匹配参考像素。(进行此更改是因为太多现有内容依赖于96 dpi的假设,并且打破该假设会破坏内容。)
如果物理单位真的适用于它们的用途,你可以使用像点这样的东西;点足够接近DPS:
如果使用SCSS,则可以编写一个以pts为单位返回的函数:

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

并使用它:

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

t5fffqht6#

基于rem单位的接口怎么样?
我没有足够的经验来确认这个问题,但我认为你可以根据视口大小做一些数学计算,在根元素中应用字体大小,整个界面会相应地调整。

vwkv1x7d

vwkv1x7d7#

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

sg2wtvxw

sg2wtvxw8#

混合使用vw(任何设备的屏幕宽度)和em怎么样?这里字体大小是动态变化的,取决于你的设备屏幕宽度。在你的主CSS文件中使用下一个规则:

font-size: calc(100vw * 10 / 375);

(iPhone 6/7/8的宽度为375 px,更改为320 px(iPhone5)等)
在所有情况下,它都是完美的。只有一个负。如果你的目标是“像素完美”,那么你需要在点之后使用大数字。
例如:您的目标是字体大小h5:所有屏幕均为18 px。
那么你的完美“他们”将会是:

h5 { 
 font-size: 1.79904em;
 }

如果不完美,使用18 / 10:

h5 { 
 font-size: 1.8em;
 }

根据谷歌浏览器你得到18.0096px;

zpqajqem

zpqajqem9#

现在是2023年,带有断点的响应式网页设计是预测屏幕变化和排版大小的最佳实践。使用断点调整字体大小的另一种方法是为每个设备加载独立的CSS文件,这样每个宽度都有独立的CSS集。然而,后者是一场维护起来的噩梦。简单地将CSS与断点的中断放在一起编写,可以使每个人都保持理智,一切都保持整洁。
也就是说,使用PX,为带有断点的小屏幕减少字体大小,让设备自己处理平滑。
生活在相对单位的世界中,子元素向上引用一个级别作为它们的大小引用,所以根级别的1 em和子层次结构/ DOM下两个级别的1 em是不同的,这是另一个疯狂的做法。

相关问题