
添付画像の×部分は、本当は画像です。画像が存在しないので×印になっているのですが、以下に記述する質問内容には、画像の有無は無関係です。
添付画像は、Vista-SP2,IE9の画面の一部分です。ISPの自分のエリアにアップしたページを見ています。
上の画像は「Pic1.jpg」、下の画像は「Pic3.jpg」です。
で、実は両画像の間に「Pic2.jpg」が隠れているのです。
HTMLファイルに記述したコードは後段のとおりです。
HTMLファイルの概要は次のとおりです。
(1)Pic1の上をマウスが通過した後、Pic2の上(Pic1とPic3の中間あたり)にマウスを置くとPic2が徐々に鮮明さを増しながら表示される(フェードイン)。
(2)Pic2からマウスを外すと消え(フェードアウト)、再度マウスを載せると表示される。
(3)但し、一旦Pic3の上にマウスを載せると、(1)を実行しない限りPic2は表示されない。
(いずれもクリックは不要です。マウスポインタを通過させるだけです)
そこで質問なんですが、上記シナリオは、Vista,IE9まではうまくいきました。
しかし、Windows7,IE11環境ではうまくいかないのです。Pic1にマウスを置いただけでPic2が表示されてしまうのです。しかも直ちに鮮明に。
Windows7,IE11環境でもうまくいくようにするには、どうすればよいのでしょうか。
(コード)
<html>
<head>
<SCRIPT language=JavaScript1.2>
<!--
function high(which2)
{theobject=which2
highlighting=setInterval("highlightit(theobject)",01)
}function low(which2)
{clearInterval(highlighting)
which2.filters.alpha.opacity=01
}function highlightit(cur2)
{if(cur2.filters.alpha.opacity<100)
cur2.filters.alpha.opacity+=01
else if(window.highlighting)
clearInterval(highlighting)
}
//-->
</SCRIPT>
</head>
<body>
<img onmouseover=cnt.style.visibility="visible" onmouseout=cnt.style.visibility="visible" src="pic1.jpg">
<div id=cnt style="visibility:hidden;">
<IMG onmouseover=high(this) style="FILTER: alpha(opacity=01)" onmouseout=low(this) SRC="pic2.jpg">
</div>
<div>
<img onmouseover=cnt.style.visibility="hidden" onmouseout=cnt.style.visibility="hidden" src="pic3.jpg">
</div>
</body>
</html>

