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圆角样式分享自定义按钮样式
Dec 27 HTML / CSS
纯CSS实现菜单、导航栏的3D翻转动画效果
Apr 23 HTML / CSS
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
Aug 15 HTML / CSS
CSS3动画和HTML5新特性详解
Aug 31 HTML / CSS
CSS3实现菜单悬停效果
Nov 17 HTML / CSS
W3C公布最新的HTML5标准草案
Oct 17 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
Apr 24 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
Dec 30 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 HTML / CSS
Canvas globalCompositeOperation
Dec 18 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
Sep 11 HTML / CSS
使用SVG实现提示框功能的示例代码
Jun 05 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中去掉字符串首尾空格的方法
2012/05/19 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
js 表单验证方法(实用)
2009/04/28 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
js Math 对象的方法
2013/09/01 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
Javascript缓存API
2016/06/14 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
python join方法使用详解
2019/07/30 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
市场营销专业毕业生自荐信
2013/11/02 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
班主任高考寄语
2015/02/26 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis