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背景下的@font face规则
May 04 HTML / CSS
CSS3教程:新增加的结构伪类
Apr 02 HTML / CSS
CSS3 网页下拉菜单代码解释 中文翻译
Feb 27 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
Jan 31 HTML / CSS
2分钟教你实现环形/扇形菜单(基础版)
Jan 15 HTML / CSS
css3实现二维码扫描特效的示例
Oct 29 HTML / CSS
前端canvas动画如何转成mp4视频的方法
Jun 17 HTML / CSS
关于h5中的fetch方法解读(小结)
Nov 15 HTML / CSS
HTML5 manifest离线缓存的示例代码
Aug 08 HTML / CSS
详解HTML5.2版本带来的修改
May 06 HTML / CSS
聊聊CSS粘性定位sticky案例解析
Jun 01 HTML / CSS
css中有哪些方式可以隐藏页面元素及区别
Jun 16 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
解析thinkphp基本配置 convention.php
2013/06/18 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
SWFObject Flash js调用类
2008/07/08 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
在centos7中分布式部署pyspider
2017/05/03 Python
python素数筛选法浅析
2018/03/19 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
基于matplotlib xticks用法详解
2020/04/16 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Python同时迭代多个序列的方法
2020/07/28 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
印度电子产品购物网站:Vijay Sales
2021/02/16 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
学校招生宣传广告词
2014/03/19 职场文书
个人业务学习心得体会
2016/01/25 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js