JSは1枚または複数の画像の連続的なシームレスなスクロールを実現するコード例を示します。
3623 ワード
背景:
画像の継続的なスクロールを実現するには、jsを使用する以上、cssアニメーション、移行などの関連したスタイルを絶対に入れないでください。もし転がりたいならば、一画素の感動ができます。移行動画を追加したら、画像が0にリセットされると、逆方向の動画効果が期待されていません。
原理:
写真のスクロール原理は写真のロードショーの原理と同じで、テキストのスクロールなど一連のスクロールにも適用されます。最後の写真または最後のテキストをコピーして最初の行に挿入したり、最初の写真またはテキストをコピーして最後の行に挿入したりして、シームレスなスティッチングを実現します。前提:1、遷移アニメーションを設定していない必要があります。2、0にリセットすると、現在スクロールされている高さは、画像の位置に対して肉眼的に変わりません。
実装:
htmlは主に三つのピースを含みます。
1、一番外側の箱で、スクロール図のエリア、overflow:hiddenを示す。
2、スクロールする箱は主にこの箱の位置を変えて転がりを実現します。中にはスクロールする写真や文字が含まれています。
3、絵や文字を含む箱。
コード:
https://www.teakki.com/p/590beb7be8136dfc5f21770d
締め括りをつける
ここでJSについて、一枚以上の写真を継続的にシームレスにスクロールさせることができる文章を紹介します。もっと関連するjsの写真はシームレスにスクロールします。以前の文章を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
画像の継続的なスクロールを実現するには、jsを使用する以上、cssアニメーション、移行などの関連したスタイルを絶対に入れないでください。もし転がりたいならば、一画素の感動ができます。移行動画を追加したら、画像が0にリセットされると、逆方向の動画効果が期待されていません。
原理:
写真のスクロール原理は写真のロードショーの原理と同じで、テキストのスクロールなど一連のスクロールにも適用されます。最後の写真または最後のテキストをコピーして最初の行に挿入したり、最初の写真またはテキストをコピーして最後の行に挿入したりして、シームレスなスティッチングを実現します。前提:1、遷移アニメーションを設定していない必要があります。2、0にリセットすると、現在スクロールされている高さは、画像の位置に対して肉眼的に変わりません。
実装:
htmlは主に三つのピースを含みます。
1、一番外側の箱で、スクロール図のエリア、overflow:hiddenを示す。
2、スクロールする箱は主にこの箱の位置を変えて転がりを実現します。中にはスクロールする写真や文字が含まれています。
3、絵や文字を含む箱。
コード:
class Roll {
constructor(opts) {
this.elem = opts.elem; //
this.elemBox = opts.elemBox; // ,
this.direction = opts.direction;
this.time = opts.time;
this.init();
this.roll = this.roll.bind(this)
this.startRoll = this.startRoll.bind(this)
this.stopRoll = this.stopRoll.bind(this)
}
init(){
this.elemHeight = this.elem.offsetHeight;
this.elemHtml = this.elem.innerHTML;
this.elem.innerHTML = this.elem.innerHTML + this.elemHtml+ this.elemHtml;
this.speed;
// 1, 1
if(this.direction === 'top' || this.direction === 'left'){
this.speed = -1;
}else{
this.speed = 1;
}
}
roll(){
switch (this.direction) {
case "top":
// top , 0
if(Math.abs(this.elemBox.offsetTop) >= this.elemHeight){
this.elemBox.style.top = 0;
}else{
this.elemBox.style.top = this.elemBox.offsetTop + this.speed + 'px';
}
break;
case "bottom":
// bottom , 0
if(Math.abs(this.elemBox.offsetBottom) >= this.elemHeight){
this.elemBox.style.bottom = 0;
}else{
this.elemBox.style.bottom = this.elemBox.offsetBottom + this.speed + 'px';
}
break;
case "left":
// left , 0
if(Math.abs(this.elemBox.offsetLeft) >= this.elemHeight){
this.elemBox.style.left = 0;
}else{
this.elemBox.style.left = this.elemBox.offsetLeft + this.speed + 'px';
}
break;
case "right":
// right , 0
if(Math.abs(this.elemBox.offsetRight) >= this.elemHeight){
this.elemBox.style.right = 0;
}else{
this.elemBox.style.right = this.elemBox.offsetRight + this.speed + 'px';
}
break;
default:
// , top , 0
if(Math.abs(this.elemBox.offsetTop) >= this.elemHeight){
this.elemBox.style.top = 0;
}else{
this.elemBox.style.top = this.elemBox.offsetTop + speed + 'px';
}
}
}
stopRoll(){
clearInterval(this.scrollTimer)
}
startRoll(){
this.scrollTimer = setInterval(this.roll,this.time)
}
}
参照リンク:https://www.teakki.com/p/590beb7be8136dfc5f21770d
締め括りをつける
ここでJSについて、一枚以上の写真を継続的にシームレスにスクロールさせることができる文章を紹介します。もっと関連するjsの写真はシームレスにスクロールします。以前の文章を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。