GIFファイルの上にマウスが乗ると、透過GIFを重ねるには?
[上に]
[前に]
[次に]
困ったちゃん・・・ (T_T)
[E-Mail]
1999/12/26(日) 23:45:48
普通のGIF画像の上にマウスを乗せると、透過GIFを普通のGIFの上に重ねるようにしたいのですが、可能でしょうか?
<script language="JavaScript">
<!--
if (document.image) {
img1 = new Image(); img1.src = "image/botans.gif";
}
function setImage(img, image) {
if (img) {
img.src = image;
}
}
// -->
</script>
<a href="top.htm"
onmouseover="setImage(document.img1, 'image/botans.gif')"><img
src="image/botan4.gif" border="0" width="100"
height="100" name="img1"></a>
普通の画像はbotan4.gifで、botans.gifは透過させてます。
しかし、どーしてもbotan.gifはまったく透過することなく、きれいに元の画像に上書されます(botan4.gifは消えてしまします)。
もともと無理な話なのでしょうか?
どーか、どーか、よろしくお願い致します (T_T)。
きたむら
1999/12/27(月) 04:14:24
「document.イメージ.src='画像ファイル名'」は、元の画像を消して新しい画像に差し替えるというものなので、この方法だとどうしても元のbotan4.gifは消えてしまいます。
たぶんレイヤーを使って画像を重ねればオーケーだと思いますが、それだとIEとNCの両者に対応させるのが少し面倒っぽいです。
そこで、最初から「botan4.gifにbotans.gifを重ねた絵」を用意しといて、マウスオーバーでそれを表示するという案を思い付きました。ローテクすぎますか?
困ったちゃん (T_T)
1999/12/27(月) 04:27:03
きたむらさん、ありがとーございます!
そうだったのですか・・・。元の画像は消えてしまうのですね・・・。
どーりでいくら透過しても、意味がないわけですね・・・ (T_T)。
最初から絵を用意しておく件ですが、8枚のGIFがあるのでサイズがその倍になってしまうので・・・ (T_T)。
透過してある、botans.gifが使えるとこれ1枚で出来てしまうことなんです。
レイヤーを使えばいいんでしょうか?
どーか、どーかよろしくお願い致します (T_T)。
みんこ
1999/12/27(月) 10:48:04
下敷き画像をテーブルの背景にして、元は何にもない完全透明GIFを
載せて置いて、重ねたい画像とさしかえる、とか。
やったことないからどうか知りませんけど
可能ならレイヤーよりはるかに楽です。NN&IE4以上限定ですが。
困ったちゃん (T_T)
1999/12/27(月) 15:40:28
みんこさん、ありがとーございます!
なるほどっ。と思い、っさっそくやってみたのですが・・・(T_T)。
テーブルの背景にbotan4.gifを設定すると、セルの中に複数の画像が、しかも変な位置に表示されてしまします。
セルの背景をbotan4.gifにして、これをセルの中心に1つだけ表示するにはどーしたらよいのでしょーか?
そんなことって、出来るのでしょうか?
透過GIFを重ねるのは、大丈夫でした。
どーか、どーかよろしくお願い致します (T_T)。
Tak
1999/12/27(月) 17:07:52
そんなに詳しい人間ではないんですが、
TDのbackgroundに設定して,widthとheightを背景画像のサイズにしてもだめですか?
<table border="0">
<tr>
<td background="image/botan4.gif" width="100" height="100">
<a href="top.htm" onmouseover="setImage(document.img1, 'image/botans.gif')">
<img src="image/botan4.gif" border="0" width="100" height="100" name="img1">
</a>
</td>
<td background="image/botans.gif" width="100" height="100">
<a href="top.htm" onmouseover="setImage(document.img1, 'image/botans.gif')">
<img src="image/botan5.gif" border="0" width="100" height="100" name="img1">
</a>
</td>
</tr>
</table>
みたいな・・・・
ひょっとしたら,ぜんぜんちがうこと言ってます?ぼく。
Tak
1999/12/27(月) 17:30:59
↑のこと。
間違えました!
もし画像を二つ横に並べるんだったら・・・のつもりで書いたんですけど,
imgタグで指定する画像は完全透過GIFだから二つとも同じファイル名が
入るはずですね。
それでtdのbackgroundにそれぞれのGIFをfuctionの引数に透過GIF
を設定。ってことで・・
あくまで「二つ並べるとき」のはなしですけど・・・
のぐ
1999/12/27(月) 19:28:24
IE4以上では、わりと簡単ですが、
<html>
<head>
<script type="text/javascript">
<!--
function on_mouseover() {
document.all['img1'].style.posTop = document.all['img2'].offsetTop;
document.all['img1'].style.posLeft = document.all['img2'].offsetLeft;
document.all['img1'].style.display = 'inline';
}
function on_mouseout() {
document.all['img1'].style.display='none'
}
// -->
</script>
</head>
<body>
<img id="img1" src="image1.gif" width="20" height="20" style="position:absolute;display:none;">
<img id="img2" src="image2.gif" width="20" height="20" onmouseover="on_mouseover()" onmouseout="on_mouseout()">
</body>
</html>
NCではどうでしょう。割と難しい?どなたかお知恵を・・・。
通りすがり1号
1999/12/27(月) 23:02:07
NN4,IE4両対応でいちばん簡単なのは、
画像を<A>で囲ってonmouseoverを拾ってやること。
拾ったあとの作業はのぐさんと同じ処理になります。
<A>のリンク枠が消えない場合は、<DIV>でonmouseoverを拾う。
拾い方については以下のページのソースが参考になると思います。
http://www.fureai.or.jp/~tato/DHTML/simple/part2/m/m01/m01.htm
困ったちゃん (T_T)
1999/12/28(火) 01:39:59
みなさん、本当に有難うございます!
のぐさんの方法で、出来ました!
でもNNでは出来ません・・・ (T_T)
JavaScript error:Type'javascript:'into Locatin for details
↑と出ます。
通りすがり1号さんの、おっしゃっていることとは
<a href="top.htm" onmouseover="on_mouseover()"
onmouseout="on_mouseout()">
<img id="img1" src="image/botans.gif" border="0" width="100" height="100" style="position:absolute;display:none;">
<img id="img2" src="image/botan4.gif" border="0" width="100" height="100">
</a>
↑こうするということでしょうか?(これでもNNではダメでした)
あと、リンクのソースを拝見したのですが、よく分かりませんでした (T_T)
何分初心者でして・・・申し訳ありません。
IEでは出来たので、感謝!感謝!
NNで可能にするには、のぐさんのをどう変えればいいのでしょうか?
どーか、よろしくお願いします〜 (T_T)
saka
1999/12/28(火) 03:34:56
こんなのでは?
<HTML>
<HEAD>
<script language="JavaScript">
<!--
if (document.image) {
img1 = new Image(); img1.src = "image/botans.gif";
}
function setImage(img, image) {
if (img) {
img.src = image;
}
}
// -->
</script>
<TITLE>- test</TITLE>
</HEAD>
<BODY>
<div style="background-image:url(image/botan4.gif);background-repeat:no-repeat;">
<a href="top.htm"
onmouseout ="setImage(document.img1, 'image/botan4.gif')"
onmouseover="setImage(document.img1, 'image/botans.gif')"><img
src="image/botan4.gif" border="0" width="100" height="100"
name="img1"></a>
</div>
</BODY>
</HTML>
A要素の中にstyleを記入するとNNでは動かなく成るようなのでこんな様です。
テーブル中に使うとNNでは、変な表示になる可能性が有ります。(試していませんです。)
困ったちゃん (T_T)
1999/12/28(火) 09:20:26
sakaさん、ありがとうございます!
実は、テーブル使ってます・・・ (T_T)。
そこで、こうしてみたのですが↓
<td width="150" bgcolor="#FFFFFF"><p align="center"
style="background-image:url(image/botan4.gif);background-repeat:no-repeat;"><a
href="top.htm"
onmouseout="setImage(document.img1, 'image/botan4.gif')"
onmouseover="setImage(document.img1, 'image/botans.gif')"><img
src="image/botan4.gif" border="0" width="100"
height="100" name="img1"></a></p>
</td>
botan4.gifがセルのレフトに配置されてしまい、botans.gif(センターに表示される)と表示がずれてしまいまうんです・・・ (T_T)。
botan4.gifもセンターに表示
させるには、どーすればいーのでしょーか?
あと、なぜかNNでは正常に表示されています(きれいに重なります)。
どーか、どーかよろしくお願いします・・・(T_T) (T_T)・・・
のぐ
1999/12/28(火) 11:26:45
P の背景位置を決めてあげる。
<p align="center" style="background-image:url(image/botan4.gif);
background-repeat:no-repeat;
background-position:center center;">
saka
1999/12/28(火) 11:33:42
背景画像と表示画像を中央に持ってくるには..
<p style="background-image:url(image/botan4.gif);
background-repeat:no-repeat;
background-position:center;
text-align:center">
で良いです。
きたむら
1999/12/28(火) 13:29:48
なるほどー。テーブルやスタイルシートで、ある範囲に限って背景画像とすればいいんですね。
#じつは前の書き込みのあと、NN4.04でレイヤーを使って実現しようとして挫折しました。
ただNN4だと、例によってスタイルシートがへっぽこなせいで、背景付きのPやDIVは周囲に妙なすきまが空きます。
テーブルを入れ子にする方法で背景画像をつけてもらえると、NN4ユーザーとしてはうれしいです。
↓(NN4とIE5で確認)
<td width="150" bgcolor="#FFFFFF" align="center">
<table border=0 cellspacing=0 cellpadding=0 width=100 height=100>
<tr><td background="image/botan4.gif"><a href="top.htm"
onmouseout="setImage(document.img1, 'image/botan4.gif')"
onmouseover="setImage(document.img1, 'image/botans.gif')"><img
src="image/botan4.gif" border="0" width="100"
height="100" name="img1"></a></td></tr>
</table></td>
通りすがり1号
1999/12/28(火) 18:44:31
前回言ったことを全部書くとこんな感じになります。
前回紹介したページのソースからほとんど変わっていません。
ですから著作権は前に紹介したページの作者にあると思います。
なお、切り替える画像はback.gifとfront.gifになります。
<html>
<head>
<title>mouseovertest</title>
<script language="JavaScript">
//--オブジェクトを返します
function getLAYOJ(layName){
if(document.layers)return document.layers[layName];
if(document.all) return document.all(layName);
}
//--レイヤ−を表示する
function showLAYER(oj){
if(document.layers)oj.visibility='show';
if(document.all)oj.style.visibility='visible';
}
//--レイヤ−を非表示にする
function hideLAYER(oj){
if(document.layers)oj.visibility='hide';
if(document.all)oj.style.visibility='hidden';
}
//--layNameで指定したオブジェクトにEventが発生したかを調べます
function eventtStart(layName){
getLAYOJ(layName).onmouseover=mouseoverFunc;
getLAYOJ(layName).onmouseout =mouseoutFunc;
if(document.layers) getLAYOJ(layName).captureEvents(Event.MOUSEOVER|Event.MOUSEOUT);
}
function mouseoverFunc(e){
//--マウスが触った時の処理をここに書く
showLAYER(getLAYOJ('front'));
}
function mouseoutFunc(e){
//--マウスが離れた時の処理をここに書く
hideLAYER(getLAYOJ('front'));
}
</script>
<style type="text/css">
.test {
position: absolute;
left: 200px;
top: 110px;
width: 100;
height: 100;
}
#back {
/*background-color: #ff8888;*/
}
#front {
/*background-color: #8888ff;*/
visibility: hidden;
}
</style>
</head>
<body onLoad="eventtStart('back')">
mouseoverのテスト
<div class="test" id="back"><img src="back.gif"></div>
<div class="test" id="front"><img src="front.gif"></div>
</body>
</html>
>ただNN4だと、例によってスタイルシートがへっぽこなせいで、
>背景付きのPやDIVは周囲に妙なすきまが空きます。
PやDIVはブロック要素ですが、NNの場合は上下に自動的に改行を含めます。
これは間違っているのではなく、解釈の違いによるものです。
CSS2では改行の有無を明示できるようになるらしいです。
また、レイヤーの空白サイズについての考察が以下のページに載っています。
http://www.din.or.jp/~hagi3/JavaScript/JSTips/NGW/Affairs2.htm
たこ
1999/12/28(火) 20:28:51
>PやDIVはブロック要素ですが、NNの場合は上下に自動的に改行を含め>ます。
>これは間違っているのではなく、解釈の違いによるものです。
何をどう解釈してんだ?
>http://www.din.or.jp/~hagi3/JavaScript/JSTips/NGW/Affairs2.htm
考察?ぎゃはは。
通りすがり1号
1999/12/28(火) 21:44:14
<H1>〜<H6>要素の自動改行と混同していたようです。
すみませんでした。
>PやDIVはブロック要素ですが、NNの場合は上下に自動的に改行を含めます。
>これは間違っているのではなく、解釈の違いによるものです。
>CSS2では改行の有無を明示できるようになるらしいです。
困ったちゃん (T_T)
1999/12/29(水) 00:14:42
[[解決]]
多くのご返答、ありがとうございました!
sakaさんので、うまく行きました!
NNでも、IEでもきれいに透過GIFが重なってます!(^o^)
私も早くみなさんのように、質問に返答出来るようになりたいです。
またなにかあったら、どーかよろしくお願い致します。(^o^)!
ありがとうございました <(_ _)>
[上に]
[前に]
[次に]