根据慕课网上视频,写的。
记录一下:
html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0,
minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="format-detection" content="telephone=no"/>
<title>慕课贺春</title>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<div class="music">
<img src="img/music_pointer.png">
<img id="music" class="play" src="img/music_disc.png">
</div>
<div class="page" id="page1">
<div class="bg"></div>
<div class="p1_lantern">点击屏幕<br />开启好运2016</div>
<div class="p1_immoc"></div>
<div class="p1_words">2016年慕课网新年特献</div>
</div>
<div class="page" id="page2">
<div class="p2_bg_loading"></div>
<div class="bg"></div>
<div class="p2_circle"></div>
<div class="p2_2016"></div>
</div>
<div class="page" id="page3">
<div class="bg"></div>
<div class="p3_logo"></div>
<div class="p3_title"></div>
<div class="p3_second"></div>
<div class="p3_first"></div>
<div class="p3_blessing"></div>
</div>
<audio autoplay="true">
<source src="http://www.imooc.com/activity/project/project1/audio/happynewyear.mp3" type="audio/mpeg">
</audio>
</body>
</html>
css:
/* all tag */
* {
margin: 0;
padding: 0;
border: none;
font-size: 1.5625vw;
font-family: "microsoft yahei";
}
html,
body {
height: 100%;
overflow: hidden;
}
/**
* music tag
*/
.music {
width: 15vw;
height: 15vw;
border: 4px solid #ef1639;
position: fixed;
top: 3vh;
right: 4vw;
z-index: 5;
border-radius: 50%;
background: #fff;
}
.music > img:first-of-type {
position: absolute;
top: 24%;
right: 2.5%;
width: 28.421%;
z-index: 1;
}
.music > img:last-of-type {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
width: 79%;
z-index: 0;
}
.music > img.play {
-webkit-animation: music_disc 4s linear infinite;
-moz-animation: music_disc 4s linear infinite;
-ms-animation: music_disc 4s linear infinite;
-o-animation: music_disc 4s linear infinite;
animation: music_disc 4s linear infinite;
}
@-webkit-keyframes music_disc {
0% {
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes music_disc {
0% {
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
transform: rotate(360deg);
}
}
/**
* page tag
*/
.page {
position: absolute;
width: 100%;
height: 100%;
}
.page > .bg {
position: absolute;
z-index: -1;
height: 100%;
width: 100%;
}
/**
* page1 tag
*/
#page1 {
display: block;
}
#page1 > .bg {
background: url(../img/p1_bg.jpg) no-repeat center center;
background-size: 100%;
}
#page1 > .p1_lantern {
position: absolute;
top: -3.4%;
right: 0;
left: 0;
margin: auto;
background: url(../img/p1_lantern.png) no-repeat center bottom;
background-size: 100%;
width: 45vw;
height: 71.2vh;
font-size: 3.506rem;
color: #fff;
padding-top: 31vh;
text-align: center;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
box-sizing: border-box;
}
#page1 > .p1_lantern:before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
content: "";
margin: auto;
width: 30vw;
height: 30vw;
background: #D60B3B;
opacity: .5;
border-radius: 50%;
-webkit-box-shadow: 0 0 10vw 10vw #D60B3B;
-moz-box-shadow: 0 0 10vw 10vw #D60B3B;
-ms-box-shadow: 0 0 10vw 10vw #D60B3B;
-o-box-shadow: 0 0 10vw 10vw #D60B3B;
box-shadow: 0 0 10vw 10vw #D60B3B;
-webkit-animation: p1_lantern .5s infinite alternate;
-moz-animation: p1_lantern .5s infinite alternate;
-o-animation: p1_lantern .5s infinite alternate;
animation: p1_lantern .5s infinite alternate;
}
@-webkit-keyframes p1_lantern {
0% {
opacity: .5;
-webkit-transform: scale(.8, .8);
transform: scale(.8, .8);
}
100% {
opacity: 1;
}
}
@keyframes p1_lantern {
0% {
opacity: .5;
-webkit-transform: scale(.8, .8);
transform: scale(.8, .8);
}
100% {
opacity: 1;
}
}
#page1 > .p1_immoc {
position: absolute;
right: 0;
bottom: 0;
left: 0;
background: url(../img/p1_imooc.png) no-repeat center center;
background-size: 100%;
width: 27.656vw;
height: 30.656vh;
margin: auto;
}
#page1 > .p1_words {
font-size: 2.314rem;
position: absolute;
right: 0;
left: 0;
bottom: 23px;
text-align: center;
color: #231815;
}
/**
* page2 tag
*/
#page2 {
display: none;
-webkit-transition: .5s;
transition: .5s;
}
#page2.fadeOut{
opacity: .3;
-webkit-transform: translate(0, -100%);
transform: translate(0, -100%);
}
#page2 > .p2_bg_loading{
z-index: 4;
background: #ef1639;
-webkit-animation: p2_bg_loading 1s linear forwards;
animation: p2_bg_loading 1s linear forwards;
}
@-webkit-keyframes p2_bg_loading{
from{
opacity: 1;
}
to{
opacity: 0;
}
}
@keyframes p2_bg_loading{
from{
opacity: 1;
}
to{
opacity: 0;
}
}
#page2 > .bg {
background: url(../img/p2_bg.jpg) no-repeat center center;
background-size: 100%;
}
#page2 > .p2_circle {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
border-radius: 50%;
background: url(../img/p2_circle_outer.png) no-repeat center center;
background-size: 100%;
width: 59.375vw;
height: 59.375vw;
-webkit-animation: p2_circle_outter 1s linear 3s infinite;
animation: p2_circle_outter 1s linear 3s infinite;
}
@-webkit-keyframes p2_circle_outter {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-360deg);
transform: rotate(-360deg);
}
}
@keyframes p2_circle_outter {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-360deg);
transform: rotate(-360deg);
}
}
#page2 > .p2_circle:before {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
border-radius: 50%;
content: "";
background: url(../img/p2_circle_middle.png) no-repeat center center;
background-size: 100%;
width: 45.625vw;
height: 45.625vw;
-webkit-animation: p2_circle_middle 1s linear 2s infinite;
animation: p2_circle_middle 1s linear 2s infinite;
}
@-webkit-keyframes p2_circle_middle {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(720deg);
transform: rotate(720deg);
}
}
@keyframes p2_circle_middle {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(720deg);
transform: rotate(720deg);
}
}
#page2 > .p2_circle:after {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
border-radius: 50%;
content: "";
background: url(../img/p2_circle_inner.png) no-repeat center center;
background-size: 100%;
width: 39.9375vw;
height: 39.9375vw;
-webkit-animation: p2_circle_inner 1s linear 1s infinite;
animation: p2_circle_inner 1s linear 1s infinite;
}
@-webkit-keyframes p2_circle_inner {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1080deg);
transform: rotate(-1080deg);
}
}
@keyframes p2_circle_inner {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(-1080deg);
transform: rotate(-1080deg);
}
}
#page2 > .p2_2016 {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
background: url(../img/p2_2016.png) no-repeat center center;
background-size: 100%;
width: 27.5vw;
height: 6.24vh;
}
/**
* page3 tag
*/
#page3 {
display: none;
-webkit-transition: .5s;
transition: .5s;
}
#page3.fadeIn{
-webkit-transform: translate(0, -100%);
transform: translate(0, -100%);
}
#page3 > .bg {
background: url(../img/p3_bg.jpg) no-repeat center center;
background-size: 100%;
}
#page3 > .p3_logo {
width: 34.6875vw;
height: 6.327vh;
position: absolute;
top: 7.82vh;
right: 0;
left: 0;
margin: auto;
background: url(../img/p3_logo.png) no-repeat center center;
background-size: 100%;
}
#page3 > .p3_title {
width: 48.125vw;
height: 50vh;
position: absolute;
top: 21vh;
right: 0;
left: 0;
margin: auto;
background: url(../img/p3_title.png) no-repeat center center;
background-size: 100%;
}
#page3 > .p3_second {
width: 22.8125vw;
height: 41.652vh;
position: absolute;
top: 25.48vh;
left: 3.75vw;
background: url(../img/p3_couplet_second.png) no-repeat center center;
background-size: 100%;
}
#page3 > .p3_first {
width: 22.8125vw;
height: 41.652vh;
position: absolute;
top: 25.48vh;
right: 3.75vw;
background: url(../img/p3_couplet_first.png) no-repeat center center;
background-size: 100%;
}
#page3 > .p3_blessing {
width: 32vw;
height: 32vh;
position: absolute;
right: 0;
bottom: 3vh;
left: 0;
margin: auto;
border-radius: 50%;
background: url(../img/p3_blessing.png) no-repeat center center;
background-size: 100%;
-webkit-animation: p3_blessing 2s linear infinite;
animation: p3_blessing 2s linear infinite;
}
@-webkit-keyframes p3_blessing {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes p3_blessing {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
js
window.onload = function(){
/*console.log("网页可见区域宽:" + document.body.clientWidth);
console.log("网页可见区域高:" + document.body.clientHeight);
console.log("网页可见区域宽(包括边线的宽):" + document.body.offsetWidth);
console.log("网页可见区域高(包括边线的高):" + document.body.offsetHeight);
console.log("网页正文全文宽:" + document.body.scrollWidth);
console.log("网页正文全文高:" + document.body.scrollHeight);
console.log("网页被卷去的高:" + document.body.scrollTop);
console.log("网页被卷去的左:" + document.body.scrollLeft);
console.log("网页正文部分上:" + window.screenTop);
console.log("网页正文部分左:" + window.screenLeft);
console.log("屏幕分辨率的宽:" + window.screen.width);
console.log("屏幕分辨率的高:" + window.screen.height);
console.log("屏幕可用工作区宽度:" + window.screen.availWidth);
console.log("屏幕可用工作区高度:" + window.screen.availHeight);*/
//获取元素
var page1 = document.getElementById("page1");
var page2 = document.getElementById("page2");
var page3 = document.getElementById("page3");
var music = document.getElementById("music");
var audio = document.getElementsByTagName("audio")[0];
//当音乐播放完停止的时候,自动停止光盘旋转效果
audio.addEventListener("ended", function(event){
music.setAttribute("class", "");
//this.style.animationPlayState = "paused";
//this.style.webkitAnimationPlayState = "paused";
}, false);
//点击音乐图标,控制音乐播放效果
/*music.onclick = function(){
if(audio.paused){
audio.play();
this.setAttribute("class","play");
//this.style.animationPlayState = "running";
//this.style.webkitAnimationPlayState = "running";
}else{
audio.pause();
this.setAttribute("class","");
//this.style.animationPlayState = "paused";
//this.style.webkitAnimationPlayState = "paused";
}
}*/
//点击音乐图标,控制音乐播放效果
music.addEventListener("touchstart", function(event){
if(audio.paused){
audio.play();
this.setAttribute("class","play");
//this.style.animationPlayState = "running";
//this.style.webkitAnimationPlayState = "running";
}else{
audio.pause();
this.setAttribute("class","");
//this.style.animationPlayState = "paused";
//this.style.webkitAnimationPlayState = "paused";
}
}, false);
//点击屏幕,开启好运2016
page1.addEventListener("touchstart", function(event){
page1.style.display = "none";
page2.style.display = "block";
page3.style.display = "block";
page3.style.top = "100%";
setTimeout(function(){
page2.setAttribute("class", "page fadeOut");
page3.setAttribute("class", "page fadeIn");
}, 5500);
}, false);
}
遇到的坑1,page3.style.top = "100%";写成了 100% ,马丹找了好久才发现问题的所在。
遇到的坑2,引入了js,在里面写的点击事件,但是就事没有效果,经过排查,发现是上面被遮挡了,index-z 的问题。