前端培训-初级阶段-场景实战(2019-5-23)-移动端适配bug

简介: 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。场景实战这块内容每个人的内容都不一样。所以最近的更新基本都是我遇到并解决掉的问题。后期会把他们的内容贴地址。

今天我们要讲什么?


  1. flexible 适配方案


  1. flexible 适配方案(放大ios中的vConsole)


  1. flexible 适配方案遭遇放大手机字体大小


  1. 主流移动端适配方案


flexible 适配方案


flexible 是什么


amfe/lib-flexible 是手淘的可伸缩布局方案。


flexible 原理


它是把屏幕分成了10份,1份==1rem。如750/10=75。


之后在  标签上增加 data-dpr属性和 font-size样式。然后我们就可以快乐的使用rem来基于根节点设置了。


flexible 注意事项


  1. 如果页面有 viewprot 他会使用页面旧有的。


  1. flexible 设置了一个最大值(75),这样出来在页面中看到的效果就是居左750设计稿的样式。


  1. 基于第二点,在部分曲面屏手机上或者大屏幕手机(三星 note8)上,会出现右边出现大片空白。解决方案如下
  1. 单位改成vw。(其实就是换方案了,flexible官方也建议换了)
  2. 设置父级,然后居中。这样就两边空白一样了。基本可以接受。


flexible 适配方案(放大ios中的vConsole)


因为默认 flexible 是根据系统缩放的。我们为了测试方便,我们可以人为设置一下



注意以上方案上线时记得去掉。否则部分小页面会出问题。


flexible 适配方案遭遇放大手机字体大小


因为我司历史产品原因,有部分老年用户(不说老年了,我爸也是调)。因为手机字体太小,调节了手机的字体大小和字体缩放大小。


这就导致基础值被异常的放大了,页面显示乱了。


修改系统字体大小的解决方案


  1. 客户端设置


  1. vw 方案,我不用字体大小还不行吗?嗯,这个方案的确可以。


  1. 既然你放大了,那我给你缩小不就好了。
  1. 获取所有标签,然后给 font-size 缩小。你别说,这个方案还真行。
    但是这个方法太恐怖了。而且后续节点不可控
  2. 修改 flexible 增加 zoom 的控制。嗯,完美解决。


;(function(win, lib) {
    // 默认1:1
    var zoom = 1;
    try{
        // 构建一个真实的DOM
        var dom = document.createElement('vv-ln-test-fontsize');
        // 设置为一个理想值
        dom.style.fontSize = '16px'
        // 追加到DOM树中
        document.head.appendChild(dom)
        // 获取理想值和实际值的比例
        zoom = 16/parseFloat(window.getComputedStyle(dom).fontSize);
        console.log(zoom, document.documentElement.style.fontSize)
    }catch(e){
        console.log(e)
    }
    var vv_fontSizeZoom = lib.vv_fontSizeZoom || (lib.vv_fontSizeZoom = zoom);
})(window, window['lib'] || (window['lib'] = {}));
function refreshRem(){
    var width = docEl.getBoundingClientRect().width;
    if (width / dpr > 750) {
        width = 750 * dpr;
    }
    var rem = width / 10 * lib.vv_fontSizeZoom;//计算值进行比例换算
    docEl.style.fontSize = rem + 'px';
    flexible.rem = win.rem = rem;
}


移动端适配方案


前端培训-初级阶段(9 -12) 之 移动端适配原理 rem(px、em、rem、%、vm)


参考文献


  1. 淘宝弹性布局方案lib-flexible实践
  2. flexible.js 布局详解
  3. flexible.js 移动端自适应方案
相关文章
|
6月前
|
前端开发 JavaScript 索引
前端性能优化:虚拟滚动技术原理与实战
前端性能优化:虚拟滚动技术原理与实战
899 80
|
7月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
479 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
11月前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
418 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
10月前
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
526 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
11月前
|
前端开发 API
通义灵码企业级检索增强-前端自研场景采纳率提升DEMO
通义灵码企业级检索增强DEMO展示了通过对话方式检索企业内部知识的能力,特别是在前端自研场景中。例如,上传标准化组件库后,系统能准确推荐trace ID等组件的规范写法,显著提升采纳率8个百分点,效果明显。
189 2
|
存储 前端开发 JavaScript
前端状态管理:Vuex 核心概念与实战
Vuex 是 Vue.js 应用程序的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。本教程将深入讲解 Vuex 的核心概念,如 State、Getter、Mutation 和 Action,并通过实战案例帮助开发者掌握在项目中有效使用 Vuex 的技巧。
|
Web App开发 缓存 监控
前端性能优化实战:从代码到部署的全面策略
前端性能优化实战:从代码到部署的全面策略
299 1
|
Web App开发 前端开发 JavaScript
前端性能优化实战:从代码到部署的全面指南
前端性能优化实战:从代码到部署的全面指南
306 1
|
缓存 监控 前端开发
前端性能优化实战:从加载速度到用户体验
前端性能优化实战:从加载速度到用户体验
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1110 14