[懐かしの]はてなビューティフルスター

    @@ -1,6 +1,6 @@ /* * @title [懐かしの]はてなビューティフルスター - * @description 知ってる人は知っている、「こんぺいとう」のアレです。「シャンシャンシャーン」と言いながらクリックしましょう。 + * @description 知ってる人は知っている、「こんぺいとう」のアレです。「シャンシャンシャーン」と言いながらクリックしましょう。ブックマークレットを起動した後、はてなスターをクリックして下さい。 * @include http://* * @license BSD * @require jQuery
  • /*
     * @title [懐かしの]はてなビューティフルスター
     * @description 知ってる人は知っている、「こんぺいとう」のアレです。「シャンシャンシャーン」と言いながらクリックしましょう。ブックマークレットを起動した後、はてなスターをクリックして下さい。
     * @include http://*
     * @license BSD
     * @require jQuery
     */
    (function() {
      var FIREWORKS_COUNT = 10;
      var FIREWORKS_ANIMATION = 30;
      var FIREWORKS_COLOR = ['yellow', 'red', 'pink', 'blue', 'azure', 'cyan'];
    
      var Firework = function(x, y, count) {
        var self = this;
        this.count = count;
        this.seq = 0;
        this.xacc = [];
        this.yacc = [];
        this.divs = [];
        for (var n = 0; n < count; n++) {
          this.divs[n] = $('<div/>').css({
            position: 'absolute',
            left: x + 'px',
            top: y + 'px',
            zIndex: 256,
            color: FIREWORKS_COLOR[n%6] || 'white'
          }).text('★').attr('class', 'hatena-beautiful-star').appendTo(document.body)[0];
          this.xacc[n] = 10 * Math.random() - 5;
          this.yacc[n] = 10 * Math.random() - 20;
        }
        this.timer = setInterval(function() {
          if (self.seq > FIREWORKS_ANIMATION) {
            clearInterval(self.timer);
            for (var n = 0; n < self.count; n++) {
              document.body.removeChild(self.divs[n]);
            }
            return true;
          }
          for (var n = 0; n < self.count; n++) {
            var e = self.divs[n];
            e.style.left = parseInt(e.style.left) + self.xacc[n] + 'px';
            e.style.top = parseInt(e.style.top) + self.yacc[n] + 'px';
            self.yacc[n]++;
          }
          self.seq++;
          return true;
        }, 10);
      }
    
      $('.hatena-star-add-button').click(function() {
        new Firework($(this).offset().left-5, $(this).offset().top, FIREWORKS_COUNT);
      });
    
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2010/05/28 22:31:55 - 2010-05-28
  2. 2010/05/28 22:31:22 - 2010-05-28