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制作半透明边框(Facebox)类似渐变
Dec 09 HTML / CSS
基于css3实现漂亮便签样式
Mar 18 HTML / CSS
纯CSS3实现手风琴风格菜单具体步骤
May 06 HTML / CSS
CSS3动画效果回调处理详解
Dec 10 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
Jun 01 HTML / CSS
详解background属性的8个属性值(面试题)
Nov 02 HTML / CSS
HTML5实时语音通话聊天MP3压缩传输3KB每秒
Aug 28 HTML / CSS
HTML5中使用json对象的实例代码
Sep 10 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
Sep 23 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
HTML5逐步分析实现拖放功能的方法
Sep 30 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
Nov 04 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
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
Java面向对象面试题
2016/12/26 面试题
2014年信息中心工作总结
2014/12/17 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书