老师,我的问题是本节老师演示的宣传页项目的第二屏动画。
<!--screen-2部分 --> <div class="screen-2"> <h2 class="screen-2__heading">优美的设计,更令人着迷</h2> <h3 class="screen-2__subheading">采用受欢迎的设计,让它更加出色。<br/>款式小巧、轻便手感更舒适。绚丽高清的显示屏,整个外观显得格外精致。</h3> <div class="screen-2__phone"> <div class="screen-2__point screen-2__point_i_1">高清摄像</div> <div class="screen-2__point screen-2__point_custom_right screen-2__point_i_2">超薄机身</div> <div class="screen-2__point screen-2__point_custom_right screen-2__point_i_3">大屏显示</div> </div> </div>
这是老师写的第二屏的html,
/* 第二屏动画 */
.screen-2__subheading,
.screen-2__phone,
.screen-2__heading{
transition:all 1s;
}
.screen-2__heading_animate_init{
opacity: 0;
transform: translate(0,-100%);
}
.screen-2__subheading_animate_init{
opacity: 0;
transform: translate(0,100%);
}
.screen-2__phone_animate_init{
opacity: 0;
transform: translate(0,50%);
}
.screen-2__phone_animate_done,
.screen-2__subheading_animate_done,
.screen-2__heading_animate_done{
opacity: 1;
transform: translate(0,0);
}
.screen-2__point{
transition:all 1s 1s;
}
.screen-2__point_done{
opacity: 1;
transform:translate(0,0);
}
.screen-2__point_i_1_animate_init{
opacity: 0;
transform: translate(-100%,0);
}
.screen-2__point_i_2_animate_init,
.screen-2__point_i_3_animate_init{
opacity: 0;
transform: translate(100%,0);
}这是老师写的第二屏的动画效果。
var screenAnimateElements = {
'.screen-1' : [
'.screen-1__heading',
'.screen-1__phone',
'.screen-1__shadow',
],
'.screen-2' : [
'.screen-2__heading',
'.screen-2__phone',
'.screen-2__subheading',
'.screen-2__point_i_1',
'.screen-2__point_i_2',
'.screen-2__point_i_3',
],
'.screen-3' : [
'.screen-3__heading',
'.screen-3__phone',
'.screen-3__subheading',
'.screen-3__features',
],
'.screen-4' : [
'.screen-4__heading',
'.screen-4__subheading',
'.screen-4__type__item_i_1',
'.screen-4__type__item_i_2',
'.screen-4__type__item_i_3',
'.screen-4__type__item_i_4',
],
'.screen-5' : [
'.screen-5__heading',
'.screen-5__bg',
'.screen-5__subheading',
]
};
function setScreenAnimate(screenCls){
var screen = document.querySelector(screenCls)//获取当前屏的元素
var animateElements = screenAnimateElements[screenCls]// 需要设置动画的元素
var isSetAnimateClass = false;// 是否有初始化子元素的样式
var isAnimateDone = false;//当前屏幕下所有子元素的状态是DONE?
screen.onclick = function(){
// 初始化样式,增加init
if(isSetAnimateClass === false){
for(var i=0;i<animateElements.length;i++){
var element = document.querySelector(animateElements[i]);
var baseCls = element.getAttribute('class');//animateElements[i].substr(1)这是为了去掉animateElements[i]元素中的点,
element.setAttribute('class',baseCls+' '+animateElements[i].substr(1)+'_animate_init');
}
isSetAnimateClass =true;
return ;
}
// 切换所有animateElements的init->done
if(isAnimateDone === false){
for(var i=0;i<animateElements.length;i++){
var element = document.querySelector(animateElements[i]);
var baseCls = element.getAttribute('class');
element.setAttribute('class',baseCls.replace('_animate_init','_animate_done'));
}
isAnimateDone =true;// 重设属性
return ;
}
// 切换所有animateElements的done->init 这是为了解决在动画完成后又没有动画的问题
if(isAnimateDone === true){
for(var i=0;i<animateElements.length;i++){
var element = document.querySelector(animateElements[i]);
var baseCls = element.getAttribute('class');
element.setAttribute('class',baseCls.replace('_animate_done','_animate_init'));
}
isAnimateDone = false;
return ;
}
}
}
for(k in screenAnimateElements){
setScreenAnimate(k);
}这是老师写的js脚本。
我的问题是:为什么在第二屏的动画效果中,老师写“screen-2__point”动画的时候没有写"screen-2__point_animate_init, screen-2__point_animate_done",而是只写了“screen-2__point, screen-2__point_done”还不是"screen-2__point_animate_done"如果这样写和js脚本中定义的函数对不上啊?请老师解答。
9
收起
正在回答
2回答
你好同学,老师明白你的意思,这个就是因为screen-2__point的动画不是使用这个类名去做的,而是使用的上次老师说那的几个类名去做的动画。同学可以下载源码看看js代码,里面没有使用到screen-2__point这个类名,所以不会报错哦。

可以把screen-2__point_done注释了,去看看效果,是没有影响的

祝学习愉快,望采纳。



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星