Growlみたいなポップアップメッセージを表示する
そんなライブラリを書きなぐってみました。
とりあえずこんなの。
id:phaに教えてもらって、Growlをインストールしたんです。そしたら、メッセージがかっこいいじゃないですか。っつことで、こんなのを作ってみました。
面白いことに、これで、JavaScriptのソースコードが52行。YAHOO UIを使ってますが、52行でこれが作れるJavaScriptがすばらしすぐる。
(function() { var Dom = YAHOO.util.Dom; var Event = YAHOO.util.Event; var Anim = YAHOO.util.Anim; NiceMessage = { addMessage: function(msg, option) { if (!option) option = {}; var width = Dom.getViewportWidth(); var box = document.createElement('div'); box.innerHTML = msg; Dom.addClass(box, 'nice-message'); if (option.width) Dom.setStyle(box, 'width', option.width); if (option.color) Dom.setStyle(box, 'color', option.color); if (option.backgroundColor) Dom.setStyle(box, 'backgroundColor', option.backgroundColor); if (option.border) Dom.setStyle(box, 'border', option.border); if (!option.duration) option.duration = 1000; if (!option.showTime) option.showTime = 1000; var y = NiceMessage.getY(); document.body.appendChild(box); Dom.setX(box, width - parseInt(Dom.getStyle(box, 'width')) - 20); Dom.setY(box, y + 10); var attr = { opacity: {from: 0, to: 1} }; var anim = new Anim(box, attr, option.duration / 1000); anim.onComplete.subscribe(function() { setTimeout(function() { var attr = { opacity: {from: 1, to: 0} }; var fade = new Anim(box, attr, option.duration / 1000); fade.onComplete.subscribe(function() { box.parentNode.removeChild(box); }); fade.animate(); }, option.showTime); }); anim.animate(); }, getY: function() { var scrollTop = Dom.getDocumentScrollTop(); var els = Dom.getElementsByClassName('nice-message'); var bottom = 0; for (var i = 0, len = els.length; i < len; i++) { var region = Dom.getRegion(els[i]); bottom = bottom < region.bottom ? region.bottom : bottom; } return bottom < scrollTop ? scrollTop : bottom; } }; })();