頁中添加滾動字幕效果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>滾動字體的設置</title>
</head>
<body>
<canvas id="canvas1" width="600" height="600" style="border:1px solid #000000"></canvas>
<script type="text/javascript">
var canvas1 = document.querySelector("#canvas1") // 1.找到畫布對象
var ctx = canvas1.getContext("2d") // 2.上下文對象(畫筆)
ctx.shadowBlur = 10; // 陰影距離
ctx.shadowColor = "red" // 陰影顏色
ctx.shadowOffsetX = 30 // 陰影偏移
ctx.shadowOffsetY = 30 // 陰影偏移
ctx.font = "150px 楷體"
ctx.fillText("你好!", 20,150)
ctx.fillText("你好!", 20,350)
ctx.strokeText('你好!',23, 153)
ctx.strokeText('你好',23, 553)
canvas繪制文字
var x = 600
setInterval(function(){
if(x > -350){
//清空畫布
ctx.clearRect(0,0,600,600)
ctx.strokeText('你好!',x, 153)
ctx.fillText("你好!", x,350)
ctx.font = "50px 宋體"
ctx.strokeText('每天學習一點點',x, 553)
x -= 3
}else{x=590}
}, 16)
</script>
</body>
</html>
用js來實現。
html:
<div class="box"> <p class="animate"> 文字滾動的內容文字滾動的內容文字滾動的內容文字滾動的內容 </p> </div>
css:
天要實現的是字體上下無縫滾動效果,在友情鏈接這塊,2345提供了很多的鏈接并且通過定時的無縫滾動讓內容顯示在窗口中,這里我也來寫下這個功能,當頁面載入時鏈接自動往上無縫滾動,當鼠標停留時滾動停止。
首先我們先來實現字幕滾動效果,一般情況下如果是多個單條數據翻滾,比較單間的方法就是用css來實現,通過animation和@keyframes配合就可以快速的實現滾動,但是但是這時會有個問題,滾到最后一條時會自動跳到第一條,中間出現了斷層的感覺,所以使用該方法時最好將第一條數據復制一遍放尾部,然后通過animation-fill-mode: forwards;將動畫重置為第一幀,這樣就能夠實現無縫的滾動了。
.linkContent { width: 90%; height: 20px; animation: move 3s infinite 2s running; animation-fill-mode: forwards; } @keyframes move { 0% { transform:translatey(0px); } 100% { transform:translateY(-20px); } }
這里我的數據是通過p標簽遍歷a標簽得到的,所以每行有好多個a標簽,具體個數與內容長短有關,所以復制第一條無法實現,所以這方法不合適我這里使用,所以這里我們還是用js來實現吧,為了更好的獲取元素的位置,這里稍微改動下HTML,在列表下面加個p標簽方便定位。
接下來我們開始寫方法,在methods中寫個paly方法, 通過document.getElementById來獲取當前元素,這里scrollTop獲取被選元素的垂直滾動條位置,offsetHeight獲取該控件本身的高度,然后設置一個定時器,給定一個speed時間,這樣就實現了自動無縫滾動的效果了。
play () { var speed = 100; var wrapper = document.getElementById('wrapper'); var demo1 = document.getElementById('demo1'); var demo2 = document.getElementById('demo2'); demo2.innerHTML=demo1.innerHTML console.log(demo2.innerHTML) function Marquee(){ if(demo2.offsetHeight-wrapper.scrollTop<=0) wrapper.scrollTop-=demo1.offsetHeight; else{ wrapper.scrollTop+=1 } } var MyMar=setInterval(Marquee,speed) wrapper.onmouseover=function() {clearInterval(MyMar)} wrapper.onmouseout=function() {MyMar=setInterval(Marquee,speed)} },
因為 是獲取當前的DOM元素進行操作的,所以這里我們要等頁面載入之后再進行滾動操作,所以這里我們在mounted()中調用paly方法即可,還有.linkContent比忘了加上overflow: hidden;屬性。
mounted(){ this.play(); },
這是結合了JavaScript語法實現的文字無縫滾動效果,雖然達到了預期,但是現在在用vue,我還是想用vue來實現這個功能,只是目前還沒有研究出來,主要是因為我的a標簽數據是全包裹在一個p標簽中的,也就是每行的數據不定,內容也不定,所以只能通過移動p標簽外面的div來實現功能,不知有沒有大神能指點一二。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。