android - CSS:适用于各种移动设备的字体大小、物理按钮高度

标签 android css webkit

我正在开发一个在 iPhone 和各种 Android 手机上运行的网络应用程序。我用过iUI framework迄今为止。 iUI 是为 iPhone 3 设计的,使用 CSS 中的像素来设置字体大小、行高等。但结果在具有高像素密度(240 x 320 像素,2.8 英寸 = 143dpi)的较新三星 I5500 上无法使用。所有的元素都太小了。这可以在浏览器设置 > 缩放 > 关闭中得到部分补偿,但我不喜欢让用户更改他们的浏览器设置。

我的目标是,每个链接和每个按钮都可以通过触摸舒适地使用。为此,我想确保元素的最小物理尺寸。幸运的是,CSS 2.1 规范为此提供了一种方法:min-height: 20mmmin-height: 0.8in。不幸的是,我拥有的每部电话都忽略了该声明。在 iPhone 3GS 上,该元件尺寸为 11 毫米,在三星 I5500 (Andorid 2.1) 上为 10 毫米,在具有低分辨率显示屏的 HTC Wildfire (Android 2.2) 上为 14 毫米。看起来 WebKit 浏览器假定一些低分辨率,如 96dpi,呈现元素在高分辨率手机显示器上几乎不可读和几乎不可点击。

blog post at sencha提供了一些解决方法,建议设置 em 中按钮、链接、列表项的所有大小,并通过某种浏览器嗅探来移动一次 body 的大小。

他们还提到了 CSS3 媒体查询,但告诉我们它目前不起作用:

@media screen and (min-resolution: 160dpi) {
    body {
      font-size: 114%;
    }
}

安卓

<meta name="viewport" content="target-densitydpi=low-dpi" />

似乎有帮助。它在具有高 dpi 的设备上比在设备上放大页面更多 低dpi。但是元素的物理尺寸仍然不同。另见 Android WebView .

Android DisplayMetrics密度与 scaledDensity 的文档带来更多的模糊而不是澄清。

到目前为止,我为 iPhone 和 Android 找到的最佳组合是 iUI 加上 HTML 头中的以下声明:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;target-densitydpi=low-dpi;"/>

是否有一种现代、优雅的方式来为各种移动设备设置字体大小和按钮宽度和高度?

或者您使用哪种解决方法?

最佳答案

我认为您的答案是使用 EM 单位而不是像素单位。

http://www.w3.org/WAI/GL/css2em.htm

它是一种比例单位。这样您就不会将字体和按钮的大小指定为固定数字,而是指定为该设备默认字体的乘数。

无论如何,这是网站管理员可访问性的最佳实践,也是为什么大多数框架都是邪恶的!! :D

关于android - CSS:适用于各种移动设备的字体大小、物理按钮高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5563492/

相关文章:

apache-flex - Adobe Air 使用什么版本的 WebKit?

css - Webkit CSS 重置?

node.js - 快照 HTML 页面,然后使用 node.js 和 phantom 转换为图像

安卓/ Kotlin : How to get a DocumentReference to a document in a sub-collection in Firestore?

android - 通过 xml 更改切换按钮文本颜色

javascript - 简化 Jquery/Javascript 代码并添加动画

javascript - 带有子菜单的可折叠垂直侧边栏菜单图标

android - IllegalStateException fragment 已添加

android - 从 NDK 版本 16 更新到 NDK 版本 17 时出错

javascript - Fancybox 模态滚动不起作用