プロが教える店舗&オフィスのセキュリティ対策術

IEとFireFoxでの指定位置のズレに困っています。
cssでポップアップを施した部分についてなんですが、IEだと思った通りの位置に出てくるんですけど、FireFoxだと全然違った位置に出てきてしまいます。
ネットで色々調べて、知る限りの事を全てやってみましたが、結局一週間も無駄に過ごしています。だれか助けてください(ΩДΩ)

ちなみに以下がそのcssとhtmlです

■css■

.popup img.pop {
display:block;
top:-10000px;
left:-10000px;
position:absolute;
}

.popup a:hover {
position:relative;
}

.popup a:hover img.pop {
top: -290px;
left: -68px;

}

■html■

<DIV class="popup" align="center"><SPAN><a href=""><img class="pop" width="260" height="243" src="1.gif"/><IMG width="103" height="111" src="image1.jpg" border="0"></a></SPAN></DIV>


何をどう書き足したらFireFoxでもきちんとした場所に出てくるようになるんでしょうか?
どうぞよろしくお願いしますm(。-_-。)m

A 回答 (2件)

IEのスタイルシートの解釈には、いまだにバグがあります。

そこで、あんなおかしな挙動になる。(あなたではなく、IEの動作はウソという意味)

 そこで、少しオーソドックスな書き方をします。
 具体的にどこに表示したいかの補足がないので、親コンテナブロックの上から99%に指定してあります。top:-240pxとかでもよいですから、任意に変更すること。

・基本はabsoluteは、その親コンテナブロックがstatic以外だと、親コンテナブロックに対して、絶対配置される。
・動的な疑似クラスは、古いブラウザだとA要素にしか働かないので、a要素に適用する。

 が基本にります。

【参考資料】
5.11.2 リンクに関する疑似クラス ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
5.11.3 動的な疑似クラス ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
9.3.1 配置体系を選択する ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )

★その前に、HTML自体が正しくないとなりません。【最も重要な基本です】
  これができてないと、ややこしくなるし、どう逆立ちしても無理になる。

 今回は、(htmlに対するリンクなので)ナビゲーションリストで、画像で示していると解釈して次のようなマークアップがされているとします。(あなたのHTMLでは無理なのもありますし。)
 下記HTMLだと、スタイルシートを解釈しないユーザーエージェントはむろん、スタイルシートを正しく理解できないユーザーエージェントはスタイルシートを解除することで閲覧に支障がないでしょう。大きな画像が表示されると邪魔・・

・・・・・・・・・・下記はタブを全角スペースで置き換えてあります。・・・・・・・・・・
・・・・・・・・・・画像はいずれも./images/にあるものとします。・・・・・・・・・・
・・・・・・・・・・画像、リンク先ファイル名は変えてあります。・・・・・・・・・・

<ol class="imageList">
 <li>
  <a href="page1.html">
   <img width="103" height="111" src="../images/image1.jpg" alt="犬">
   <span style="height:243px;width:260px;background-image:url(../images/1.gif)"><span>犬の写真へ</span></span>
  </a>
 </li>
 <li>
  <a href="page2.html">
   <img width="103" height="111" src="../images/image2.jpg" alt="猫">
   <span style="height:243px;width:260px;background-image:url(../images/2.gif)"><span>猫の写真へ</span></span>
  </a>
 </li>
</ol>

注意) <span>犬の写真へ</span>,<span>猫の写真へ</span>の部分は、
<span><img src="透明な画像" height="10" width="10" alt="犬の写真">の方がよいかも・・・
 そうすると、スタイルシートの
ol.imageList a:hover span span,
ol.imageList a:focus span span,
ol.imageList a:active span span
{display:none;}
が不要になる。

★ポップアップ時の画像のサイズが異なるときは、位置を個別にHTML内で指定するとよい
 <span style="height:243px;width:260px;background-image:url(../images/2.gif)">
で指定する。
 <span style="height:243px;width:260px;background-image:url(../images/2.gif);top:-200px;">

