如何使用dp计算阴影 - Web开发HTML CSS

时间:2016-03-25 09:55:28

标签: html css css3 material-design dpi

我对在web开发中使用dp有疑问。我正在阅读google material design guidelines,他们正在谈论基于dp的高程和阴影。我如何在Web开发中使用它?有没有办法计算这个如何使用HTML CSS创建基于dp的阴影?

网页示例:

凸起按钮

休息状态:2dp

按下状态:8dp

仅对于桌面,凸起的按钮可以具有以下高度:

休息状态:0dp

按下状态:2dp

3 个答案:

答案 0 :(得分:2)

Google Material design documents中所述:

  

dp等于屏幕上的一个物理像素,密度为160。   要计算dp:

     

dp =(宽度,以像素为单位* 160)/屏幕密度

     

编写CSS时,请在说明dp或sp的地方使用px。 Dp只需要   用于开发Android。

屏幕密度

  

屏幕分辨率是指显示屏中的像素总数。

     

屏幕密度=屏幕宽度(或高度),以像素/屏幕宽度(或   身高)英寸

所以这取决于屏幕的宽度和高度。网上有一些转换器可以计算每种密度。但由于大多数屏幕仍为72dpi(未提及HDPI屏幕),我认为这是一个合适的起点。

答案 1 :(得分:0)

没有真正与设备无关的CSS单元。见http://www.w3.org/TR/css3-values/#absolute-lengths。特别是,绝对单位可能与其物理测量值不匹配。

如果物理单位符合他们的目的,你可以使用点数;积分足够接近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);
}

答案 2 :(得分:0)

对于Material的阴影,他们只使用dp的概念来尝试传递元素应该如何分层。

2dp < 8dp // 2 is layered under 8
// or
2dp (resting) => 8dp (focused)

他们所指的是 z-depth (或在z轴上)。这不能直接转换为CSS。 当他们谈论提升水平时,他们并不是指x&amp; y或宽度&amp;身高维度。 See design guide page on elevation.

如果您只是在寻找CSS阴影的值,请点击此处。 https://github.com/mrmlnc/material-shadows/blob/master/material-shadows.scss

接近将z-depth dp转换为CSS值。 CSS值与Google的Polymer元素匹配,但最有可能出现在其中。

祝你好运!