2016-07-27 20 views
-1

今、私のコードはロゴを右から左にアニメートさせ、最後にヒットしたら再開します。新しいサイクルが始まると、最初のロゴが最後のロゴに続くように、ループで続けるにはどうすればよいですか?マーキーの作成方法CSSのみでロゴスライダの無限ループ

EDIT:

img { 
 
    width: 100px; 
 
} 
 
.marquee { 
 
    position: relative; 
 
    width: 100%; 
 
    height: 100px; 
 
    border: 1px solid black; 
 
    overflow: hidden; 
 
} 
 
.marquee div { 
 
    display: block; 
 
    position: absolute; 
 
    width: 300%; 
 
    overflow: hidden; 
 
    animation: marquee 20s linear infinite; 
 
} 
 
.marquee div:hover { 
 
    animation-play-state: paused; 
 
} 
 
.marquee span { 
 
    float: left; 
 
    width: 50%; 
 
} 
 

 
@keyframes marquee { 
 
    0% { left: 0; } 
 
    100% { left: -100%; } 
 
}
<div class="marquee"> 
 
    <div> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    <img src="http://static.bragdeal.com/logo.png" alt=""> 
 
    </div> 
 
</div>

+1

に従うことができますこの – BragDeal

+0

http://www.dynamicdrive.com/dynamicindex2/crawler/index.htmこのリンクを参考にしてください。 –

+0

[https://css-tricks.com/infinite-all-css-scrolling-slideshow/](https://css-tricks.com/infinite-all-css-scrolling-slideshow/)これをチェックする – Vaibhav

答えて

3

HTML:

<div class='marquee'> 
     .... 
     images 
     .... 
    </div> 

CSS:

.marquee { 
    width: 100%; 
    overflow: hidden; 
    border:1px solid #ccc; 
} 

のJavaScript:

$(function() { 
    $('.marquee').marquee({ 
     duration: 5000, 
     duplicated: true, 
     gap: 00, 
     direction: 'left', 
     pauseOnHover: true 
    }); 
}); 

これは、JQuery Marqueeを使用して実行するために行った処理です。

外部リンク:

  1. jquery.pause.js
  2. jquery.marquee.min.js

また、あなたは、スレッドがライブラリを使用して、私はちょうど行い、迅速、簡単なjqueryのコードを持つようにしたいことは、このFiddle

+0

この作業はい、余分なライブラリなしでこれを行う方法はありましたが、それが何であれ動作したいと思います。すでにアニメーションをロゴで開始してからスクロールする方法はありますか?今は何もない状態から始まり、それから右側からスライドする – BragDeal

+0

@BragDealはい、アニメーションを与えることは可能です。このレポhttps://github.com/aamirafridi/jQuery.Marqueをご覧ください。あなたはあなたが望むものを見つけるでしょう –

1

ずっと良いだろうjQueryを使ってこれを行うための簡単な方法がある場合、私はあなたのフィドルhttps://jsfiddle.net/gkpnx34v/2/を更新して、私はむしろ、余分なJSライブラリを使用しないで ---ちょっと手を加えましたが、それはあなたにアイデアを与えるはずです。

.tech-slideshow { 
 
    height: 100px; 
 
    max-width: 100%; 
 
    margin: 0 auto; 
 
    position: relative; 
 
    overflow: hidden; 
 
    border:1px solid black; 
 
} 
 

 
.mover-1 { 
 
    height: 150px; 
 
    width: 10000px; 
 
    
 
    position: absolute; 
 
    overflow-x:hidden; 
 
    top: 0; 
 
    left: 0; 
 

 
    animation: moveSlideshow 3s linear infinite; 
 
} 
 

 
.mover-1 img { 
 
    display:inline-block; 
 
    vertical-align:middle; 
 
    width:100px; 
 
    margin:0; 
 
} 
 

 
@keyframes moveSlideshow { 
 
    100% { 
 
    transform: translateX(-520px); 
 
    } 
 
}
<div class="tech-slideshow"> 
 
    <div class="mover-1"> 
 
    <img src="http://static.bragdeal.com/logo.png" style="height:150px;"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png" style="height:150px;"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png" style="height:150px;"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    <img src="http://static.bragdeal.com/logo.png"> 
 
    </div> 
 
</div>

私はあなたのロゴが次の行にロールオーバーを心配する必要はないだけので、任意の(巨大な)幅にご.mover-1を設定します。

次に、画像にいくつかのスタイルを設定して、うまく整列させるようにしました。

最後に、moveSlideshow translateX距離を1つのロゴセットの実際の幅に設定しました。 (プラス20ピクセルのため、あまりにも疲れていてレンダリングの問題があるので、パッディングやマージンなどを各ロゴに〜4ピクセル追加することがわかります)。

重要なのは、2組のロゴが必要なことです。最初のセットと次に表示される複製セットです。 1セットの幅に正確に移動するようにアニメーションを設定すると、スムーズにループします。

私は実際にロゴのブロックが決して十分に広いものであることを確認するために、3番目のロゴセットを追加しました(後でコードをコピー&ペーストするのは本当に簡単で、レンダリングに余分な帯域幅は必要ありません)ワイドスクリーンに隙間がある。

P.S.ロゴ画像(height:150px)に設定したインラインスタイルは、この機能とは関係ありません。私はちょうどあなたがアニメーションがループしていたときに私が使用する第2のイメージを見つけるのが面倒だと言うことができることを確かめたいと思っていました。

P.P.S. a)ロゴの全幅を手作業で計算するか、b)ロゴの冗長ブロックを追加するのではなく、jQueryを使用して、その距離を移動するための.mover-1コンテナの幅($('.mover-1')[0].width())とset your keyframeを簡単に見つけることができます。次に、画像の配列を作成し($('.mover-1 img'))、元のセットに追加/追加します。

このコード(未テスト)を取得する必要がありますが閉じ:

var logos = $('mover-1 img'); 
$('.mover-1').append(logos).append(logos); 
+0

ありがとうございました!しかし問題はありますが、何かが正しく機能していません。 https://jsfiddle.net/gkpnx34v/4/色を使ってアニメーションのパターンを見ることができるように変更しました。滑らかではないことがわかります。最初の緑色の背景ロゴが表示されない – BragDeal

+0

緑色の背景ロゴが表示されないのは、青色で始まるロゴの最初のセットが表示されるためです。赤が青が始まった場所にロールオーバーすると、アニメーションは最初に戻ります。あなたがロゴの間に空白のスペースで終わることがないように、あなたがSUUUUUPERのワイドモニターにいる場合のために、赤を過ぎたロゴ(緑を通って)はちょうどそこにあります。 –

+0

アニメーションは滑らかではありません。一方、アニメーションを処理するためにソフトウェアレンダリングを使用していて、動きが遅くなる傾向があるためです。素敵な滑らかなアニメーションが必要な場合は、2Dで作業しているときでも、CSSのtransform属性 'translate3d()を使用します。 'translate3d()'は3つの異なる値(x、y、z)を設定することができ、グラフィックスカードを持っていればブラウザに "hardware rendering"jsfiddleではなくコンピュータから実行してみてください。 More here:https://www.kirupa.com/html5/animating_movement_smoothly_using_css.htm –

関連する問題