托好奇心的福,这几天又接了一个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. MIPI/LVDS/PCIE/HDMI 设计规范

      参考链接: 1.MIPI/LVDS/PCIE/HDMI 2.接口简介(HDMI .eDP/DP.LVDS.VGA.YPbPr.DVI.MHL.MIPI-DSI.VbyOneHS) 3.干货 | 带 ...

  2. 融云技术分享:基于WebRTC的实时音视频首帧显示时间优化实践

    本文由融云技术团队原创投稿,作者是融云WebRTC高级工程师苏道,转载请注明出处. 1.引言 在一个典型的IM应用里,使用实时音视频聊天功能时,视频首帧的显示,是一项很重要的用户体验指标. 本文主要通 ...

  3. 一步一步abp电商模块-1、搭建模块环境

    前言 目前在开发abp电商模块,打算做一步,写一步,算是对自己的记录,主要是参考nopcommoner 并结合abp模块开发 知识都是连贯的,如果你熟悉asp.net core 3.x.abp(非vN ...

  4. java-文件输入输出处理

    --------------------------------------------------- 1.File类 File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的 ...

  5. 第四章 对称加密算法--DES--AES--IDEA--PBE

    10.1.DES 已破解,不再安全,基本没有企业在用了 是对称加密算法的基石,具有学习价值 密钥长度56(JDK).56/64(BC) 10.2.DESede(三重DES) 早于AES出现来替代DES ...

  6. 分布式Session解决方案详解

    4种分布式session解决方案 cookie和session的区别和联系 cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储的数据量小session ...

  7. HBase-2JavaAPI操作

    HBase是一个分布式的NoSql数据库,在实际工作当中,我们一般都可以通过JavaAPI来进行各种数据的操作,包括创建表,以及数据的增删改查等等 1 创建maven工程 讲如下内容作为maven工程 ...

  8. springBoot(2)--初步理解

    一.定时任务 1.步骤: 1:在启动类上写@EnableScheduling注解 2:在要定时任务的类上写@component 3:在要定时执行的方法上写@Scheduled(fixedRate=毫秒 ...

  9. 将Mybatis引入Spring Boot项目连接数据库操作

    将Mybatis引入Spring Boot项目连接数据库操作 一,首先,在pom.xml引入Mybatis插件 加入Maven依赖代码即可快速引入Mybatis 2.0.0: <!--Mybat ...

  10. Shenzi pg walkthrough Intermediate window

    nmap └─# nmap -p- -A -sS -T5 192.168.218.55 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-16 ...