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属性box-shadow使用详细教程
Jan 21 HTML / CSS
css3实现一款模仿iphone样式的注册表单
Mar 20 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 HTML / CSS
深入理解css中vertical-align属性
Apr 18 HTML / CSS
html+css3实现的登录界面
Dec 09 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
Sep 13 HTML / CSS
基于IE10/HTML5 开发
Apr 22 HTML / CSS
HTML5未来发展趋势
Feb 01 HTML / CSS
HTML5 canvas基本绘图之图形组合
Jun 27 HTML / CSS
浅析HTML5中的download属性使用
Mar 13 HTML / CSS
解决HTML5中滚动到底部的事件问题
Aug 22 HTML / CSS
CSS3实现的侧滑菜单
Apr 27 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
德生9700DX电路分析
2021/03/02 无线电
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
js 对小数加法精度处理示例说明
2013/12/27 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
python中import学习备忘笔记
2017/01/24 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
matplotlib实现区域颜色填充
2019/03/18 Python
python实现可逆简单的加密算法
2019/03/22 Python
python交易记录链的实现过程详解
2019/07/03 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
法律专业应届本科毕业生求职信
2013/10/25 职场文书
行风评议整改报告
2014/11/06 职场文书
优秀护士事迹材料
2014/12/25 职场文书
2015入党自传格式范文
2015/06/26 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
银行求职信范文
2019/05/13 职场文书
i7 6700处理器相当于i5几代
2022/04/19 数码科技
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL