Open YIXUNFE opened 8 years ago
转场,即是其字面意思,从场景转换到另一个场景,做过单页应用的同学相必对转场两字并不默认。在整站侧边栏的需求中,各个栏目的内容在切换的过程中需要一些过渡效果,这里就借用单页应用中常见的术语,姑且称之为“转场效果”了。
既然名字都是借鉴单页应用而来的,那么技术实现上自然也是仿照单页应用的转场实现。接下来我们就聊聊转场效果的实现。
侧边栏中每一个栏目的内容对应的转场效果都需要有两个过渡效果,即入场效果与出场效果,这里我们仅以 CSS3 方式实现这两种过渡效果。对于 IE8,就让它自便吧。
我比较喜欢 POP 效果,这里仅以 POP 效果做例子。
首先需要知道的是,在内容区域,隐藏着 N 个栏目的内容面板(div 元素)。
div
<div class="bar-panel cart-panel"></div> <div class="bar-panel favor-panel"></div> ...
我们需要给所有的面板加上一些样式,以满足我们后续的动画需求和隐藏需求。
.bar-panel { position: absolute; width: 100%; height: 100%; z-index: 2; transform-origin: 50% 50%; opacity: 0; filter: alpha(opacity=0); transform: scale(0.8);\ transition: opacity 0.3s ease-out, transform 0.3s ease-out; }
从设置的样式中可以看出,面板默认是隐藏不可见的。接下来我们设置一个 class 做入场效果。
class
.panel.fly { opacity: 1; transform: scale(1); filter: alpha(opacity=100); }
在入场时,内容面板会放大并显示出来。
接下来我们实现出场效果。
出场效果的设计和入场效果如出一辙,也是给面板加一个 class 以实现出场。稍微要留意的是,为了方便控制面板的入场与出场,我们可以将出场效果设计成一个开关,即加上出场效果的 class 时就出场,去掉这个 class 时就入场。
.bar-panel.fly.reverse { transform: scale(.8); opacity: 0; filter: alpha(opacity=0); z-index: 1; }
出场时缩小并隐藏。
最后我们如何控制出场与入场呢?简单的增加或去除 reverse 类即可。
reverse
$('.bar-panel').addClass('reverse') // 全部出场 obj.panel.removeClass('reverse') // 当前栏目内容面板入场
我们来看下最后效果:
整站侧边栏开发实践(三)——转场
转场,即是其字面意思,从场景转换到另一个场景,做过单页应用的同学相必对转场两字并不默认。在整站侧边栏的需求中,各个栏目的内容在切换的过程中需要一些过渡效果,这里就借用单页应用中常见的术语,姑且称之为“转场效果”了。
既然名字都是借鉴单页应用而来的,那么技术实现上自然也是仿照单页应用的转场实现。接下来我们就聊聊转场效果的实现。
入场与出场
侧边栏中每一个栏目的内容对应的转场效果都需要有两个过渡效果,即入场效果与出场效果,这里我们仅以 CSS3 方式实现这两种过渡效果。对于 IE8,就让它自便吧。
入场效果
我比较喜欢 POP 效果,这里仅以 POP 效果做例子。
首先需要知道的是,在内容区域,隐藏着 N 个栏目的内容面板(
div
元素)。我们需要给所有的面板加上一些样式,以满足我们后续的动画需求和隐藏需求。
从设置的样式中可以看出,面板默认是隐藏不可见的。接下来我们设置一个
class
做入场效果。在入场时,内容面板会放大并显示出来。
接下来我们实现出场效果。
出场效果
出场效果的设计和入场效果如出一辙,也是给面板加一个
class
以实现出场。稍微要留意的是,为了方便控制面板的入场与出场,我们可以将出场效果设计成一个开关,即加上出场效果的class
时就出场,去掉这个class
时就入场。出场时缩小并隐藏。
最后我们如何控制出场与入场呢?简单的增加或去除
reverse
类即可。我们来看下最后效果:
Thanks