听的一脸萌比

听的一脸萌比

前面讲过的js他就一直重复,前面课没讲过的js,提都不提一句就过去了,你们这课真是连着的么?

正在回答 回答被采纳积分+1

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

2回答
慕雪7895852 2017-03-17 20:04:01

老师在这里使用了一种我们不常见的函数表达方式。首先

var screenAnimateElements={
    '.screen-1':[
          '.screen-1__heading',
          '.screen-1__phone',
          '.screen-1__shadow',

    ]
}

上面的代码是创建一个对象,属性是第一屏的大盒子的“class属性值(选择器)”,而属性值则是大盒子下每一个小模块元素的“class属性值”animateElements就是一个由选择器组成的数组

var animateElements=screenAnimateElements[screencls]

而上面一行代码的作用是获取以每一个小模块元素class属性值组成的数组 如下:

[ '.screen-1__heading', '.screen-1__phone','.screen-1__shadow']
当我们点击屏幕时,setScreenAnimate(screenCls)函数开始通过
var element=document.querySelector(animateElements[i]);来获取每一个小模块的元素(querySelector
()方法等价于getElementsByClassName()),然后再通过
setwAttribute()方法来为每一个小模块的元素添加选择器,注意这里是添加而不是替换,因为替换会破坏已有
选择器所设置的html样式;
而var isSetAnimateClass=false;中的isSetAnimateClass变量其实是用于存储初始化子元素的动画状态,
因为这里每个元素在css里面设置了两个动画,这歌变量是为了后面if()语句的判断而用
老师为了直观,采用语意化的方式来自定义变量所以显得有点复杂,其实这个变量可以自行定义,不用这么复杂,完全不会
影响代码结果
希望对你有帮助!如果有疑问可以继续提问。
Miss路 2017-02-10 19:03:15

js这部分是有些难,你多听几遍,不要着急。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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