☆Another HTML-lint gateway ( http://openlab.ring.gr.jp/k16/htmllint/htmllint. … )
☆W3C CSS 検証サービス ( http://jigsaw.w3.org/css-validator/#validate_by_ … )
で検証済み。

★ブラウザ(IE8,firefox,safari,googlechrome)は、同じ位置に表示される。
★Operaは、position:absoluteに対応していないためおかしな位置に表示されます。

________ここから全ソース(HTNK4.01strict/厳密型)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<link rev="made" href="mailto:hoge@hoge.com" title="send a mail" >
<link rel="START" href="../index.html">
<style type="text/css">
<!--
html,body{
margin:0px;padding:0px;background-color:rgb(200,200,200);
}
body>div{
width:60%;min-width:500px;
max-width:800px;margin-left:auto;margin-right:auto;
background-color:white;padding:10px;border:none;
}
/* ここから */
ol.imageList{
display:block;
margin-left:0px;
padding-left:0px;
}
ol.imageList li{
display:inline-block;
margin-left:0px;
margin-right: 10px;
padding:0px;
list-style: none;
border:solid 1px blue;
position: relative;
}
ol.imageList a img{border:none;}
ol.imageList a span{
display:none;
position:absolute;
z-index: 2;
border: 1px red solid;
text-decoration: none;
/* ホーバー時のpopup画像の位置指定 */
top:99%;
left:-10px;
}
ol.imageList a:focus span,
ol.imageList a:hover span{
display:block;
border: 1px red solid;
}
ol.imageList a:active span{
display:block;
border-color:green;
}
ol.imageList a:hover span span,
ol.imageList a:focus span span,
ol.imageList a:active span span
{display:none;}
-->
</style>

</head>
<body>
<div>
<h1>サンプル</h1>
<p>ブラウザの横幅を変更しても、太郎<span class="rub" style="left:-4em">(たろう</span>内容が左右真中に表示されています</p>
<p class="test">こんな感じです。幅60%、ウィンドウ幅を変えると、ウィンドウ幅によって最小500px、最大800px内で変化する。</p>
<ol class="imageList">
<li>
<a href="page1.html">
<img width="103" height="111" src="../images/image1.jpg" alt="犬">
<span style="height:243px;width:260px;background-image:url(../images/1.gif)"><span>犬の写真</span></span>
</a>
</li>
<li>
<a href="page2.html">
<img width="103" height="111" src="../images/image2.jpg" alt="猫">
<span style="height:243px;width:260px;background-image:url(../images/2.gif)"><span>猫の写真</span></span>
</a>
</li>
</ol>
</div>
</body>
</html>
「IEとFireFoxでの指定位置のズレに」の回答画像2
    • good
    • 0
この回答へのお礼

ぁぁあああああ、ありがとうございます!!!
なんかとっても詳しく書いてくれてる(ΩДΩ)

ここで質問したのは2回目なんですが、こんなに親切に教えてくれる人が居るとは思いませんでした!
お忙しい中時間をさいていただき深く感謝します!!!
はぁ~やっと地獄から解放されるんですねっ!!嬉しい♪
取り掛かりたい気マンマンですが、子供を風呂に入れなければ。
夜中に起きて頑張ってみます。
本当にありがとうございました!!

お礼日時:2010/03/24 20:16

Operaでは、:hoverに反応しない。

クリックしたら反応する。
Safari、firefox、GoogleChromeは同じ挙動
IEのみ、違う場所に出る。

 どの位置に出したいのでしょう。スタイルシートを読む限り、IEの挙動はウソだね。

この回答への補足

すいません、ウソをついて何になるんですカ?(T-T)

ええと、今ホームページビルダー11でウェブサイト作ってます。
そしてブラウザ確認はIEとFireFoxでのみやってるんですが、ビルダーで確認した位置とIEでの表示はピッタンコ合うんですが、FireFoxで見ると・・・どーーーーーっしてもIEよりも上(ずいぶんズレた上)に表示されるんですよ。

今も別件で背景画像をスタイルシートで水平方向に何%垂直方向に何%と指定したんですが、IEで確認すると狙い通りに位置してるんですけど、FireFoxだと画像の半分から上が画面外に飛び出す程上にズレてるんです。
FireFoxのブラウザ内で一体どこの位置が基準になってるのか不思議でしょうがありません。
お手上げです。

補足日時:2010/03/24 14:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!