[懐かしの]はてなビューティフルスター
by
mattn
2010-05-28 [2010/05/28 22:31:55]
知ってる人は知っている、「こんぺいとう」のアレです。「シャンシャンシャーン」と言いながらクリックしましょう。ブックマークレットを起動した後、はてなスターをクリックして下さい。
-
/*
* @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 です。