托好奇心的福,这几天又接了一个bug,哦不,一个非常锻炼个人能力的h5页面,期间涉及到很多问题,在此打算先占个坑,等日后有时间再慢慢记录,无论是swiper插件的使用,还是关于硬件加速的运用,又或者是flex布局的骚用法,我想都值得一记。

今天都7月五号了,最近活是真的重。现在为止对一个页面的记忆尤为深刻就是下图这个。需求是点击下方切换图书的按钮,小孩不动,书动,当然了,无非就是书小孩手三图分三层,然后定位,实现一个轮播效果。然而坑爹的是,当滑动到当前页面的时候,那个书和手会出现闪动的一个动作。就是手先是在书下方,而后闪动之后才会按照zindex定位的层级浮到书上方。这是个什么问题? GPU渲染原理还是某种神奇的黑科技,当时我是彻底懵逼了。(20180705 欲知后事如何,且听下回分解)

接上,我首先就是百度了(别提google,没有好的FQ工具),然后原理什么的没人说,倒是找到了解决办法,就是给这几个元素,以及包裹他的元素使用了硬件加速,translate3d,用了之后你别说,还真好使,可是到现在为止,我仍不清楚具体原理!

唯一可以解释,牵强附会一点就是硬件加速时gpu会单独把使用了硬件加速的元素绘制成一个layout,这样就不再和原来文档流中的元素在同一个层了,从而单独渲染出来,因而不会闪动?(注意博主这个问号的用法,此处完全是个人猜想,正确性几乎为0。7/11更新)。

然后想说一下是关于flex的用法,这个项目布局的难点之一,在于上图中出现的这个边框,他是由曲线围成的,要命的是还加了一个logo,这种东西一旦出现,如果是个小尺寸的,那么直接使用px,使用固定布局,在移动端设备中会有一个比较好的体验。可是这个项目的要求之一便是 各个页面滚动切换,并且每个页面占一屏的大小,并且那个曲线边框,是统一的背景。

不同屏幕尺寸下,要达到一个看得过去的视觉效果,我首先想到的是我比较常用的rem布局,其核心点是使用屏幕宽度与某一数值的比例,使其计算出来一个字体大小并设置为根元素的fontsize,这个字体大小,以ip6 ,dpr 为2,屏幕宽度为375举例,要使得设计图上1px转为rem之后,实际渲染出来的大小为0.5px。

移动端设备实在五花八门,尺寸类型,更是数不清,要展开讲移动端适配,恐怕是讲不完了。所以这里只是稍稍一提。但同时,在做完这个项目之后我深刻的感觉到移动端要达到百分百完美的效果(这个百分百完美是指在不同尺寸的屏幕下达到相同的视觉效果),根本不可能!道理很简单,把设计图想象成一张图片即可,这个图片在不同尺寸设备下的显示可以想象为是沿对角线等比例缩放这个图片,那么问题来了,如果,另外一台设备的宽高比与设计图的初始宽高比相等,那么是可以达到一个较为完美的适配的,然而,现实中根本不可能。

特别像我基于rem的布局,基本上核心的依赖点是屏幕的宽度,假如碰上宽高比比原始设计图的宽高比大的手机的话,显示效果就很悲剧了。块和块之间的距离特别不好控制,好在有flex救了我的狗命,因为整个项目中,页面,基本上就是上下,或者上中下布局,所以直接用flex布局搞定了,块之间的间距由flex自动调整,然后用padding界定一下上下边界就好了,万幸最后用这种方式在没使用媒体查询的情况下完成了移动端的适配。

最后一点想说的是弹性布局之后,如果输入框恰好是flex item元素的话,在移动端输入的时候会非常悲剧,键盘弹起的那一刻,就是绝望的开始。

终(20180713)

