(-1)寫在前面 我用的是chrome49,這個idea是我在stackoverflow上回答問題時看到了,多謝這位同行,加深了我對很多技術點的理解,最近剛到北京,忙碌了一兩天,在後續的日子里,會被安排面試,學習計劃只能按工作流走了,做完這個要看一個特別酷的效果,好激動! (0)效果演示 (1)實現 ...
(-1)寫在前面
我用的是chrome49,這個idea是我在stackoverflow上回答問題時看到了,多謝這位同行,加深了我對很多技術點的理解,最近剛到北京,忙碌了一兩天,在後續的日子里,會被安排面試,學習計劃只能按工作流走了,做完這個要看一個特別酷的效果,好激動!
(0)效果演示
(1)實現方案
動畫效果都是用animation做的
(2)知識點詳解
a. border-radius:40px;
當div的長高都是80px的時候,div是一個圓形,其實長高都是60px的時候也是圓型,同理都是40、30也是圓型,當然案例中沒有使用這種方式。具體實現在代碼中說明
b. position:absolute;
當div使用此屬性時,margin:0 auto是無效的,小球使用了這個屬性,他的水平居中的實現方式在代碼中說明
c. animation:down 1.5s infinite alternate;
I.1.5s 是動畫的持續時間,因為延遲時間出現在持續時間的後面,所以只出現一個帶s的參數是持續時間。
II.這裡的alternate是指反向播放動畫,比如說一個動畫的幀如下
@keyframes down
{
from
{
…
}
95%
{
…
}
to
{
…
}
}
正向播放是from-95-to,反向播放to-95%-from
d. @keyframes down{95%{…}}
如果對應animate:down 1.5s;
動畫在執行到95%就到達了最終狀態,剩餘5%的時間會用在回到初始狀態。
(3)代碼加解釋
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<title>為了生活</title>
<style type="text/css">
*
{
margin:0;
padding:0;
}
#lol
{
margin:0px auto;
top:100px;
width:80px;
height:80px;
background-color:red;
border-radius:40px;
position:absolute;
left:160px;
animation:down 1.5s infinite alternate;
}
@keyframes down
{
95%
{
width:15px;
height:15px;
border-radius:7.5px; /*保證div始終是個圓形*/
top:300px;
left:192.5px;/*保證小球始終水平居中*/
background:blue;
}
}
#frame
{
width:400px;
height:315px;
margin:100px auto;
border:1px red solid;
position:relative;
}
#head
{
width:400px;
height:100px;
text-align:center;
font-size:40px;
font-weight:bold;
line-height:100px;
background-image:-webkit-linear-gradient(90deg, #be1e1e, #be9b1e, #1ebe21, #1ebeb5, #1e24be, #ba1ebe, #be1e1e);
/*前面文章有提到*/
-webkit-background-clip: text;/*剪切背景顏色,只在文字上顯示*/
-webkit-text-fill-color:transparent;/*文字填充為透明色*/
background-size:100% 700%;
/*前面文章有提到*/
animation:bc 6s infinite;
}
@keyframes bc
{
to
{
background-position:100% 100%;
/*前面文章有提到*/
}
}
</style>
<script type="text/javascript">
</script>
</head
<body>
<div id="frame">
<div id="head">Animatiom</div>
<div id="lol"></div>
</div>
</body>
</html>