2012-12-10 29 views
0

首先我有一個HTML勞斯萊斯:如何創建一個簡單,流暢的品牌?

<marquee behavior="scroll" direction="left" scrollamount="1"> 

但它不光滑,速度太慢了。
更高的滾動數 - 平滑度越低。

然後我試圖利用CSS

marquee{ 
    width: 200px; height: 50px; white-space: nowrap; 
    overflow: hidden; 
    overflow-x:-webkit-marquee; 
    -webkit-marquee-direction: forwards; 
    -webkit-marquee-style: scroll; 
    -webkit-marquee-speed: normal; //I changed this to `slow` - without effect 
    -webkit-marquee-increment: small; 
    .-webkit-marquee-repetition: 5; 
    overflow-x: marquee-line; 
    marquee-direction: forward; 
    marquee-style: scroll; 
    marquee-speed: normal; //I changed this to `slow` - without effect 
} 

我想,如果我可以在速度改變爲slow上述商品型號將是平滑的。
所以,我想要一個simple,smoothspeed-adjustable marque。

+1

看看這個老回答同一個問題: http://stackoverflow.com/a/10547997/1809349 –

+1

通過使用一些現成的解決方案去脫離網絡上的無數(而不是百分之一百重新發明輪子)。 – feeela

+0

@DaniP。當我提出這個問題時,我看到了所有相關的答案。相關列表中沒有這個答案。有沒有更好的方法來搜索SO檔案? – Alegro

回答

3
(function($) { 
     $.fn.textWidth = function(){ 
      var calc = '<span style="display:none">' + $(this).text() + '</span>'; 
      $('body').append(calc); 
      var width = $('body').find('span:last').width(); 
      $('body').find('span:last').remove(); 
      return width; 
     }; 

     $.fn.marquee = function(args) { 
      var that = $(this); 
      var textWidth = that.textWidth(), 
       offset = that.width(), 
       width = offset, 
       css = { 
        'text-indent' : that.css('text-indent'), 
        'overflow' : that.css('overflow'), 
        'white-space' : that.css('white-space') 
       }, 
       marqueeCss = { 
        'text-indent' : width, 
        'overflow' : 'hidden', 
        'white-space' : 'nowrap' 
       }, 
       args = $.extend(true, { count: -1, speed: 1e1, leftToRight: false }, args), 
       i = 0, 
       stop = textWidth*-1, 
       dfd = $.Deferred(); 

      function go() { 
       if(that.css('overflow')!="hidden") { 
        that.css('text-indent', width + 'px'); 
        return false; 
       } 
       if(!that.length) return dfd.reject(); 
       if(width == stop) { 
        i++; 
        if(i == args.count) { 
         that.css(css); 
         return dfd.resolve(); 
        } 
        if(args.leftToRight) { 
         width = textWidth*-1; 
        } else { 
         width = offset; 
        } 
       } 
       that.css('text-indent', width + 'px'); 
       if(args.leftToRight) { 
        width++; 
       } else { 
        width--; 
       } 
       setTimeout(go, args.speed); 
      }; 

      if(args.leftToRight) { 
       width = textWidth*-1; 
       width++; 
       stop = offset; 
      } else { 
       width--;    
      } 
      that.css(marqueeCss); 
      go(); 
      return dfd.promise(); 
     }; 
       // $('h1').marquee(); 
$("h1").marquee(); 
    $("h1").mouseover(function() {  
     $(this).removeAttr("style"); 
    }).mouseout(function() { 
     $(this).marquee(); 
    }); 
})(jQuery); 

DEMO

+0

Sowmya,如果沒有更短的路 - 就是這樣。非常感謝。 – Alegro

相關問題