老师帮忙看下,就是刷新了后就直接进入init,没有转换done
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>作业项目</title>
<link rel="stylesheet" href="./css/test.css">
<link rel="stylesheet" href="./css/animates.css">
</head>
<body>
<!-- 头部 -->
<header class="header">
<div class="header__wrap">
<div class="header__logo">H5实战页面</div>
<nav class="header__nav">
<a href="javascript:;" class="header__nav-item header__nav-item_status_active">实战课程</a>
<a href="javascript:;" class="header__nav-item">商业案例</a>
<a href="javascript:;" class="header__nav-item">课程体系</a>
<a href="javascript:;" class="header__nav-item">集成环境</a>
<a href="javascript:;" class="header__nav-item">云端学习</a>
<a href="javascript:;" class="header__nav-item header__nav-item_custom_button">即刻学习</a>
</nav>
</div>
</header>
<!-- 动画屏 -->
<div class="screen-1">
<div class="screen-1__box">
<h2 class="screen-1__heading">实战课程重磅上线</h2>
<h3 class="screen-1__subheading">一键云学习,还在等什么?</h3>
</div>
</div>
<div class="screen-2">
<div class="screen-2__wrap">
<h2 class="screen-2__heading">每门课都是真实商业案例</h2>
<div class="line"></div>
<h3 class="screen-2__subheading">真实案例,真实场景,在实战中实践、操作、调试<br/>大牛带你体检BAT真实开发流程,所有开发过程——为你呈现</h3>
<div class="screen-2__bg"></div>
<div class="screen-2__bg2"></div>
<div class="screen-2__bg3"></div>
</div>
</div>
<div class="screen-3">
<div class="screen-3__wrap">
<div class="screen-3__bg"></div>
<div class="screen-3__box">
<h2 class="screen-3__heading">强大的语言课程体系支持</h2>
<div class="line"></div>
<h3 class="screen-3__subheading">学习环境与课程轻松对接,安装、调试、写入、部署、运行,一站式解决<br/>,让你体验开发全流程</h3>
<div class="screen-3__lang">
<div class="screen-3__lang-item screen-3__lang_i_1">
<div class="screen-3__lang-item-desc">HTML5</div>
</div>
</div>
<div class="screen-3__lang">
<div class="screen-3__lang-item screen-3__lang_i_2">
<div class="screen-3__lang-item-desc">PHP</div>
</div>
</div>
<div class="screen-3__lang">
<div class="screen-3__lang-item screen-3__lang_i_3">
<div class="screen-3__lang-item-desc">JAVA</div>
</div>
</div>
<div class="screen-3__lang">
<div class="screen-3__lang-item screen-3__lang_i_4">
<div class="screen-3__lang-item-desc">Python</div>
</div>
</div>
<div class="screen-3__lang">
<div class="screen-3__lang-item screen-3__lang_i_5">
<div class="screen-3__lang-item-desc">Node.js</div>
</div>
</div>
</div>
</div>
</div>
<div class="screen-4">
<div class="screen-4__wrap">
<div class="screen-4__box">
<h2 class="screen-4__heading">省去本地复杂的环境搭建</h2>
<div class="line"></div>
<h3 class="screen-4__subheading">你可以告别在虚拟机中调试开发了</h3>
</div>
<div class="screen-4__bg">
<div class="screen-4__bg__item screen-4__bg__item_i_1">
<div class="screen-4__bg__item__desc">实战课程集成开发环境</div>
</div>
<div class="screen-4__bg__item screen-4__bg__item_i_2">
<div class="screen-4__bg__item__desc">内置终端命令行</div>
</div>
<div class="screen-4__bg__item screen-4__bg__item_i_3">
<div class="screen-4__bg__item__desc">编译你的应用程序</div>
</div>
<div class="screen-4__bg__item screen-4__bg__item_i_4">
<div class="screen-4__bg__item__desc">通过云端服务输出效果</div>
</div>
</div>
</div>
</div>
<div class="screen-5">
<div class="screen-5__wrap">
<div class="screen-5__box">
<div class="screen-5__bg"></div>
<h2 class="screen-5__heading">云端学习可以这样简单</h2>
<div class="line"></div>
<h3 class="screen-5__subheading">看视频,敲代码,一气呵成。结合慕课网为你提供的云端学习工具,所见即所得,从此学习不一样</h3>
</div>
</div>
</div>
<div class="screen-6">
<button type="button">继续了解学习体检</button>
</div>
<!-- 页脚 -->
<footer class="footer">
<div class="footer__desc">
<a href="javascript:;" class="footer__desc-item">网站首页</a>
<a href="javascript:;" class="footer__desc-item">人才招聘</a>
<a href="javascript:;" class="footer__desc-item">联系我们</a>
<a href="javascript:;" class="footer__desc-item">高校联盟</a>
<a href="javascript:;" class="footer__desc-item">关于我们</a>
<a href="javascript:;" class="footer__desc-item">讲师招募</a>
<a href="javascript:;" class="footer__desc-item">意见反馈</a>
<a href="javascript:;" class="footer__desc-item">友情链接</a>
</div>
<div class="footer__copy">© 2016 imooc.com 京ICP备13046642号</div>
</footer>
<script type="text/javascript" src="js/test.js"></script>
</body>
</html>
*{margin: 0;padding: 0;}
a{
text-decoration: none;
}
h2{
font-size: 40px;
}
h3{font-weight: normal;font-size: 18px;}
.line{
border: 1px solid #f00;
width: 40px;
margin: 20px auto;
}
/* 导航区 */
.header{
background-color: rgba(0, 0, 0, .5);
position: fixed;
width: 100%;
height: 60px;
top: 0;
left: 0;
right: 0;
z-index: 2;
}
.header__wrap{
width: 100%;
height: 60px;
position: relative;
margin: 0 auto;
}
.header__logo{
width: 190px;
height: 38px;
line-height: 38px;
font-size: 20px;
color: #fff;
background: url('../img/logo.png') left center no-repeat;
text-indent: 50px;
position: absolute;
top: 50%;
margin-top: -19px;
left: 20px;
}
.header__nav{
position: absolute;
right: 20px;
height: 38px;
line-height: 38px;
top: 50%;
margin-top: -19px;
cursor: pointer;
}
.header__nav-item{
color: #fff;
font-size: 16px;
display: block;
height: 38px;
line-height: 38px;
width: auto;
text-align: center;
float: left;
padding-left: 30px;
}
.header__nav-item_custom_button{
background: #f00;
width: 90px;
border-radius: 5px;
padding: 0;
margin-left: 40px;
}
.header__nav-item_status_active{
color: red;
}
/* 第一屏 */
.screen-1{
position: relative;
background: url('../img/sc1.jpg') no-repeat center;
background-size: cover;
overflow: hidden;
height: 640px;
}
.screen-1__box{
width: 1200px;
height: 120px;
text-align: center;
margin: 0 auto;
position: absolute;
top: 50%;
left: 50%;
margin-left: -600px;
margin-top: -60px;
color: #fff;
}
.screen-1__heading{
margin-bottom: 30px;
}
.screen-2{
position: relative;
background-color: #fff;
height: 640px;
overflow: hidden;
}
.screen-2__wrap{
width: 1200px;
height: 640px;
text-align: center;
margin: 0 auto;
}
.screen-2__heading{
margin-top: 70px;
}
.screen-2__bg{
background: url(../img/sc2.png) no-repeat center;
width: 750px;
height: 361px;
position: absolute;
bottom: 0px;
left: 50%;
margin-left: -375px;
}
.screen-2__bg2{
background: url(../img/sc2-1.png) no-repeat center;
width: 275px;
height: 380px;
position: absolute;
bottom: 0px;
left: 50%;
margin-left: -138px;
z-index: 2;
}
.screen-2__bg3{
background: url(../img/sc2-2.png) no-repeat center;
width: 266px;
height: 205px;
position: absolute;
bottom: 108px;
left: 790px;
margin-left: -138px;
z-index: 1;
}
/*第三屏 */
.screen-3{
/* position: relative; */
background-color:rgb(43, 51, 59);
height: 640px;
overflow: hidden;
}
.screen-3__wrap{
width: 1200px;
height: 640px;
position: relative;
margin: 0 auto;;
}
.screen-3__bg{
background: url(../img/sc3.png) no-repeat center;
width: 308px;
height: 340px;
position: absolute;
transform: scale(1.5);
left: 81px;
top: 50%;
margin-top: -170px;
}
.screen-3__box{
position: absolute;
right: 20px;
top: 50%;
margin-top: -70px;
color: #fff;
}
.screen-3 > .screen-3__wrap > .screen-3__box > .line{
display: inline-block;
}
.screen-3__lang{
float: left;
margin-top: 110px;
}
.screen-3__lang-item{
text-align: center;
width: 74px;
height: 74px;
line-height: 74px;
border: 6px solid;
border-radius: 50%;
margin-left: 30px;
}
.screen-3__lang_i_1{
margin-left: 15px;
color: rgb(31, 89, 117);
}
.screen-3__lang_i_2{
color: rgb(66, 77, 118);
}
.screen-3__lang_i_3{
color: rgb(107, 65, 70);
}
.screen-3__lang_i_4{
color: rgb(41, 83, 95);
}
.screen-3__lang_i_5{
color: rgb(62, 78, 64);
}
/* 第四屏 */
.screen-4{
background-color:#fff;
height: 640px;
}
.screen-4__wrap{
width: 1200px;
height: 640px;
position: relative;
margin: 0 auto;
}
.screen-4__box{
width: 440px;
height: 118px;
text-align: center;
position: absolute;
top: 100px;
left: 50%;
margin-left: -220px;
}
.screen-4__bg{
width: 1200px;
height: 130px;
position: absolute;
top: 320px;
}
.screen-4__bg__item{
float: left;
width: 180px;
height: 85px;
text-align: center;
margin-left: 95px;
position: relative;
}
.screen-4__bg__item__desc{
width: 100%;
height: 16px;
font-size: 16px;
line-height: 16px;
position: absolute;
bottom: -40px;
}
.screen-4__bg__item_i_1{
background: url('../img/sc4-1.png')no-repeat center;
}
.screen-4__bg__item_i_2{
background: url('../img/sc4-2.png')no-repeat center;
}
.screen-4__bg__item_i_3{
background: url('../img/sc4-3.png')no-repeat center;
}
.screen-4__bg__item_i_4{
background: url('../img/sc4-4.png')no-repeat center;
}
/* 第五屏 */
.screen-5{
background: url('../img/sc5.jpg')no-repeat center;
background-size: cover;
overflow: hidden;
height: 640px;
}
.screen-5__wrap{
width: 1200px;
height: 640px;
position: relative;
margin: 0 auto;
}
.screen-5__box{
width: 1200px;
height: 400px;
text-align: center;
position: absolute;
bottom: 100px;
left: 50%;
margin-left: -600px;
color: #fff;
}
.screen-5__bg{
background: url(../img/sc5-1.png)no-repeat center;
width: 200px;
height: 200px;
margin: 0 auto;
margin-bottom: 35px;
}
/* 第六屏 */
.screen-6{
background-color: #fff;
width: 100%;
height: 150px;
position: relative;
}
.screen-6 > button{
width: 190px;
height: 50px;
line-height: 48px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -25px;
margin-left: -95px;
background: transparent;
border: 1px solid rgb(149, 149, 149);
border-radius: 3px;
font-size: 18px;
}
/* 页脚 */
.footer{
width: 100%;
height: 100px;
background: black;
color: #fff;
text-align: center;
position: relative;
}
.footer__desc{
width: 1200px;
height: 38px;
line-height: 38px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -38px;
margin-left: -600px;
}
.footer__desc-item{
padding-left: 30px;
display: inline-block;
color: #fff;
}
.footer__copy{
height: 38px;
width: 300px;
line-height: 38px;
font-size: 16px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -150px;
margin-top: -10px;
}
.screen-1__heading{
transition: all 1s;
}
.screen-1__subheading{
transition: all 2s;
}
.screen-1__heading_animate_init,
.screen-1__subheading_animate_init{
opacity: 0;
transform: translate(0,100%);
}
.screen-1__heading_animate_done,
.screen-1__subheading_animate_done{
opacity: 1;
transform: translate(0,0);
}
.screen-2__heading{
transition: all 1s;
}
.screen-2__heading_animate_init{
opacity: 0;
transform: translate(100%,0);
}
.screen-2__heading_animate_done{
opacity: 1;
transform: translate(0,0);
}
//获取元素
var getElem = function(selector){
return document.querySelector(selector);
}
var getAllElem = function(selector){
return document.querySelectorAll(selector);
}
//获取元素样式
var getCls = function(element){
return element.getAttribute('class');
}
//设置元素样式
var setCls = function(element,cls){
return element.setAttribute('class',cls);
}
//为元素添加样式
var addCls = function(element,cls){
var baseCls = getCls(element);
if(baseCls.indexOf(cls)===-1){
setCls(element,baseCls+' '+cls);
}
}
//为元素删除样式
var delCls = function(element,cls){
var baseCls = getCls(element);
if(baseCls.indexOf(cls)!=-1){
setCls(element,baseCls.split(cls).join(' ').replace(/\s+/g,''));
}
}
//第一步:初始化样式
var screenAnimateElements = {
'.screen-1':[
'.screen-1__heading',
'.screen-1__subheading',
],
'.screen-2':[
'.screen-2__heading',
'.screen-2__subheading',
'.line',
'.screen-2__bg2',
'.screen-2__bg3',
],
'.screen-3':[
'.screen-3__heading',
'.screen-3__subheading',
'.line',
'.screen-3__bg',
'.screen-3__lang',
],
'.screen-4':[
'.screen-4__heading',
'.screen-4__subheading',
'.line',
'.screen-4__bg',
],
'.screen-5':[
'.screen-5__heading',
'.screen-5__subheading',
'.line',
'.screen-5__bg',
],
}
// //设置屏内元素为初始状态
// var setScreenAnimateInit = function(screenCls){
// // var screen = document.querySelector(screenCls);//获取当前屏的元素
// var animateElements = screenAnimateElements[screenCls];//需要设置动画的元素
// for(var i=0;i<animateElements.length;i++){
// var element = document.querySelector(animateElements[i]);
// var baseCls = element.getAttribute('class');
// element.setAttribute('class',baseCls+' '+animateElements[i].substr(1)+'_animate_init');
// }
// }
// //设置播放屏内的元素动画
// var playScreenAnimateDone = function(screenCls){
// // var screen = document.querySelector(screenCls);//获取当前屏的元素
// var animateElements = screenAnimateElements[screenCls];//需要设置动画的元素
// 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'));
// }
// }
//设置屏内元素为初始状态
var setScreenAnimateInit = function(screenCls){
// var screen = document.querySelector(screenCls);//获取当前屏的元素
var animateElements = screenAnimateElements[screenCls];//需要设置动画的元素
for(var i=0;i<animateElements.length;i++){
var element = document.querySelector(animateElements[i]);
var baseCls = element.getAttribute('class');
element.setAttribute('class',baseCls+' '+animateElements[i].substr(1)+'_animate_init');
}
}
//设置播放屏内的元素动画
var playScreenAnimateDone = function(screenCls){
// var screen = document.querySelector(screenCls);//获取当前屏的元素
var animateElements = screenAnimateElements[screenCls];//需要设置动画的元素
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'));
}
}
window.onload = function(){
for(k in screenAnimateElements){
// if(k==='.screen-1'){
// continue;
// }
setScreenAnimateInit(k);
}
}
var navTip = getElem('.header__nav-tip');
var navItems = getAllElem('.header__nav-item');
var outLineItems = getAllElem('.outline__item');
var switchNavItemsActive = function(idx){
for(var i=0;i<navItems.length;i++){
delCls
}
}
//第二步:滚动的到哪里,就播放哪里
window.onscroll = function(){
var top = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
if(top>1){
playScreenAnimateDone('.screen-1');
}
if(top>640*1-100){
playScreenAnimateDone('.screen-2');
}
if(top>640*2-100){
playScreenAnimateDone('.screen-3');
}
if(top>640*3-100){
playScreenAnimateDone('.screen-4');
}
if(top>640*4-100){
playScreenAnimateDone('.screen-5');
}
}
setTimeout(function(){
playScreenAnimateDone('.screen-1');
},200)20
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕夭夭
2020-09-09 09:56:20
同学你好,老师这边测试,和同学描述的不一致。刷新的时候,会从init转换为done,如下:

代码中在定时器中,调用了done相关的函数,所以页面打开时,不到1秒,就会从init转换为done。这个过程很快,所以元素还没有来得及隐藏就开始显示了。

不要让init初始化样式在页面加载后再去执行,不然会有一个从显示到隐藏的过程,导致元素还没有隐藏,就开始执行done显示了。建议把如下 window.onload 去掉,这样初始化样式在页面打开时瞬间就隐藏了。看不到从显示到隐藏的过程了。

可以修改测试一下,如果说的不是这个问题,请同学详细描述一下,以便老师准确高效的为你解答。
祝学习愉快~


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