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 相关文章推荐
浅析两列自适应布局的3种思路
May 03 HTML / CSS
全面解析CSS Media媒体查询使用操作(推荐)
Aug 15 HTML / CSS
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
Dec 30 HTML / CSS
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
Feb 10 HTML / CSS
使用canvas绘制贝塞尔曲线
Dec 17 HTML / CSS
浅析移动设备HTML5页面布局
Dec 01 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
Apr 05 HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
Apr 24 HTML / CSS
深入浅析HTML5中的article和section的区别
May 15 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
Jul 10 HTML / CSS
关于html选择框创建占位符的问题
Jun 09 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
总结一些js自定义的函数
2006/08/05 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
javascript几个易错点记录
2014/11/26 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
浅谈手写node可读流之流动模式
2018/06/01 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
JS数组的高级使用方法示例小结
2020/03/14 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
详解python3中的真值测试
2018/08/13 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
几个Linux面试题笔试题
2012/12/01 面试题
一句话工作感言
2014/03/01 职场文书
学习经验演讲稿
2014/05/10 职场文书
高一军训决心书
2015/02/05 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python