css數字/文字滾動效果
阿新 • • 發佈:2021-01-10
效果:
原理
- 利用偽類,開始的時候給本來的內容蓋住,然後執行動畫。
- 設定寬高,寬就是單個內容(比如數字中的一位數)的寬,讓內容一行一個的排成列。
- 動畫就是讓這些內容一個個的往上升,造成一種滾動效果
- 最後露出原來的內容(原來的內容和偽類裡的內容是同樣的樣式)
程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>數字滾動</title>
<style>
/*無關緊要的屬性*/
.txt {
position: absolute;
left: 178px;
font-size: 30px;
line-height: 30px;
}
/*接下來這一段是重點*/
/*設定內容和偽類的樣式*/
.mod_txt {
position: relative;
display: inline-block;
vertical-align: middle;
text-align: center;
float: left;
overflow: hidden;
width: 22px;
height: 30px;
text-transform: uppercase;
font-size: 30px;
color: #333;
}
.mod_txt:before {
position: absolute;
top: 0;
left: 0;
width: 100%;
word-break: break-all;
background: #FFFFFF;
font-size: 30px;
color: #333;
}
/*設定裡面第一個數字的動畫*/
.txt11 span:nth-child(1):before {
content : "03456789";
-webkit-animation-name: txt1;
animation-name: txt1;
-webkit-animation-duration: 1.6s;
animation-duration: 1.6s;
/* -webkit-animation-delay: 0.3s;
animation-delay: 0.3s; */
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
/*隨便寫的數,作用就是讓這一列數字向上升,形成滾動效果*/
@-webkit-keyframes txt1 {
from {
margin-top: -648px;
}
to {
margin-top: 110px;
}
}
/*設定裡面第二個數字的動畫*/
.txt11 span:nth-child(2):before {
content: "051341989";
-webkit-animation-name: txt1;
animation-name: txt1;
-webkit-animation-duration: 1.8s;
animation-duration: 1.8s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
</style>
</head>
<body>
<div class="txt txt11">
<span class="mod_txt">2</span>
<span class="mod_txt">0</span>
</div>
</body>
</html>
嘮嘮叨叨
- 想讓動畫停留的時間不一樣,就要讓
animation-duration
不一樣 - 想讓動畫開始運動的時間不同,就單加
animation-delay
,但這樣會讓原來的數字先被看到一會 - 想先不讓動畫執行,到一定時間了再執行的話,以上面的demo為例,html裡可以
先不寫class名txt11
,等到了時候再$('.txt').addClass('txt11');
就好了