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截取字符串实例代码【推荐】
Jun 07 HTML / CSS
需要知道的CSS3动画技术
Jan 01 HTML / CSS
CSS3 border-image详解、应用及jQuery插件
Aug 29 HTML / CSS
使用CSS3实现圆角,阴影,透明
Dec 23 HTML / CSS
css3 中的新特性加强记忆详解
Apr 16 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
Apr 17 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
Sep 19 HTML / CSS
HTML5实现直播间评论滚动效果的代码
May 27 HTML / CSS
CSS3 实现的图片悬停的切换按钮
Apr 13 HTML / CSS
html+css实现环绕倒影加载特效
Jul 07 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
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
Vue3为什么这么快
2020/09/23 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python中的 enum 模块源码详析
2019/01/09 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
python设置表格边框的具体方法
2020/07/17 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
办理退休介绍信
2014/01/09 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
业务员的岗位职责
2014/03/15 职场文书
法制报告会主持词
2014/04/02 职场文书
民间借贷借条范本
2015/05/25 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
使用Ajax实现进度条的绘制
2022/04/07 Javascript
vscode内网访问服务器的方法
2022/06/28 Servers