基于REM的CSS在Android4.4及5.0部分机型出现布局错乱

使用rem做为长度单位来布局,如今已经变得非常的常见,因为它可以适应各种屏幕尺寸。rem采用html的font-size属性作为基本单元,假如font-size是18px,那么2rem=18px * 2 = 36px。淘宝的lib-flexible库,就是使用屏幕宽度的十分之一作为html的font-size,来实现屏幕的适配。

最近开发的H5页面,采用的就是rem作为长度单位布局。在iPhone和大部分Android机型上自测均无问题。提交测试后,发现在三星Note4(Android4.4)、魅族m1 note(android4.4.4、Flyme 4.2.0)和华为荣耀上,均出现了布局错乱——一行变成了两行。经过反复调试,最后发现是html的font-size出了问题——实际字体比代码设置的字体要大一些。例如代码里指定为36px,实际上使用的是39px。

开始以为是Android的font boosting问题,通过设置max-height: 999999px,并没有解决,加上其他机型并无此问题,所以可以排除。

由于并没有找到可用的解决方案,只能自己搞定。既然实际字体会比设置的字体要大,那么解决方法就很简单——设置一个小点的字体,使得实际字体的大小就是我需要的字体大小即可:

function fixFontSize() {
  var $html = $('html');
  var remBase = $(window).width() / 10;
  var fontSize = remBase;
  while (true) {
    var actualSize = parseInt( $html.css('font-size') );
    if (actualSize > remBase && fontSize > 10) {
      fontSize--;
      $html.attr('style', 'font-size:' + fontSize + 'px!important');
    } else {
      break;
    }
  }
};

对这个问题,如果有更好的解决方法,也请指出,一起讨论。

时间: 2024-11-01 14:50:52

基于REM的CSS在Android4.4及5.0部分机型出现布局错乱的相关文章

开发基于Web的CSS设计器.代码参考

css|web|参考|设计 这里对前面文章讲的CSS设计器系统关键代码作一些小结,如果没有看过前面文章的请先参看"开发基于Web的CSS设计器" 解析CSS样式文件 这段代码主要作用是把CSS文件分解为多个样式类,并按名称/文本属性生成ClassItem对象,并保存在一个ArrayList(cssList)中(C#代码) //读取文件FileInfo theSource= new FileInfo (@m_filePath);StreamReader reader = theSourc

开发基于Web的CSS设计器

css|web|设计 这半年参与了一个基于asp.net的中型应用系统开发,其间经历种种,收获不少.前段时间做了一个基于Web的CSS设计器,虽然技术不算复杂,不过综合了C#/XML/HTC等技术,对于大家应该有一定参考价值:而且该设计器相对于系统比较独立,因此在这里和大家共享,供大家参考,并请多提意见! 设计器的主要功能就是在web界面上设计操作CSS样式表,目的是方便用户自定义系统界面. 相信做过Web开发的人大多用过Dreamweaver或者做asp.net开发也应该用过vs.net,那么

8个强大的基于Bootstrap的CSS框架

做过前端开发的小伙伴们应该对Bootstrap不 会陌生,它是由Twitter推出的开源CSS框架,其中包含了很多Web前端开发的工具包和应用组件.当然,和jQuery一样,Bootstrap同 时也是一个开放式的CSS框架,基于Bootstrap,我们也可以做许多不错的CSS UI组件.本文就介绍了8个强大的基于Bootstrap的CSS框架,一起来看看. 1.Bootstrap Metro Dashboard - 基于Bootstrap的后台管理面板 这是一款基于Bootstrap的Metr

9 个基于JavaScript 和CSS 的Web 图表框架

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 jQuery, MooTools, Prototype 等优秀的 JavaScript 框架拥有各种强大的功能,包括绘制 Web 图表,使用这些框架以及相应插件,我们可以非常轻松地实现曲线图,圆饼图,柱状图等 Web 图表的绘制,而不必象以往那样通过复杂的 Flash 技术实现.本文介绍了9个优秀的基于 JavaScript 与 CSS 的

基于Jquery+div+css实现弹出登录窗口(代码超简单)_jquery

具体代码详情如下所示: 基本思路先隐藏(dispaly:none)再显示,半透明蒙版层通过 z-index:9998; z-index:9999; 值越大越在前面 index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns

网页-html+css新手,大神们能帮看看这个布局怎么搞么

问题描述 html+css新手,大神们能帮看看这个布局怎么搞么 如图,这是我网页布局的草稿,具体应该怎么搞不太明白.能帮帮我么 解决方案 图片转过来啦 解决方案二: 在中间多加一个div用来装中间的三个div 解决方案三: 解决方案四: 上下两个div,一个float是top,一个bottom,中间那个用absolute的postion,自己用JavaScript去控制它的left和top,以及height,它里面套3个div,自己控制宽度 解决方案五: 中间三个div用浮动就行了 解决方案六:

ReactCSS —— 基于 React 的 CSS 样式定义

ReactCSS 是一个基于 React 模式实现的 CSS 样式操作封装和定义.提供一种非常简单的方式来附加 inline CSS 样式 文章转载自 开源中国社区 [http://www.oschina.net]

基于jQuery UI CSS Framework开发Widget的经验_jquery

jQuery UI中两大核心的css文件是ui.core.css和ui.theme.css.这两个css样式贯穿整个基于jQuery ui的界面上,并且可以通过jQuery ui ThemeRoller来生成自己的样式. .ui-helper-hidden :为元素应用display:none .ui-helper-hidden-accessible:将元素的绝对位置设置为不可见 .ui-helper-clearfix:适用于浮动包裹父元素的属性 . ui-helper-zfix:适用于修复if

抛出html5的战略地位,未来的应用基于javascript和css到底是进步还是退后?

问题描述 也许5~10年后,html5将一统江湖.届时,一般的应用程序都是基于html5+javascript+css3之类开发的,而我们现在常用的c#.java之类的面向对象语言,用途越来越小.且不论html5的战略地位,但是,这种开发模式到底是进步还是后退?以前学计算机历史的时候,老师说过,面向对象语言的出现,绝对是编程史上的一大步.封装继承,为我们重用.扩展代码提供了极其便利的途径:接口多态,为我们模块化编程提供了强有力的技术支持.于是,越来越多的面向对象语言出现,人们在此积累了大量的框架