网页切换特效

作者: haolisand | 来源:发表于2015-09-25 20:55 被阅读330次

目前网页没有使用任何特效,直接浏览器访问并不觉得难看,不过 App 首页也是用 WebView 加载网页,载入之前空白,载入后直接显示,就很简陋。被催了好几天之后决定解决这个问题。

从时间序上,整个载入过程分为三个阶段

  1. WebView 访问网页到网页返回
  2. 网页返回到内容返回
  3. 网页内容出现

其中网页能控制的是其中的2和3。找了下主流方案,选用了 animsition。demo 效果很酷炫,不过用到我们网站里遇到了大问题。在目标页面接入 animsition 后,页面一直处于 loading 状态无法正常显示。


debug 后发现该库实现原理是直接先用 css 透明化目标区域内容

.animsition,
.animsition-overlay {
    position: relative;
    opacity: 0;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
}

然后在 js 中显示 loading 效果

if(options.loading) __.addLoading.call(this, options);

注册 load 事件

$window.on('load.' + namespace + ' pageshow.' + namespace, function() {
  if(__.settings.timer) clearTimeout(__.settings.timer);
  __.in.call(_this);
});

等 load 事件触发后移除 loading 效果

if(options.loading) __.removeLoading.call(_this);

显示目标内容

$this
  .removeClass(inClass)
  .css({ 'opacity' : 1 })
  .trigger(__.settings.events.inEnd);

而我们网站目前的 requireJS 架构直接等 load 好了之后才会执行页面 js,所以无法收到事件,出现无尽 loading 的假象。

这和 github 上另一个人的问题如出一辙 ,最奇葩的是作者 close 了这个 issue,但问题仍然完全没被解决 orz


只能自己处理。。

  • 尝试修改既有框架,试图将 js 执行的时机提前,未果。
  • 打算按照 github 上的方案自己修改,又想使用第三方 CDN。
  • 发现有个 trick 可以将 timeout 设为0,果然完美实现页面效果。

虽然只完成了阶段3的部分,不过效果实在酷炫到简直可以忘掉之前两个白屏的阶段 XD

不过问题毕竟不能无视,初步计划未来做 pull to refresh 时顺便将内容全改为 ajax 方式获取。这样阶段1的时间会被缩短,阶段2的事件也可以接收处理,体验应该会更好。

有考虑过WebView自己在调用时显示 loading,不过考虑版本升级等原因,和网页的效果可能不一致,暂时先不处理。

相关文章

  • 网页切换特效

    目前网页没有使用任何特效,直接浏览器访问并不觉得难看,不过 App 首页也是用 WebView 加载网页,载入之前...

  • Vue2 中使用Swiper构建中间大两边小轮播效果

    Swiper是一个功能丰富的“滑动特效”插件:常用的tab切换,banner切换等等,包含各种切换特效,看Demo...

  • Swiper - 免费开源、功能强大的触摸滑动 js 特效插件

    简单配置就能实现手机、PC 网页中滑动、焦点轮播图、tab 切换和触摸导航等大部分功能。 js 滑动特效插件 Sw...

  • 网页特效

    元素偏移量offset系列 动态获取元素的偏移 获取元素距离带有定位父元素的位置 获取元素的自身大小 返回的数值都...

  • 网站推荐 (不定时更新)

    1.网页设计 jQuery插件库:JS特效,网页特效,以及各种html5,css3动画和效果Bootstrap,来...

  • 【网页JS特效】惊艳的图像切换动画效果

    这是最近来自 Codepen 一个热门的 JS 特效 – THREE Image Transition,该功能主要...

  • 常见网页特效

    1.下拉框联动 下拉框联动效果用于在两个或多个内容相关联的下拉框中选取数据,比如在招聘网站中选择求职意向时,需要先...

  • 网页特效2

    1 复习 offset 自己的 偏移offsetWidth 得到自己的宽度offsetHeight构成 ...

  • 网页特效1

    1复习 根据位置返回 字符 asdfg.charAt(3)=f根据字符返回位置 从前面索引 asdfgg....

  • cocos2d-x 3.x场景跳转

    场景: HelloWorldScene, firstScene 场景切换特效 场景切换一般有两个参数: float...

网友评论

  • 浩丶Nan:作者能否详细讲下如何解决该问题的,我也遇到了同样的问题,谢谢了
    haolisand:@浩丶Nan 文中有说,将超时设为0

    ```javascript
    $(".animsition").animsition({
    timeout: true,
    timeoutCountdown: 0,
    });
    ```

本文标题:网页切换特效

本文链接:https://www.haomeiwen.com/subject/jzcwcttx.html