UIWebView中字体自动放大问题的探究

前端时间在给客户端添加syntaxhighlighter JS插件时发现一个问题: 如果一段代码中有一行代码比较长,越出了屏幕,那么,整段代码的字体就会变大,对不上行号。

其实这个问题在客户端的软件详情页中也碰到过。软件详情页下方是关于软件的信息,整个信息表格是个table,当某项信息太长时,字体就会放大,整个table就变得非常难看。

于是我添加了下面这段代码

#software_information tr th {
    white-space: nowrap;
    vertical-align: top;
}

#software_information tr td {
    word-break: break-all;
}

效果很好

而这次,syntaxhighlighter处理过的代码片段其实也是一个table,左边的行号和右边的代码各是一个td。由此我想,是不是可以通过给代码强制换行解决这个问题呢?谷歌一下,尝试了几个换行方法后,发现都不太好使,会使行号和代码的对应关系错乱,后来,我在
这篇博客中找到错乱的原因。那么,现在该怎么办呢?有两个方法:1、改用可以自动换行的2.x版;2、坚持强制换行,但那样就要写大段js。这两个方法我都不喜欢。

那现在只能正面解决问题了。可是,问题的成因是什么呢?上次发现软件详情页的显示问题时我就认为可能跟iOS上的渲染有关系。于是我修改一下关键字,再谷歌一下,竟然发现有人遇到了
同样的问题!我在第二个解答下面的评论里找到了解决方法:

.syntaxhighlighter { -webkit-text-size-adjust: none; }

测试了一下,显示效果很好,没有字体大小的变化。

看来问题是出在-webkit-text-size-adjust这个属性上了,那么这个属性有什么用的呢?

查阅
Safari CSS,里面写道:

Specifies a size adjustment for displaying text content in Safari on iOS.

不够详细。继续搜索,找到了
这篇文章,里面提到

Mobile Safari on iPhone will automatically increase the size of small text

据此,对于这个显示问题的成因,我猜是这样的:
如果某个td太长,越出了屏幕,Safari就判断table是显示在更大的屏幕上的,文字就被自动放大了。而整个table同一列的td长度是一样的,所以其他行中同一列的td里的文字也会放大。

另外,根据文章所说,如果将-webkit-text-size-adjust设置为none的话,缩放时,文字就不会调节大小,所以我按照best practice(Bootstrap也是这样哦),修改了一下CSS:

body {
    /* ...... */
    -webkit-text-size-adjust: 100%;
}

显示正常。

参考:

https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust

http://caniuse.com/#feat=text-size-adjust

http://stackoverflow.com/questions/15861093/what-does-webkit-text-size-adjust-do

时间: 2024-07-31 16:54:54

UIWebView中字体自动放大问题的探究的相关文章

[视频]MAC中如何单独放大文本字体

我们知道使用MAC触控板的双指合拢手势可以进行放大或缩小操作,但其对应的是整个界面内容的放大及缩小,如果仅对其文本内容进行放大或缩小,可使用快捷键进行操作. 默认的 ”Command” + “=“  为放大文本 ”Command” + “-“  为缩小文本 相关操作视频 原创文章,转载请注明: 转载自吴川斌的博客 本文链接地址: [视频]MAC中如何单独放大文本字体

怎么让手机浏览器和微信焦点在文本输入框时不自动放大页面

方法一:禁止页面缩放 在head标签中加入以下代码 <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0, user-scalable=no"> content的解释 width=device-width //宽度等于设备屏幕宽度 initial-scale=1.0 //初始缩放比例 minimum-

[.NET]解决EMF图像自动放大空白

在.NET中产生emf主要使用Metafile对象,但在使用过程中会发生图像自动放大,多余空白的问题. 模拟:声明Size(100,100)的区域,并绘制p1(-50,-50)->p2(50,50)的线条. 常规情况如下图: 图中的(0,0)点并非左上角. 正确限定区域方法: new Metafile(file, intptr, visibleClipBounds,MetafileFrameUnit.Pixel); 结果如下图:

(转)完美解决 Android WebView 文本框获取焦点后自动放大有关问题

完美解决 Android WebView 文本框获取焦点后自动放大问题 前几天在写一个项目时,要求在项目中嵌入一个WebView 本来很快就完成了,测试也没有问题.但发给新加坡时,他们测试都会出现文本框聚焦时,网页面会放大(他们用三星手机测试的) 网上查了好久参考他的方法加上去测试 http://www.cppblog.com/guojingjia2006/archive/2012/12/18/196429.html 下面我将原文copy过来 **************************

在UIWebView中媒体文件的展示和HTML字符串的展示

UIWebView中媒体文件的展示和HTML字符串的展示 序言: UIWebView中不仅可以显示网页,还可以显示或者播放图片.视频.音频,甚至.PDF和Word文档.以上东西可以保存在Web上还可以压缩保存到本地.... 第一步: 我们今天来在Web上显示图片. NSString*path; path=[[NSBundle mainBundle] pathForResource:@"one1" ofType:@"png"]; NSData*data=[NSData

完美解决 Android WebView 文本框获取焦点后自动放大问题

前几天在写一个项目时,要求在项目中嵌入一个WebView 本来很快就完成了,测试也没有问题.但发给新加坡时,他们测试都会出现文本框聚焦时,网页面会放大(他们用三星手机测试的) 网上查了好久参考他的方法加上去测试 http://www.cppblog.com/guojingjia2006/archive/2012/12/18/196429.html 下面我将原文copy过来 **************************************************************

CSS样式中字体和大小

1.css中引入外部字体文件: @font-face 被列为了 CSS3 的一项新特性,其实它并不是什么新鲜技术,它最早出现在 CSS2 的规范定义中,但是在 CSS2.1 中又被删除,现在被正式列入 CSS3.目前主流的浏览器(IE 4+/Firefox 3.5+/Chrome 1+/Safari 3.1+/Opera 10+)都能够支持这个属性,所以不用担心会有浏览器兼容性问题. @font-face 允许您在网页中使用电脑中没有安装的字体,完全摆脱安全字体的限制.只需将字体包安装在服务器上

【ios h5踩坑】关于ios上嵌入h5导致input聚焦时页面自动放大问题

目录 问题描述 问题分析 解决方案 ? 问题描述 最近有一个项目需要给ios和安卓app开发h5页面,在安卓上测试没有问题,但是ios(iphone8)上点击输入框会导致页面缩放失败,但在iphone 8plus/x上不会产生这种问题.并且设置 <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-

关于Java运算中类型自动提升的问题

1.表达式中的自动类型提升: 表达式求值时,Java自动的隐含的将每个byte.short或char操作数提升为int类型,这些类型的包装类型也是可以的. 例如:short s1 = 1; s1 = s1 + 1; s1+1运算中的操作数s1会被自动提升为int类型,s1+1运算结果会成为int类型,再赋值给short类型的s1时,编译器会报告需要强制转换类型的错误.需要改为short s1=1; s1=(short)(s1+1);结果就是short类型. 例如:short s1 = 1; s1