托好奇心的福,这几天又接了一个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. 浅谈LINUX中/DEV/VDA1文件满了解决方法

    1. 先查看内存使用情况 df -h 1 2. 进入/dev/vdal的磁盘挂载的目录 /,查看各个文件占用大小 cd / du -sh * 1 2 注意:进入那个比较大的文件,我这里发现var这个文 ...

  2. git同步远程仓库的所有分支

    git clone克隆远程仓库默认是只克隆master分支,当想把远程仓库上的所有的分支都克隆下来的话,有以下几种方法. 使用远程仓库github上的LSMLIB仓库为例.该仓库在github上一共有 ...

  3. .NET 9 new features-Memory Caching 和 Collections 优化

    一.内存缓存(Memory Caching) 1. 具体的原理 内存缓存是一种在应用程序内存中存储数据的机制,旨在减少对外部数据源的频繁访问,从而提高应用程序的性能. 在 .NET 中,MemoryC ...

  4. 1. C++快速入门--变量和基本类型, 类别

    文章使用obsidian编写, 双链部分可能失效 1 基本内置类型 1.1 算术类型 算术类型介绍 bool 类型 字符类型 整数类型 实数浮点.虚数浮点和 复数浮点 参看如下表 带符号和无符号类型的 ...

  5. TagHelper中获取当前Url

    在自定义TagHelper时,我们无法通过TagHelperContext 和 TagHelperOutput 获取到当前路由的信息,我们需要添加注入ViewContext [HtmlAttribut ...

  6. Java AQS学习笔记

    1. AQS介绍 AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面. AQS是一个用来构建锁和同步器的框架,使 ...

  7. VulNyx - Ceres 靶机

    有80端口 访问看看 他这个挺奇葩的看了wp才知道 file.php的参数是file 他会自动给你加上php 也就是说file=secret.php读不到数据要file=secret才能读到数据 伪协 ...

  8. 1. Calcite元数据创建

    1. 简介 Calcite 是一款来自 Apache 的开源动态数据管理框架,核心功能是提供 SQL 查询解析.优化及执行等基础能力,以灵活支持多种数据源,广泛应用于各类数据处理系统.以下从其功能特性 ...

  9. arthas进行java应用不停服务情况下的class文件热部署更新

    我们在工作的过程中会遇到java应用已经部署或升级投入使用,发现某个单元文件有bug需要修正,但是客户的应用目前不能停止,而且不能因为一个非致命的bug来进行整个平台的一次升级.我们需要进行单文件的更 ...

  10. IDEA 接入 DeepSeek,太酷了!

    你好,我是 Guide.前两天,我发文提到 DeepSeek 的回答推荐了我的资料 <JavaGuide 面试突击版>(PDF):DeepSeek 的这波回答我给满分!. 这篇文章简单介绍 ...