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+DIV实现漂亮的动画彩色标签
Jun 16 HTML / CSS
一款css实现的鼠标经过按钮的特效
Sep 11 HTML / CSS
详解CSS 3 中的 calc() 方法
Jan 12 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
Jun 01 HTML / CSS
html5新增的定时器requestAnimationFrame实现进度条功能
Dec 13 HTML / CSS
html Table 表头固定的实现
Jan 22 HTML / CSS
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
Oct 20 HTML / CSS
HTML5中meta属性的使用方法
Feb 29 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
Jan 09 HTML / CSS
使用phonegap进行提示操作的具体方法
Mar 30 HTML / CSS
canvas学习总结三之绘制路径-线段
Jan 31 HTML / CSS
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
Apr 22 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
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
php实现计数器方法小结
2015/01/05 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
Bootstrap精简教程
2015/11/27 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
python实现数独算法实例
2015/06/09 Python
Python进阶学习之特殊方法实例详析
2017/12/01 Python
Python简单生成随机数的方法示例
2018/03/31 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python collections模块使用方法详解
2019/08/28 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
学习保证书怎么写
2015/02/26 职场文书
搞笑老公保证书
2015/02/26 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
如何利用React实现图片识别App
2022/02/18 Javascript
Mysql事务索引知识汇总
2022/03/17 MySQL