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中的Transition过度与Animation动画属性使用要点
May 20 HTML / CSS
使用CSS变量实现炫酷惊人的悬浮效果
Apr 26 HTML / CSS
css3实现书本翻页效果的示例代码
Mar 08 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
Jul 16 HTML / CSS
html5记忆翻牌游戏实现思路及代码
Jul 25 HTML / CSS
使用HTML5的File实现base64和图片的互转
Aug 01 HTML / CSS
HTML5实现移动端复制功能
Apr 19 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
Nov 22 HTML / CSS
CSS3常见动画的实现方式
Apr 14 HTML / CSS
浅谈CSS不规则边框的生成方案
May 25 HTML / CSS
html+css实现赛博朋克风格按钮
May 26 HTML / CSS
Html5大屏数据可视化开发的实现
Jun 11 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生成EXCEL的东东
2006/10/09 PHP
php结合飞信 免费天气预报短信
2009/05/07 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
js实现打字小游戏
2019/12/17 Javascript
python中管道用法入门实例
2015/06/04 Python
浅析Python编写函数装饰器
2016/03/18 Python
Python自动发邮件脚本
2017/03/31 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
自荐信写法介绍
2014/01/25 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
建筑节能汇报材料
2014/08/22 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
矛盾论读书笔记
2015/06/29 职场文书
关于远足的感想
2015/08/10 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
Python实现学生管理系统(面向对象版)
2021/06/24 Python
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