智能手机上字体大小不一致

25

我正在调整一个网页,使其在智能手机上看起来更好。我在CSS文件中声明了一个@media部分,以便可以指定此页面的字体大小。这是那个媒体部分:

@media screen and (max-device-width: 640px) {
    #TermsOfUse {
        padding: 0 2em 0 2em;
        margin-left: auto;
        margin-right: auto;
        color: #777;
        font: small sans-serif;
    }

    #TermsOfUse p {
        color: #777;
        font-weight: bold;
        font: small sans-serif;
        padding-top: 1em;
        padding-bottom: 1em;
    }

    #TermsOfUse #trademark_footer p {
        font: xx-large sans-serif;
    }
}

然而,字体大小显示不一致。我已经告诉它要显示“小号”字体,但一个部分始终以更小的字体大小显示(在底部的id="trademark_footer")。使用“xx-large”甚至不能使字体变得像页面的其余部分中的“小号”字体那么大。我在Android上使用Chrome查看该页面。

此外,当我在以下模拟器中查看此页面时,整个页面上的所有字体都太小了-太小而无法阅读。

http://transmog.net/iphone-simulator/mobile-web-browser-emulator-for-iphone-5.php?u=http://inrix.com/traffic/Privacy

首先,为什么页面底部的商标字体显示比页面其他部分中的字体要小得多(在Android的Chrome浏览器中)?

第二,为什么iPhone模拟器中的所有字体都显示得如此之小?

我试图做的就是在所有智能手机上以可读的大小显示所有字体。

更新:

当我明确指定字体大小时,出现了同样的问题。例如,如果我为主要字体指定了13px,我必须为商标指定约30px的字体大小,才能以类似的大小显示。

如果使用“em”也是同样的情况。

更新:

我刚在我的三星Galaxy S2上测试了默认(我想)浏览器,那也显示出微小的字体,太小了以至于无法阅读。顺便说一下,在默认的Android浏览器中,我可以双击它,然后它会放大到一个很好的大小。

我尝试了这个,但好像没有什么改变:

body {
    -webkit-text-size-adjust: none;
}

你确定模拟器与真实情况相符吗? - cimmanon
我为其中一位客户开发的应用在iPhone上显示字体非常小,他给我发了一张屏幕截图。这与模拟器显示的类似,看起来很真实。同时,在我的Galaxy S2上使用Chrome时,我也遇到了字体大小不一致的问题。我在想这两个问题是否有关联。 - birdus
3个回答

61

我已经查看了该页面的源代码,但是我没有看到

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />

当我在我的 iPhone 上查看时,似乎没有对页面进行任何缩放,这表明设备正在解释页面的大小,因此任何媒体查询都不会生效。

添加 viewport meta 标签应该会触发媒体查询和您所寻找的字体更改。

有关 viewport 标签的信息


那似乎达到了效果!我是一个移动设备的新手,所以我不知道那个元标记。谢谢你! - birdus
6
天啊,这个似乎不重要的标签让我检查字体大小和容器宽度花费了将近一天的时间。知道它很重要真是太好了! - JHannes
1
这个元标签确实有助于字体保持合适的大小,但它似乎也会阻止图像按比例缩放以适应屏幕大小。 - AntonChanning
1
如此简单,却如此关键。难怪我研究过的众多其他解决方案都不合适。我几乎找不到正确的措辞/术语来匹配我的问题,更别提答案了。 - Clarus Dignus

1

这可能有点冒险,但可能会对你有所帮助。

我在iPhone4(iOS 5.0.1)上打开了http://inrix.com/traffic/Privacy,确实字体非常小。

看一下页面@media(您还可以查看HTML5 Boilerplate's template,也许您能从那里挖掘一些关于您的问题的东西)。 我没有任何字体大小问题,并且已经在Chrome(版本26.0.1410.64 m),iOS 5.0.1(9A405)和Android 2.3.6上测试了上一个链接,并且在手机的两个方向上进行了测试。也许您可以从这些@media中挖掘一些东西。

我非常同意Vector's answer 当您想要一致性时,应指定大小,应避免使用名称

最后,以下是一些进一步信息的链接:

最后,作为替代选项,您可以在CSS中下载和嵌入字体

@font-face { 
    font-family: 'LiberationMonoRegular';
    src: url('fonts/LiberationMono-Regular-webfont.woff') format('woff'),
         url('fonts/LiberationMono-Regular-webfont.ttf') format('truetype');
    font-weight: normal;
    font-style: normal; }

然后在您的重置中只需使用您的字体:

* { padding: 0; margin: 0; font-family: "LiberationMonoRegular", Verdana, Tahoma; }

希望能有所帮助!

1
“使用CSS3媒体查询实现响应式设计”这篇文章对我来说非常有用。 - WitVault

0

设置行高怎么样?

我在不同的网络浏览器中遇到了相同的问题,字体位置不同。我可以通过设置heightline-height来解决这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接