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中的calc函数浅析
Jul 10 HTML / CSS
IE下实现类似CSS3 text-shadow文字阴影的几种方法
May 11 HTML / CSS
基于css3实现漂亮便签样式
Mar 18 HTML / CSS
css3中background新增的4个新的相关属性用法介绍
Sep 26 HTML / CSS
一款纯css3实现的动画加载导航
Oct 08 HTML / CSS
一款纯css3实现简单的checkbox复选框和radio单选框
Nov 05 HTML / CSS
使用CSS3来匹配横屏竖屏的简单方法
Aug 04 HTML / CSS
html5 web本地存储将取代我们的cookie
Dec 26 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
Jun 25 HTML / CSS
使用html5 canvas 画时钟代码实例分享
Nov 11 HTML / CSS
浅谈html5 video 移动端填坑记
Jan 15 HTML / CSS
基于CSS3画一个iPhone
Apr 21 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 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
thinkphp缓存技术详解
2014/12/09 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
javascript下function声明一些小结
2007/12/28 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
js实现五星评价功能
2017/03/08 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python实现图片转字符画的示例
2017/08/22 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
函授教育个人学习的自我评价
2013/12/31 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
班组拓展活动方案
2014/08/14 职场文书
党支部活动策划方案
2014/08/18 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
python游戏开发之pygame实现接球小游戏
2022/04/22 Python