托好奇心的福,这几天又接了一个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. React部署到线上Nginx环境中刷新页面后404解决方案

    我们需要在Nginx的配置文件中修改以下内容(通常Nginx配置文件位置为/etc/nginx/nginx.conf): server { # ... location / { # ... # 增加下 ...

  2. vs code 添加jquery的智能提示

    1.安装node.js 2.新建VsCodeTestApp文件夹,用vs code打开这个文件夹 3.打开cmd,进入TestApp文件夹所在盘符,然后cd进入VsCodeTestApp C:\Use ...

  3. [LC793]阶乘函数后 K 个零

    题目描述 f(x) 是 x! 末尾是 0 的数量.(回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 ) 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 : ...

  4. 论文解读 原苏木素A通过靶向ACSL4/FTH1轴依赖性铁凋亡保护阿霉素诱导的心肌损伤和心功能障碍

    同学们,大家好!今天给大家介绍一篇研究性论文,原苏木素A通过靶向ACSL4/FTH1轴依赖性铁凋亡保护阿霉素诱导的心肌损伤和心功能障碍,想了解这方面的同学们可以重点关注一下.这篇文章是2024年7月份 ...

  5. uwp 获取屏幕分辨率

    public static Size ScreenSize { get { //screen resolution var height = DisplayInformation.GetForCurr ...

  6. Spring Cloud Alibaba实战,从微服务架构到基本服务配置

    https://blog.csdn.net/itcast_cn/article/details/124558887 Spring Cloud Alibaba 实战 1目标理解什么是微服务架构理解什么是 ...

  7. Storm基本概念

    storm简介   场景 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝 ...

  8. Linux 虚拟机中不重启的情况下加新硬盘及扩展根分区容量

    我这个系统是Redhat7.7的系统.磁盘占用比较高,需要扩充空用空间,同时又不能关停服务器,或者服务.所以就需要在虚拟机中不重启的情况下加新硬盘及扩展根分区容量. 首先,看一下我这个虚拟机分区占用情 ...

  9. C# as 和 is 运算符区别和用法

    前言 在C#中,as 和 is 关键字都用于处理类型转换的运算符,但它们有不同的用途和行为.本文我们将详细解释这两个运算符的区别和用法. is 运算符 is 运算符用于检查对象是否是某个特定类型,或者 ...

  10. Win10部分软件程序中输入中文变成问号??如何处理【详细步骤】

    近期在win10系统中,出现了一个问题,那就是在部分程序软件中输入中文之后,会直接显示问号,哪怕是更换输入法也没有任何用.那么遇到这个问题,我们要如何处理呢?下面IT百科分享一下Win10系统部分软件 ...