No.1ベストアンサー
- 回答日時:
まずHTML間違ってます。
Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html )
などでチェックはされていますか??
<body>にはインライン要素は直接置けません。
そのため匿名ボックスが作られてしまいます。
[例] 例えばその部分がナビゲーションだとして
<div class="header">
<div class="nav">
<ol>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ol>
</div>
</div>
とマークアップされているとします。それぞれを配置した後、CSS3のtrabsformを使うのが楽でしょう。
[サンプル]
★HTML Lintで確認済みのHTML4.01strict + CSS2.1
★タブは_に置換してあるので戻す。
★詳しい説明はソース内に書いてある。
★携帯電話や印刷時、携帯電話には適用されない(確認)のでseo的にもOK
JAVASCRIPT無効の場合も適用される。
★スタイルシートを書き直すだけでどのようにもデザインは変更できます。
★画像は120px×60pxを想定しています。ソース参照
<!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 name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css" media="screen">
<!--
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6{margin:0;line-height:1.6em;}
p{text-indent:1em;}
div.header,div.section,div.footer{width:90%;min-width:630px;max-width:900px;margin:0 auto;padding:5px;}
/* ここから時間的変化のスタイルシート */
div.header div.nav ol{
list-style:none; /* リストじゃないよ */
}
div.header div.nav ol li{
width:120px;height:60px;/* サイズ */
position:relative;/* 以降の位置やサイズの基準 */
margin-top:5px;
text-align:center;/* 文字を隠すならこれは書かない */
line-height:60px;/* 縦中央に!文字を隠すなら書かなくて良い */
}
div.header div.nav ol li a{
display:block;/* 行内要素→ブロック要素 */
width:100%;height:100%;/* staticでない親要素、ここではli */
}
div.header div.nav ol li a[href="/Books"]{/* リンク先Booksのa要素 */
opacity:0;/* 透明だよ */
transition-property: opacity;/* 変化させるプロパティ */
transition-duration:1s; /* 変化に要する時間 */
transition-timing-function:ease-in-out;/* 変化の仕方ゆっくり始まりゆっくり終わる */
}
div.header div.nav ol li a[href="/Books"]:hover{
opacity:1;/* hover時のopacityの値 */
}
/* 背景画像など */
div.header div.nav ol li a[href="/"]{
background-image:url(Pic1.jpg)
}
div.header div.nav ol li a[href="/Books"]{
background-image:url(Pic2.jpg)
}
div.header div.nav ol li a[href="/Profile"]{
background-image:url(Pic3.jpg)
}
div.header div.nav ol li{
background-color:silver;/* 分かりやすいようにliに色を付けておく */
}
-->
_</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<div class="nav">
___<ol>
____<li><a href="/">トップ</a></li>
____<li><a href="/Books">書籍</a></li>
____<li><a href="/Profile">プロフィール</a></li>
___</ol>
__</div>
_</div>
_<div class="section">
__<h2>見出し</h2>
__<p>本文はsection</p>
_</div>
_<div class="footer">
__<h2>文書情報</h2>
__<dl class="documentHistry">
___<dt id="FIRST-PUBLISHED">First Published</dt>
___<dd>2013-03-03</dd>
__</dl>
_</div>
</body>
</html>
この回答への補足
<body>にはインライン要素は直接置けません。
↑
http://www.htmq.com/htmlkihon/005.shtml
には、インライン要素はbodyの中に書く、と逆のことを言っているように思えますが・・・(body以外にも書けるのかも知れませんが)。或いは、古い昔の記事なんでしょうかねぇ。
それはそれとして、私のコードの<body>の部分で、例えばどのコード部分が「直接置いてはいけないインライン要素」なのでしょうか。上記URLの記事からすると、『<img・・・をbodyに記述してはダメ』、ということでしょうか?。
それと、『bodyにインライン要素を直接置いた』のが原因で『私のコードではフェードイン・アウトしない』という理解でよいでしょうか。
早速のご回答ありがとうございます。
貴コードを参考にしてアレンジしながら試行錯誤を繰り返し、やっと希望するものが実現できました。
>などでチェックはされていますか??
↑
小組織内で閲覧するページで、私自身プロを目指しているわけでもないので、正規スタイルからは、ほど遠いスタイルになっていることと思います。
><body>にはインライン要素は直接置けません。
そのため匿名ボックスが作られてしまいます。
↑
初心者の私には、このような事柄に対する知識はありません。
ただ、質問で記述しましたfunction highやfunction lowとかいうスクリプトがIE11ではなぜ作用しないのかが不思議です。
No.2
- 回答日時:
>には、インライン要素はbodyの中に書く、と逆のことを言っているように思えますが・・・
いいえ、
「<body>~</body>の中で使用される要素の多くは、 ブロックレベル要素(Block-Level Elements)か、インライン要素(Inline Elements)に分類されます。」
「インライン要素(Inline Elements)
インライン要素は、主にブロックレベル要素の内容として用いられる要素で、・・・インライン要素には、以下のものがあります。 ・・・・img」
もっと直接的に分かるのは仕様書
<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 …
意味は
BODY要素は、
O O (%block;|SCRIPT)+ +(INS|DEL)
開始タグ、終了タグとも省略可能 0 0
ブロック要素または(|)script要素が一つ異常 + block要素しか置けない
INSとDELも置ける。
IEの解釈がどうか知りませんが、BODY直下にIMG要素があると、それはブロック要素の内部にあるべき物なので、匿名のボックスを作ってしまいます。HTML5では、そのような場合はどのようにDOMを組み上げるかは規定されていますが、それ以前のHTMLはブラウザの解釈に任されてきました。
単にそれだけ、ブラウザ間の誤差はそれだけではなく、実に様々な場面で作者の頭を悩ませることになります。そのために、標準モードを意識しておかないと困るのです。HTML5では標準モードしかない。というか<!doctype html>は、単にすべてのブラウザに標準モードだよと宣言する意味しかなくなる。
泣こうがわめこうが、いずれHTML5の時代になります。そのためにも、strict--で記述し、標準モードで動作するようHTMLを書くしかない・・・と機械的に覚えてください。私のサンプルHTMLをご覧になると分かるようにシンプルで分かりやすくメンテナンスも容易だと思います。組織で利用するものでしたら、将来は他人がメンテナンスしなければならなくなるかもしれません。HTMLは文書構造だけ、プレゼンテーションはスタイルシートに一任されると、楽になりますよ。
あなたのHTML/javascriptがうまく動作しない理由は調べていません。申し訳ないが、必要を感じなかったからです。
あなたの質問への直接の回答にならなくて申し訳ありませんでした。
早速のご回答ありがとうございます。
「直下」の意味を十分理解していなかったようです。
>そのためにも、strict--で記述し、標準モードで動作するようHTMLを書くしかない・・・と機械的に覚えてください。
↑
仰せの趣旨は重々承知しています。
が、10年以上前に習得した"自由奔放"なコーディングスタイルから抜け出す気力・能力がないもんで・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページの画面文字を濃く...
-
ホームページの内容変更を無料...
-
CSSと無料掲示板を組み込んだサ...
-
ホームページを作ろうと思いま...
-
教えて!goo でいただいた回答を...
-
ホームページビルダーで作った...
-
XREA使用で作成したHTMLファイ...
-
ホームページビルダーを複数の...
-
ホームページビルダー
-
GASについて
-
ウィンドウズ11にしたら背景画...
-
サイトの同じページに画像を複...
-
友達にドッキリをしたくて、ホ...
-
【ホームページ作製】HPのWebペ...
-
無料のホームページを作成でき...
-
古いウェブ作成ソフト使ってる...
-
マウスオーバーすると色が変わ...
-
hpの画像の公開
-
ホームページ作成に伴い、元デ...
-
会社のホームページをご自身で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FC2ホームページで大見出しのフ...
-
ホームページを作る時は、原稿...
-
ホームページの背景設定
-
jQuery Ajax通信をランダムで表示
-
FC2で画像とHPが表示されない!
-
Excelの列や行の幅を表示...
-
CSSのtransform: translate(-50...
-
エクセルでサイズに合ったもの...
-
ワードで「 」(カギかっこ)の...
-
htmlでテーブル内にテキストボ...
-
PDFへてのテキストボックスにて...
-
昼間 ずっとゴロゴロと横になっ...
-
HTMLでクロス抽出したい
-
excel初心者です。 セルの色変...
-
バーコードのサイズは拡大縮小...
-
aタグに直接style=""で:hoverを...
-
エクセルでサイズ指定でPOP...
-
エクセル 画面表示拡大率によ...
-
パソコンでランドルト環の作成...
-
table内で画像と文字をセンター...
おすすめ情報