webapp字号大小跟随系统字号大小缩放的示例代码


Posted in HTML / CSS onDecember 26, 2018

最近做了一个webapp项目,混合式开发,外部原生,内部webview嵌套H5页面。前端方面采用了vue开发,适配采用的是flexible+rem做的适配。本来一切都很好,可是吧,领导说客户有的年纪大 ,看不清字体,希望网页字体可以跟随系统字号大小变化。当时心里真是...,然无奈只能想办法解决问题,网上搜罗一圈都是禁止内部跟随系统字号变化,看来只能自己搞了。

第一种方案

最简单的让原生进行操作,内部不做控制,外部放大,里面自己适应。但是有问题,文本字体可以放大,有的输入框和输入框的内容却没有放大,故淘汰该方案。

第二种方案

外部原生webview让里面的放大缩小不跟随系统变化,内部自己控制。和安卓同事商量后,他去获取系统放大的参数,然后将参数传递给内部webapp,内部来自定义控制缩放。

代码如下:

setScaleFont(){
      let fontScale=1;
      let scaleFontSize;
      let initFontSize;
      fontScale=parseFloat(window._nativeMe.getFontScale());
      console.log(`缩放比例:${fontScale}`);
      let docHtml=document.getElementsByTagName("html")[0];
      initFontSize=this.getStyle(docHtml,'fontSize').split('px')[0];
      scaleFontSize=fontScale*initFontSize;//1-1.4等比缩放
      docHtml.style.fontSize=scaleFontSize +'px';
    },
    getStyle(obj, name){
      if(window.currentStyle){
        return obj.currentStyle[name];
      }
      else{
        return getComputedStyle(obj, false)[name];
      }
    }

先获取到初始的缩放比例,然后根据安卓原生传入的缩放比例改写html标签上的fontsize大小,由于采用了rem适配,自会根据根元素大小进行适配。这种方案必须确保先让flexible的适配先执行,然后判断是否是安卓,如果是安卓就执行setScaleFont方法才有效,否则会被flexible里面的方法覆盖掉,造成页面先放大后缩小或者先缩小后放大的现象。

webapp字号大小跟随系统字号大小缩放的示例代码

如上图,我是注释掉了这段代码,不然就会产生上述放大缩小的现象。

结论

该种方法也只能在安卓上有效,苹果由于安全权限的问题无法获取系统字体的缩放比例,故无法调整,如果有大神知道在苹果上如何操作或者有别的更好办法,请告知,不胜感激。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3制作Dropdown下拉菜单的方法
Jul 18 HTML / CSS
深入理解css属性的选择对动画性能的影响
Apr 20 HTML / CSS
用React加CSS3实现微信拆红包动画效果
Mar 13 HTML / CSS
css3针对移动端卡顿问题的解决(动画性能优化)
Feb 14 HTML / CSS
HTML5 Canvas实现文本对齐的方法总结
Mar 24 HTML / CSS
html5新增的属性和废除的属性简要概述
Feb 20 HTML / CSS
HTML5的一个显示电池状态的API简介
Jun 18 HTML / CSS
如何利用input事件来监听移动端的输入
Apr 15 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
Sep 17 HTML / CSS
html如何对span设置宽度
Oct 30 HTML / CSS
Html5同时支持多端sdk的小技巧
Nov 17 HTML / CSS
Unicode中的CJK(中日韩统一表意文字)字符小结
Dec 06 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
Jan 05 #HTML / CSS
HTML5实现表单自动验证功能实例代码
Jan 11 #HTML / CSS
HTML5 File接口在web页面上使用文件下载
Feb 27 #HTML / CSS
使用phonegap检测网络状态的方法
Mar 30 #HTML / CSS
HTML5文档结构标签
Apr 21 #HTML / CSS
HTML5的文档结构和新增标签完全解析
Apr 21 #HTML / CSS
html5的localstorage详解
May 09 #HTML / CSS
You might like
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
python使用append合并两个数组的方法
2015/04/28 Python
Python复制文件操作实例详解
2015/11/10 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
德国网上宠物店:Zoobio
2018/05/23 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
编辑找工作求职信范文
2013/12/16 职场文书
八项规定整改措施
2014/02/12 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
六一儿童节活动总结
2014/08/27 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
离婚协议书范文
2015/01/26 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
教学质量月活动总结
2015/05/11 职场文书
多人股份制合作协议书
2016/03/19 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
我收到了德劲DE1107
2022/04/05 无线电