13

私はJavascriptに絶望的です。これは私が持っているものです:

<script type="text/javascript">
    function beginrefresh(){

        //set the id of the target object
        var marquee = document.getElementById("marquee_text");

        if(marquee.scrollLeft >= marquee.scrollWidth - parseInt(marquee.style.width)) {
            marquee.scrollLeft = 0;
        }

        marquee.scrollLeft += 1;

        // set the delay (ms), bigger delay, slower movement
        setTimeout("beginrefresh()", 10);

    }
</script>

左にスクロールしますが、比較的シームレスに繰り返す必要があります。現時点では、最初に戻ります。私がやった方法は不可能かもしれませんが、そうでない場合は、誰かがより良い方法を持っていますか?


C#がIntPtrタイプでこれを処理する方法を調べることができます。ポインタを保持するための独自の型を作成することにより、使用しているシステムに応じて、同じ型を32ビットまたは64ビットとして使用できます。

4

7 に答える 7

16

これは、多くの機能を備えた jQuery プラグインです。

http://jscroller2.markusbordihn.de/example/image-scroller-windiv/

そしてこちらは「シルキースムース」

http://remysharp.com/2008/09/10/the-silky-smooth-marquee/

于 2008-12-03T15:01:00.263 に答える
1

マーキータグを置き換えるために使用されるこのスクリプト

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
     
         $('.scrollingtext').bind('marquee', function() {
             var ob = $(this);
             var tw = ob.width();
             var ww = ob.parent().width();
             ob.css({ right: -tw });
             ob.animate({ right: ww }, 20000, 'linear', function() {
                 ob.trigger('marquee');
             });
         }).trigger('marquee');
     
     });
     </script>


<div class="scroll">
    <div class="scrollingtext"> Flash message without marquee tag using javascript!  </div>
 </div>
于 2017-01-09T06:22:02.443 に答える
1

HTML5 はこのタグをサポートしていませんが、多くのブラウザーはテキストを「適切に」表示しますが、コードは検証されません。これが問題にならない場合は、オプションになる可能性があります。

CSS3 にはおそらくマーキー テキストを持つ機能がありますが、それを行う方法を知っている人なら誰でも、それは CSS の「悪い考え」だと信じているため、私がオンラインで見つけた情報は非常に限られています。W3 のドキュメントでさえ、愛好家や独学の人が実装できるほど詳しく説明されていません。

PHP と Perl も同じ効果を再現できます。これに必要なスクリプトは非常に複雑で、他のオプションよりもはるかに多くのリソースを消費します。一部のブラウザではスクリプトの実行速度が速すぎて、効果が完全に無効になる可能性もあります。

JavaScript に戻ります。あなたのコード (OP) は、私が見つけた中で最もクリーンで、最も単純で、最も効果的です。これを試してみます。シームレスにするために、最後と最初の間の空白を制限する方法を検討します。おそらく while ループ (または同様のループ) を実行し、実際に 2 つのスクリプトを実行して、一方が処理中に一方を休ませます。

単一の関数変更で空白をなくす方法もあるかもしれません。私はJSが初めてなので、頭の中でわかりません。-これが完全な答えではないことはわかっていますが、他の誰かのためだけに、アイデアが結果をもたらすことがあります。

于 2011-07-04T11:13:44.500 に答える