0

フロント ナビゲーションでページ全体のコンテンツを左、右、および下にスライドさせるサイトを設計しています。これは、IE7 以外のすべてで正しく機能します。最も奇妙な点は、3 つのアニメーションの 1 つが (最新のブラウザーのように) 完全に機能することですが、何らかの理由で他の 2 つの機能が機能しないことです。

機能する機能は次のとおりです。

jQuery('#block-block-16 p').live('click',function(){ FadeHeaderFooter();

var $structure = jQuery('#structure');
var $colorBlock = jQuery('#news-color-block');  
var colorHeight = parseInt($colorBlock.css('margin-top'));
var w = jQuery(window).width(); //major difference
var slideHeight = FindSweetSpot('#news-color-block');

$structure.animate({ marginLeft: (w+2000) + "px" }, //math is different
                        1500, function(){
    $colorBlock.animate({ marginTop: (colorHeight - slideHeight) + "px" }, 
                        1000, function(){
        window.open (fakeurl.com','_self',false);
    });
});

});

ないものは次のとおりです。

jQuery('#block-block-18 p').live('click',function(){ FadeHeaderFooter();

var $structure = jQuery('#structure');
var $colorBlock = jQuery('#about-color-block');
var colorHeight = parseInt($colorBlock.css('margin-top'));
var w = jQuery("#main-content").width();
var slideHeight = FindSweetSpot('#about-color-block');


$structure.animate({ marginLeft: ((w/2)*-1) + "px" }, //
                        1500, function(){
    $colorBlock.animate({ marginTop: (colorHeight - slideHeight) + "px" }, 
                        1000, function(){
        window.open ('fakeurl.com','_self',false);
    });
});

});

どちらもほぼ同じです。変数 w が別の要素で宣言されていることがわかりますが、それは問題ではないようです (そして、他のすべてのブラウザーで動作します)。問題と思われるのは、新しい marginLeft がどうなるかを計算する場所です。

つまり、これは機能します: marginLeft: (w+2000) + "px"

これはそうではありません: marginLeft: ((w*.5)*-1) + "px"

1 つ目はページを右にスライドさせ、2 つ目はすべてを左にスライドさせようとしています。

IE7 で左にスライドするのに問題があるようです。これは-1を掛けたものかもしれないと思ったので、これを試しました:

var dist = (w*.5); var スライド = 距離 - 距離 - 距離;

役立たず。どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

1

問題を発見しました!w ( var w = jQuery("#main-content").width(); ) として定義された要素には、「相対」の位置の値があり、その値を「絶対」に切り替えることで、目的の値を取得できました全面的に効果があります。

学んだ教訓:

IE7 で jQuery.animate() を使用する場合は、必ず親要素を絶対位置に配置してください。これは、アニメートしている子が絶対配置されている場合にも当てはまります。

于 2012-09-14T15:24:51.617 に答える