一次h5活动页面的踩坑 过程的更多相关文章

  1. 使用impala连接hive踩坑过程

    一.打包镜像出错 docker build总是出错,如果你用的是python3.7,可以考虑使用python3.6版本 并且注意:选择thrift-sasl==0.2.1,否则会出现: Attribu ...

  2. linux上安装redis的踩坑过程

    redis用处很广泛,我不再啰嗦了,我按照网上教程想在linux上安装下,开始了踩坑过程,网上买了一个linux centos7.3,滴滴云的,巨坑无比啊,不建议大家用这家的! redis 为4.0, ...

  3. React-Native 踩坑过程

    踩坑过程: 解决方法就是去 SDK Manager 把 23.0.1 的版本下载了 而如果报错信息中含有bintray.com.gradle.org等网址,请***,反复重试,或者去react nat ...

  4. 从0开始的InfiniBand硬件踩坑过程

    由于科学计算实验的需求,需要使用InfiniBand做一个持久性内存全互联的分布式存储系统.其中从网卡到交换机使用Mellanox全家桶,而在Mellanox网卡与交换机的使用过程中还是遇到了不少的问 ...

  5. 记一次Docker中部署Asp.Net Core 3.0的踩坑过程

    最近公司打算重构目前直销报单系统到微信小程序中,目前的系统只能在PC上面使用,这两年也搞过App端,但是由于人员流动和公司架构调整最后都不了了之,只留下一堆写了一半的接口.以前的接口依然是使用Asp. ...

  6. H5视频活动踩坑

    最近做了一些嵌入视频的活动,积累了点视频方面的经验,下面记录下别人和自己踩过的坑以及相应的解决方案.1.碰到问题和解决方案1.1.ios 网页中播放视频默认全屏(点击视频会弹出播放器进行全屏播放).解 ...

  7. web项目踩坑过程

    sql函数设计: 一开始本来是直接用Java的jdbc直接传输操作语句的.但后来学了存储过程发现存储过程可以提高不少的效率.就重构了自己对数据库的操作代码.包括:开启,查找,修改,关闭. 开启:直接使 ...

  8. 安装GourdScanV2的踩坑过程

    环境:ubuntu 16.04.1 1.安装dcoker sudo apt-get install docker.io 坑:sudo apt-get install docker 2.下载关于dock ...

  9. linux上安装redis的踩坑过程2

    昨天在linux上安装redis后马上发现了其它问题,服务器很卡,cpu使用率上升,top命令查看下,原来有恶意程序在挖矿,此程序入侵了很多redis服务器,马上用kill杀掉它 然后开始一些安全策略 ...

  10. pycharm+PyQt5+python最新开发环境配置,踩坑过程详解

    安装工具:Pycharm 专业版2017.3PyQT5python3 pyqt5-tools 设置扩展工具的参数找到setting->tools->external tools,点击加号新 ...

随机推荐

  1. Soulmate

    理想之所以是理想,也就是因为它只能存在于脑海中,天上月是天上月,水中花是水中花.但我们仍可以怀揣着对乌托邦的向往,所以,我对理想中的对象设想如下: 原来形容一个女子的眉眼,我总喜欢说眉眼如黛,眉如远山 ...

  2. [转]创建Visual Studio 2019离线安装包

    可以在不同的网络环境和不同的计算机上在线安装微软Visual Studio 2019.微软提供的在线安装工具(Visual Studio web installer)可以让用户在线下载最新版本Visu ...

  3. 中间件 vs 过滤器

    在 ASP.NET Core 中,中间件(Middleware) 和 过滤器(Filters) 是两种不同的机制,用于处理请求和响应的管道.它们的作用和适用场景有所不同,以下是它们的对比和详细说明: ...

  4. 深入理解ReentrantLock的实现原理

    文章目录ReentrantLock简介AQS回顾ReentrantLock原理ReentrantLock结构非公平锁的实现原理lock方法获取锁tryRelease锁的释放公平锁的实现原理lock方法 ...

  5. IDEA 2020.3.2 安装激活教程

    注意 本教程适用于 IntelliJ IDEA 2020.3.2 以下所有版本,请放心食用~ 本教程适用于 JetBrains 全系列产品,包括 Pycharm.IDEA.WebStorm.Phpst ...

  6. C# Linq 去重

    static void Main(string[] args) { var list = new List<roleJson>() { new roleJson(){ Id=1,RoleN ...

  7. LeetCode 未验证规则

    1. for循环容易忘记break,很多提交不过,都是因为这个 2. 左右指针,思考起来比较复杂,但是以代码容易理解.code精简为主,不要在乎省下一两次运算时间 3. 左右指针,有时候以left & ...

  8. SpringBoot启动源码分析

  9. HiJobQueue:一个简单的线程安全任务队列

    HiJobQueue:一个简单的线程安全任务队列 概述 HiJobQueue 是一个线程安全的任务队列,用于在多线程环境中管理和执行异步任务.它的设计参考了 Cobalt 项目中的 JobQueue, ...

  10. Oracle生成awr报告操作步骤

    1.cmd命令窗口 以sysdba身份登录Oracle 2.执行@?/rdbms/admin/awrrpt命令,并选择报告类型为HTML.输入天数以选择生成报告的时间段,一般默认为最近7天.输入报告开 ...