2010-11-23 11 views
1

これはむしろランダムな問題です。私はCSS3Pieを使用してIE3でのCSS3の互換性を処理していますが、私は問題に遭遇しました。多くの場合PIEを使用すると、IEで適切に動作するためにはposition:relativeを使用する必要があります。相対要素内の絶対ゼロを参照するようにCSS要素をリセットできます

これは、レイアウト内のゼロ参照内を移動するため、ラッパーを含むときに問題になります。サイトでのマッピングに使用するソフトウェアは、ブラウザの左上隅の絶対位置を、測位計算の基準点として使用します。理想的には、私たちのソフトウェアはより柔軟性があり、そのような絶対的な位置に頼ることはありませんが、それはすぐにいつでも変更されることはないでしょう。

私の質問には、どういうわけかレイアウトの流れから要素を取り除いて、相対的に配置されたオブジェクト内に含まれている元の0,0の左上の位置に戻って参照できますか?私はおそらくz-indexがうまくいくかもしれないと考えましたが、要素を絶対0,0に戻すことはありません。

最も単純な回避策は、PIEをラッパーに適用しないことですが、レイアウトラッパーから丸みのあるコーナーとドロップシャドウも削除します。それは世界の終わりではありませんが、理想的には私は解決策を考え出したいと思います。

+0

javascript/jqueryソリューションは受け入れられますか? –

+1

絶対配置された要素がDOMのどこに現れるかを制御することはできますか?私は彼らがポップアップか何か、正しいと思いますか?相対位置付けされたdivの外側でマークアップを移動すると、bodyタグが閉じる前に、探しているものが表示されます。 – RussellUresti

+0

理想的には私はjavascriptを避けたいと思いますが、それは既定でjqueryライブラリを既にサイトにロードしていると言われています。 – jbwharris

答えて

0
$(document).ready(function() { 
    var el = $('#absolute'); // element we want to work with 
    el.clone().appendTo('body'); // clone and append to body 
    el.remove(); // remove element 
}); 

これはウィルソンページのコードのほとんど改善です。これまでにはlocalhostでしかテストされていませんでしたが、それはやりました。 IE6/7/8 + CSS3PIEを有効にしてテスト済み。

パブリックウェブサーバーに公開することを望んでいましたが、*.htcサポートを有効にしていないことが判明しました。PIE.php(PIEに付属のスクリプト)で使用すると機能しませんでした。

私はオフィスに戻ってシステム管理者を押してサーバで*.htcサポートを有効にするために、後でさらにテストを行います。

そして、私は完全にセバスチャンPatane Masueのスクリプトをテストし、それが仕事をしてくれました! +1 @Sebastian

P.S.完全に私は、CSS3PIEを有効にし、実際のスタイルにプロパティを追加することを意味します。

編集:ちょうどこれをもう一度試してみてください。結果はかなり迷惑です。これはlocalhost上で完璧に動作しますが、遠隔地で見たときにかなり盗まれています。何が原因かわからない...

+0

+1私は鉱山よりも優雅な答えを信じています –

+0

私のサイトでこのコードが動作することを確認できます。 CSS3PIEでうまく動作します。すごい仕事! – jbwharris

+0

ああ、実際は私を驚かせる。私のシステム管理者をもっと突き刺さなければならないように見えます。私のホストでもこれが完璧に動作するようにするためです。 ^^、 – jolt

1

私はJS/jQueryのは、このために必要とされると思う:私:これは許容修正、

W.

+0

それは旋風を与え、運がなかった。この機能は何をしていますか? – jbwharris

+0

+1、素晴らしい提案です。これはフローから抜け出す方法です。 –

1

グレート質問です

var el = $('#element'); 

$('body').append(el); 
el.remove(); 

希望:

のようなものを試してみてくださいjsなしでは不可能かもしれないと思う。

これはjQueryの回避策である:http://jsfiddle.net/SebastianPataneMasuelli/hSh25/

は比較的位置決め要素の左と上の値をとり、絶対一つからそれらを減算し、実質的に原点の絶対一つreturing。

ので、

<div id="relative"> 
relative 
    <div id="absolute"> 
    absolute; 
</div> 

与えられ、これは位置のdivのために左と上の値を追加する前に戻って0に取得する方法を計算します。

var relativeLeft = $('#relative').css('left'); 
var absoluteLeft = $('#absolute').css('left'); 
var returnToOriginLeft = (parseInt(absoluteLeft) - parseInt(relativeLeft)) + 'px'; 
var relativeTop = $('#relative').css('top'); 
var absoluteTop = $('#absolute').css('top'); 
var returnToOriginTop = (parseInt(absoluteTop) - parseInt(relativeTop)) + 'px'; 
$('#absolute').css('left', returnToOriginLeft); 
$('#absolute').css('top', returnToOriginTop); 

私はそれを使用する予定として、私はCSS3PIEのためにその場合は可能な解決策を知っているしなさい(私は、相対位置のdivの束があります想像)、あなたの実際のサイトでは、より具体的な取得する必要があります私はすぐにプロジェクトに参加しました。

注: JavaScriptは私の強みではありませんが、私は上記の文章を書くよりエレガントな方法があると考えています。

+0

ソリューションをありがとう、私は明日それを与える必要があります、それは私がそれが必要なことをするように見えます。 – jbwharris

+0

@jamEs:CSS3Pieで実行可能なソリューションがあれば、幸いです。 –

関連する問題