关于作业问题

关于作业问题

【整体】

刷新当前显示的页面下一屏动画会闪现后再退出,建议将动画的初始状态透明度设置为0,当显示到该页面的时候,透明度变为1即可, css中有设置好的透明度为0,所以默认给元素添加这个类即可,以第二屏为例,其他几个区域可以参考添加下。代码示例:

 http://img1.sycdn.imooc.com//climg/5d82fe4209ea3c2d05540207.jpg

 http://img1.sycdn.imooc.com//climg/5d82fe4a09070cb705140308.jpg

那如果都这样设置的话,JS中就不用第一步初始化init了啊

// 第一步,页面载入后,初始化动画元素样式init
function setScreenAnimateInit(screenCls){
    // var screen = getElement(screenCls);   //获取当前屏元素,给什么事件使用?没有作用,多余的变量
    //console.log(screen);
    var animateElements = screenAnimateElements[screenCls]; 
    //需要设置动画的每一项元素,是arguements类数组对象,
    // console.log(animateElements);
    for(var i = 0;i < animateElements.length;i++){
        // var element = document.querySelector(animateElements[i]);
        var element = getElement(animateElements[i]);
        //console.log(animateElements[i]); animateElements[i]是arguements类数组对象中的每一项,属性是字符串
        //console.log(element); element是DOM元素
        //再把需要设置动画的每一项DOM元素,通过arguements类数组对象取出来,再获取每一项的class类名 ,类名前面不带'.',  是否能使用getElement getCls? 可以使用getElement和getCls,上面封装了函数
        // var baseCls = element.getAttribute('class');
        var baseCls = getCls(element);
        //console.log(baseCls);
        element.setAttribute('class',baseCls + ' '+animateElements[i].substr(1)+'_animate_init');
    }
}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,window.onload = function() {}是等页面结构加载完才执行的。这个时候加载完了,都已经显示了。然后又执行了js。设置了这个类中的透明度,就会导致先显示在隐藏了。

所以可以将window.onload 去掉哦。

希望能帮助到你,祝学习愉快!

好帮手慕糖 2019-09-20 10:13:36

同学你好,1、两部分去掉是指那两部分?html添加类名或者是js中添加类名,是两种方式,任意一种都可以。

2、是需要从animate_done到init在到done状态的哦。这个是没有问题的。

现在的问题是,若是开始没有添加init状态的话,其他屏的内容会先显示一下,然后在隐藏。然后滑动到该区域的时候,在显示,这个与效果图不符。开始的时候,不应该显示下在隐藏。应该是隐藏的。然后直接滑动到该区域显示。

所以要初始化一个init,设置透明度为0,不让其显示出来。

希望能帮助到你,祝学习愉快!

  • 我明白了,我说的是指JS中的第一步初始化和window.load这两部分去掉,直接用html的方式。为什么我开始用JS的方式不行呢,老师说会有刷新当前显示的页面下一屏动画会闪现后再退出的效果,我所有的动画初始状态透明度都设置为0了啊?
    2019-09-21 21:52:59
好帮手慕糖 2019-09-19 14:46:18

同学你好,可以的哦,可以将js中的初始化去掉,不过不是同学粘贴的这部分,而是如下这一部分。

http://img1.sycdn.imooc.com//climg/5d8323dc09c70cd906100290.jpg

还有一种方式,可以不再html中添加,直接使用js中的,不过要将js中的window.onload = function() {}去掉哦。

不然,等所有的html结构加载好了,又设置了这个类中的透明度,就会导致先显示在隐藏了。

希望能帮助到你,祝学习愉快!


  • 1、我将这两部分去掉都没影响,在控制台查看,反而动画的类名只有animate_done,清晰多了。 2、你说的这种方式我试过了啊,页面刷新时,会有animate_done到init在到done的状态,批改作业的老师说不合格:刷新当前显示的页面下一屏动画会闪现后再退出。 3、不然,等所有的html结构加载好了,又设置了这个类中的透明度,就会导致先显示在隐藏了。所有的html结构加载好,不就是为了init隐藏,然后到done的状态吗?
    2019-09-19 19:34:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师