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 按钮样式简单可扩展创建
Mar 18 HTML / CSS
CSS3图片旋转特效(360/60/-360度)
Oct 10 HTML / CSS
简单掌握CSS3中resize属性的用法
Apr 01 HTML / CSS
CSS中的字体大小设置属性总结
May 24 HTML / CSS
使用CSS变量实现炫酷惊人的悬浮效果
Apr 26 HTML / CSS
canvas实现俄罗斯方块的方法示例
Dec 13 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
Aug 02 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
Feb 28 HTML / CSS
HTML5 input新增type属性color颜色拾取器的实例代码
Aug 27 HTML / CSS
详解CSS中的特指度和层叠问题
Jul 15 HTML / CSS
HTML常用标签超详细整理
Mar 19 HTML / CSS
通过feDisplacementMap和feImage实现水波特效
Apr 24 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
如何在PHP程序中防止盗链
2008/04/09 PHP
php 正则匹配函数体
2009/08/25 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
python的Template使用指南
2014/09/11 Python
用Python抢过年的火车票附源码
2015/12/07 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
机关驾驶员违规检讨书
2014/09/13 职场文书
2015年党员承诺书
2015/01/21 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python