0
  1. MooTools: //MooTools, http://mootools.net , My Object Oriented (JavaScript) Tools. Copyright (c) 2006-2009 Valerio Proietti、http://mad4milk.net、MITスタイル ライセンス。//core +FX.Scroll +Asset +イベント委譲

私のスクリプトの一部:

window.addEvent('domready', function() {
new SlideoutMenu();



initialize: function()
{
    // FF2 Mac screws up the menu display. give the m the basic menu
    if (Browser.Platform.mac && Browser.Engine.gecko && Browser.Engine.version == 18) {
        $('menu').removeClass('js_live');
        return;
    }

    // iPhone should have normal menu
    if (Browser.Platform.ipod) {
        $('menu').removeClass('js_live');
        return;
    }

    this.bg_div = $('menu');
    this.menu_div = $$('#menu #opts')[0];

    this.logo_lnk = $$('#logo a')[0];
    if (this.logo_lnk.hasClass('home')) {
        this.is_homepage = true;
    }

    var rbsEasing = new Fx.Transition(Fx.Transitions.Expo, 4);      

    this.is_open = false;

    this.bgEffect = new Fx.Tween(this.bg_div, {
        unit: '%',
        property: 'width',
        duration: 650,
        transition: rbsEasing.easeOut,
        onComplete:this.bgEffectComplete.bind(this)
    });

    this.menuEffect = new Fx.Tween(this.menu_div, {
        property: 'left',
        transition: rbsEasing.easeOut,
        duration: 650
    });

    $('logo').addEvent('mouseenter', this.showMenu.bind(this));

    this.mouseBindCallback = this.moveMoveCallback.bind(this);
},

bgEffectComplete: function()
{
    if (this.is_open === false) {
        document.addEvent('mousemove', this.mouseBindCallback);
    }
    this.is_open = !this.is_open;
},

showMenu: function()
{
    if (this.is_open === true) {
        return;
    }

    this.bgEffect.start(70);
    this.menuEffect.start(600, $('logo').getPosition().x);

    this.logo_lnk.addClass('active');

    if (this.is_homepage) {
        this.logo_lnk.removeClass('home');
    }
},

hideMenu: function()
{
    this.bgEffect.start(0);
    this.menuEffect.start(600);

    this.logo_lnk.removeClass('active');

    if (this.is_homepage) {
        this.logo_lnk.addClass('home');
    }
},

moveMoveCallback: function(e)
{
    var close_right = this.menu_div.getPosition().x + 370;
    if (e.page.x > close_right && e.page.y > 80 && this.is_open === true) {
        document.removeEvent('mousemove', this.mouseBindCallback);
        this.hideMenu();
    }
}

メニューは問題なく動作し、その後

  1. jquery を使用してフォト スライドショー ギャラリーを作成しましたが、もちろんメニューが機能しなくなりました。jquery を削除すると、正常に動作するようになりました。JavaScriptとjqueryの間に競合があり、それらを一緒に使用することは推奨されていないと言っているサイトがたくさんありますが、解決策はあります.

    jQuery.noConflict(); 後に追加する必要があります

また、mooTools ファイル jsc.js と自分で作成したファイルの $j を $ に変更しました。最後にそれは機能しましたが、非常に奇妙なことに、メニューがポップアップしましたが、その要素はもう整列されておらず、カーソルを離しても消えませんでした...これには簡単な解決策があると感じています。ここでの知識のあなたの助けを求めています

4

2 に答える 2