Phonegap应用程序文本和布局太小
我最近build立一个使用HTML,CSS,JavaScript的Android应用程序,并通过手机运行它们来创build实际的应用程序。 我在一部手机中遇到的问题之一是文字太小。 还有一些图像也有点小。 我添加了一个视口元标记,但它似乎也没有工作。 这里是meta标签:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="format-detection" content="telephone=no" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />`
这是它的样子
这是它应该看起来如此:
我有同样的问题,并解决了它改变视口。 我也认为这个问题是手机的问题,但是用于testing的设备的确有不同的dpi。
我的解决scheme是将视口上的目标densitydpi更改为:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, target-densitydpi=medium-dpi, user-scalable=0" />
希望能帮助到你
我有一个类似的问题,并做了一些我认为值得分享的研究:
-
如前所述,将视口的
target-densitydpi
为medium-dpi
(= 160dpi)。 这使得px
单元虚拟化,例如在html / css中为1px
,然后对应于320dpi设备上的2个物理像素。 请注意,图像也缩放(和模糊)。<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=medium-dpi" />
-
CSS:使用媒体查询来实现条件样式。 根据宽度,高度,方向或方向调整不同的屏幕尺寸是非常简单的。 不同的像素密度可以通过
device-pixel-ratio
进行处理(感谢Marc Edwards提供的示例: https : //gist.github.com/marcedwards/3446599 )。@media screen and (-webkit-min-device-pixel-ratio: 1.5), screen and (-o-min-device-pixel-ratio: 15/10) { body { background-image: ... } /* provide high-res image */ }
媒体function
resolution
比device-pixel-ratio
更清晰,但缺less移动浏览器支持。 -
Javascript:调整button大小,图像等基于
window.devicePixelRatio
和window.screen.width
和window.screen.height
。 根据Javascript的布局被认为是不好的做法。 在pageload
载入事件之后执行开始,加载期间也可能导致闪烁。 -
-webkit-image-set
和imagesrc-set
可以很容易地为视网膜显示提供高分辨率的图像,请参阅http://www.html5rocks.com/en/mobile/high-dpi/#toc-bff 。 浏览器支持是有限的。background-image: -webkit-image-set( url(icon1x.jpg) 1x, url(icon2x.jpg) 2x );
target-densitydpi = medium-dpi为我们工作。
场景当ee从PhoneGap 2.2升级到3.3时遇到了这个问题。
看来,删除target-densitydpi
完全带来了最好的结果。
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
在大多数情况下,这应该足以控制您的应用程序的外观。
为Android 更新答案:
问题是在Android设备上有这个Accessibilly设置,你可以尝试改变字体大小(在Android设置上search字体大小 ),并再次运行你的应用程序。
所以你的应用程序的字体将会改变为你的设置
所以这里是Cordova的解决scheme
使用: mobile-accessibility来禁用PreferredTextZoom
在您的Cordova项目上安装移动可访问性
$ cordova plugin add https://github.com/phonegap/phonegap-mobile-accessibility.git
而JS部分是这样的:
document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { if (window.MobileAccessibility) { window.MobileAccessibility.usePreferredTextZoom(false); } }
对于Windows Phone(WP8)我find了以下解决scheme: https : //github.com/phonegap/phonegap-app-developer/issues/92
- 添加到CSS:@ -ms-viewport {width:device-width; }
- 添加到HTML:
<meta name="viewport" content="width=device-width, initial-scale=1" />
-
添加到补丁IE 10:
(function(){if(“document.documentElement.style && navigator.userAgent.match(/IEMobile/10.0/)”中的“-ms-user-select”){var msViewportStyle = document.createElement(“style”); msViewportStyle。 appendChild(document.createTextNode(“@ – ms-viewport {width:auto!important}”)); document.getElementsByTagName(“head”)[0] .appendChild(msViewportStyle);}})();
在此添加此解决scheme
对于我来说,一些文字渲染真的很大,其他文字是正确的大小。 问题是在CSS中使用rem值的字体大小。 出于某种原因,字体大小是基本值(在本体中定义)的元素被渲染得比他们应该的大。
解决的办法是为整个站点的包装器元素重新分配rem字体大小的全局值。
(我的。字体大小(1.4)只是一个混合渲染:font-size:1.4rem;)
所以这
html { font-size: 62.5%; } body { .font-size(1.4); } h1 { .font-size(2.6); }
可以用这个修复
html { font-size: 62.5%; } body { .font-size(1.4); } .wrapper { .font-size(1.4); } h1 { .font-size(2.6); }