Check

さらにtextとか、windowを揺らす

| | コメント(0) | トラックバック(0)
さっきのやつはwindowを最大化してると解除されちゃうので修正。
さらにsafariはa tag内で改行されなくなっちゃうので2文字ごと切るように修正。
(spanの切れ目で改行してくれないっぽい)

$(function () {
    var pos = [3, -3, 3, -3, 3, -3];
    var a = document.getElementById('menu').getElementsByTagName('a');
    var len = a.length;
    $('#menu a').mouseover(function () {
        var ps = pos.concat();
        var val = setInterval(function () {
            var p = ps.shift();
            if (p) return document.body.style.marginTop = p+'px';
            clearInterval(val);
            document.body.style.marginTop = '';
        }, 10);
    });
    var match = $.browser.safari ? ['(.)(.)?', '$1$2'] : ['(.)', '$1'];
    match[0] = new RegExp(match[0], 'g');
    match[1] = '<span class="brbr" style="position:relative">'+match[1]+'</span>';
    $('a:not(:hidden)')
        .each(function () {
            var child = this.childNodes;
            var length = child.length;
            for (var i = 0; i < length; ++i) {
                var self = child[i];
                if (self.nodeType != 3 && (!self.nodeValue || self.nodeValue.match(/^\s*$/))) continue;
                self.parentNode.innerHTML = self.nodeValue.replace(match[0], match[1]);
            };
        })
        .hover(function () {
            if ($.data(this, 'brbr')) return;
            $.data(this, 'brbr', true);
            var ps = pos.concat();
            var $_ = $(this);
            var val = setInterval(function () {
                var p = ps.shift();
                if (!p) {
                    $_.find('.brbr').css('top', '');
                    return clearInterval(val);
                };
                $_.find('.brbr').each(function (i) {
                    $(this).css({top:((i + ps.length) % 2) ? -3 : 3})
                });
            }, 25);
        }, function () {
            $.data(this, 'brbr', false);
        });
    ;
});

トラックバック(0)

このブログ記事を参照しているブログ一覧: さらにtextとか、windowを揺らす

このブログ記事に対するトラックバックURL: http://0-9.sakura.ne.jp/mt/mt-tb.cgi/634

コメントする