フェードインと光源のフィルタを同時に使用したい

このQ&Aのポイント
  • フェードインと光源のフィルタを同時に使用したいという要望があります。
  • 現在、ページを開くと、画像がフェードインするようになっています。さらに、光源フィルタも追加したいとのことですが、うまくいっていないようです。
  • 具体的なソースコードの添付をお願いしています。
回答を見る
  • ベストアンサー

二つのフィルタを同時に使用したい

よろしくお願いいたします。 フェードインと光源のフィルタを同時に使用したいと希望しております。 現在、ページを開くと、画像がフェードインするようになっています。 n = 0; function fadein() { if (n > 100) return; n += 10; IMG1.filters['alpha'].opacity = n; setTimeout("fadein()",200); } ~ <BODY onload="fadein();"> (ちなみに実際には、この画像はページを開くたびに変わります。) document.write("~ id='IMG1' name='name1' style='filter:alpha(opacity=0);'>"); さらにこれに、例えば以下のような光源フィルタを追加したいと希望し試行錯誤しておりましたがどうしてもうまくいきません。 name1.filters.light.addAmbient(255, 255, 255, 50) name1.filters.light.addcone(1, 1, 1, 150,150,255,255,255,100,50) 恐れ入りますが何卒ご教授いただきたくお願いいたします。 申し訳ございませんが、具体的にどのように書けばよいかソースを添付いただけると大変ありがたいです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22259
noname#22259
回答No.1

結論としてはそのままでは「できない」。 同一のオブジェクトにスタイル設定で「filter:alpha(opacity=0);filter:light(enabled=0)」を 設定すると、どちらかのフィルタ効果スクリプトでオブジェクトが検出さないか「null」になるはず。 スクリプトを見る限りでは、ページのロード完了と同時に画像オブジェクトにに対して光源フィルタ を加えたままでopacity値をインクリメントさせようとしているように見えるが、上の理由でそれは不可。 擬似的な代替案としては、3つ考えられる。 opacityを先行させてインクリメントが「n==100」でfilter効果を記述している関数を呼び出す。 もしくは、 同一画像を2つ用意しスタイルをposition:absoluteにしてIDをそれぞれ「IMG1」「IMG2」とし、z-indexで 画像を差し替える。 document.all['IMG2'].zIndex = 0 document.all['IMG1'].zIndex = 1 もしくは、 visibility:hidden|visible;で上と同じことを実現する。

その他の回答 (1)

noname#22259
noname#22259
回答No.2

>>No.1 × document.all['IMG2'].zIndex = 0 document.all['IMG1'].zIndex = 1 ○ document.all['IMG2'].style.zIndex = 0 document.all['IMG1'].style.zIndex = 1

oomiyaji
質問者

お礼

大変ありがとうございました。とても助かりました。教えていただいた方法で試してみます。

関連するQ&A

  • 画像のフェードインについて

    最近javascriptでいろいろなことができることを知りました。 WEBを調べていたら、画像のフェードインのソースを見つけて、 そのソースの意味を調べていましたら、今まで見たことのない 表記が出てきました。再起処理の中に"+img+"とうのがありますが これはどういう意味なのかなと、理解できません。+imgとかimg+ と表記されていた場合は、前の画像に新しい画像を足していくの かなと想像してしまいますが、果たしてその解釈も正しいものやら 想像の範囲でしかありませんが・・・。javascriptに詳しい方、 +img+の意味を是非ご教授お願いいたします。javascriptは、 数日前に本を読み始めたばかりの初心者です。バカな質問と思わ れるかもしれませんが宜しくお願いいたします。 <!-- // 画像のフェードイン・フェードアウト spd = 50; // 変化させる間隔(ミリ秒単位) ntc = 2; // 何%ずつ変化させるか cnt = 0; // フェードイン function fdInImg(img) { document.images[img].filters['alpha'].opacity = cnt; cnt += ntc; if(cnt >= 100) return; setTimeout("fdInImg('"+img+"')",spd); } // フェードアウト function fdOutImg(img) { document.images[img].filters['alpha'].opacity = cnt; cnt -= ntc; if(cnt <= 0) return; setTimeout("fdOutImg('"+img+"')",spd); } //-->

  • Firefoxとクロームでフェードインにならない

    横並びの画像を3枚時間差でフェードイン(左から順に表示)させたいのですが、 IEでは問題無く動くのですがFirefoxとGoogle Chromeではフェードインにも透過にもならず画像がそのままパっとでてしまいます・・。 FirefoxとGoogle Chrome対策ソース、他に良い方法などございましたら ご教授いただけますでしょうか。宜しくお願いいたします! <script type="text/JavaScript"> // 画像のフェードイン・フェードアウト var myspd = 5; // 変化する速さ(ミリ秒単位) var myx = 10; // 何%ずつ変化させるか var mypic = new Array("px1","px2","px3"); // 画像のname(順番に並べる) var mycnt = 0; var myp = 0; function mygo() { document.images[mypic[myp]].filters['alpha'].opacity = mycnt; mycnt += myx; if(mycnt >= 100) { mycnt = 0; myp++; } if(mypic.length <= myp) return; setTimeout("mygo()",myspd); } </script> 【HTML】 <ul> <li><img src="image/mainpx_01.jpg" name="px1" width="365" height="484" style="display: inline; filter:alpha(opacity=2);" /></li> <li><img src="image/mainpx_02.jpg" name="px2" width="365" height="484" style="display: inline; filter:alpha(opacity=0);" /></li> <li><img src="image/mainpx_03.gif" name="px3" width="270" height="484" style="display: inline; filter:alpha(opacity=0);" /></li> </ul>

  • 画像の下のテキストにフェードアウト後入力したい

    フェードインした画像の下にテキストボックスがあり画像フェードアウト後にそのテキストに 入力したいのですができません。 フェードアウト後に優先順位などを変更するなどの回避策はありますか? 今の状態を簡素にしたもののソースを記載します。 ----- <HTML> <HEAD> <META HTTP-EQUIV="Content-Language"CONETNT="ja"> <META HTTP-EQUIV="Content-Type"CONTENT="text/html;CHARSET=shift_jis"> <TITLE><test>画像優先順位変更</TITLE> <!-- saved from url=(0014)about:internet --> <Script Language="JavaScript"> moveTo(30,30); resizeTo(1050,750); // 画像のフェードイン・フェードアウト spd = 50; // 変化させる間隔(ミリ秒単位) ntc = 5; // 何%ずつ変化させるか cnt = 0; // フェードイン function fdInImg(img) { document.images[img].filters['alpha'].opacity = cnt; cnt += ntc; if(cnt >= 100) return; setTimeout("fdInImg('"+img+"')",spd);} // フェードアウト function fdOutImg(img) { document.images[img].filters['alpha'].opacity = cnt; cnt -= ntc; if(cnt <= 0) return; setTimeout("fdOutImg('"+img+"')",spd); } </SCRIPT> </HEAD> <BODY onload="fdInImg('1gif')"> <IMG SRC="1.gif" name="1gif" border="0" style="top:30;left:100;filter:alpha(opacity=0);position:absolute"> <Input type="button" onclick="fdOutImg('1gif')" value="FdOut"> <table> <tr> <th class="solid" width="120">test</Font></th> <td><input type ="text"></td> </tr> <tr> <th class="solid" width="120">test</Font></th> <td><input type ="text"></td> </tr> </table> </BODY> </HTML> ------------------

  • javascriptでループをやめたい

    javascript初心者です。 下記の様にソースが書いてあります。 画像が表示され、順番に表示されるのはいいのですが、 最後の画像になった時に、最初の画像に戻り、永遠と画像がループし、 表示されてしまいます。最後の画像になった時に、表示を止め、 最後の画像のまま表示を止めたいのですが、わかりません。 ご教示お願いいたします。 <SCRIPT language="JavaScript"> <!-- FITime=1; FOTime=8; n=10; flg=1; num=0; cnt=7; Fna="./img"; Fexp="jpg"; // 以下スクリプト本体 function fade(img){ if(flg==1){ document.images[img].src=Fna+num%cnt+"."+Fexp; if(n<=0) flg=0; document.images[img].filters['alpha'].opacity=n; if(n>=99)speed=0.05;else speed=5; n-=speed; setTimeout("fade('"+img+"')",FOTime); } else{ document.images[img].src=Fna+(num+1)%cnt+"."+Fexp; document.images[img].filters['alpha'].opacity=n; if(n>=98)speed=0.05;else speed=2; n+=speed; if(n>=100) {flg=1;++num;if(num%cnt==0){num=0;}} setTimeout("fade('"+img+"')",FITime); } } //--> </SCRIPT> </head> <img src="img0.jpg" name="img" style="filter:alpha(opacity=100)">

  • G-Chromでの質問です

    いつもお世話になっております。 読み込み後、h1.gifが白→画像とだんだんフェードインするようなjavascriptを利用しています。 IE環境下では正常に稼動するのですが、Google Chromだと白画像を優先してフェードインが行なわれません。(白画像のまま) 以下のソースで動かしているのですが、chromeだとjavascriptが大きく制限されることはあるのでしょうか?(不勉強で、chromeだとimportant指定を最初の行にしないとダメ、とかの基本的なことしかわかりません) もしよろしければ、ご回答いただけますと幸いです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>背景画像を少しずつフェードインさせる</title> <script language="JavaScript"><!-- n = 100; function fadeInBG() { if (n < 0) return; n -= 2; myIMG.filters['alpha'].opacity = n; setTimeout("fadeInBG()",100); } // --></script> <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS" /> <link rel="stylesheet" type="text/css" href="./css/header.css" /> </head> <body scroll=no> <td><div align="right"><body background="./img/h1.gif" onLoad="fadeInBG()"></td> <img src="./img/white.gif" id="myIMG" width="120%" height="120%" style="position:absolute;top:0px;left:0px;z-index:1;filter:alpha(opacity=100);"> </body> </html>

  • 続き] divの背景画像を、徐々に表示させるには?

    トップページの2つのdivボックスの背景画像を、徐々に表示されるようにするjavascriptを作って頂いたのですが、リピートをやめる方法を御教えいただくのを忘れてしまいました! (http://oshiete1.goo.ne.jp/qa3921804.html) リピートをとめるには、下記ソースをどのようにすればよろしいでしょうか? ------------------------------------------------------------ fade.js ------------------------------------------------------------ var after = 10; // 秒数を指定 var tid1; var tid2; window.onload = function () { fdi2(); tid2=window.setInterval("fdi2()", after*1000); }; function fdi2() { var img1 = document.getElementById("limg"); img1.style.visibility = "visible"; fadeIn("limg", 0); var img2 = document.getElementById("rimg"); img2.style.visibility = "visible"; fadeIn("rimg", 0); } function fadeIn(imgId, opacity) { if (opacity <= 100) { setOpacity(document.getElementById(imgId), opacity); opacity += 10; tid1=window.setTimeout("fadeIn('" + imgId + "'," + opacity + ")", 80); } else { window.clearTimeout(tid1); } } function setOpacity(img, opacity) { img.style.filter = "alpha(opacity:" + opacity + ")"; img.style.KHTMLOpacity = opacity / 100; img.style.MozOpacity = opacity / 100; img.style.opacity = opacity / 100; }

  • javascriptでのフェードイン

    javascriptで画像表示をフェードインにしたいと思っております。 ネット上の情報から以下のソースを使用しております。 1html上に一つの画像を配置すると問題無く機能するのですが、 複数の画像を表示しようとすると一つ目の画像しか表示されません。 どこを変更すれば良いのか分からず困っております・・・ 修正方法、もしくはもっと簡単な方法がございましたら教えていただけないでしょうか。 ※以下のサンプルでは画像は二つですが、実際の使用時には制約上は無制限で画像を配置する予定です。 (Photologのサムネイル表示での使用を想定しております。) ///javascript file/// document.write("<style type='text/css'>#thephoto {visibility:hidden;}</style>"); window.onload = function() {initImage()} function initImage() { imageId = 'thephoto'; image = document.getElementById(imageId); setOpacity(image, 0); image.style.visibility = "visible"; fadeIn(imageId,0); } function fadeIn(objId,opacity) { if (document.getElementById) { obj = document.getElementById(objId); if (opacity <= 100) { setOpacity(obj, opacity); opacity += 25; window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100); } } } function setOpacity(obj, opacity) { opacity = (opacity == 100)?99.999:opacity; // IE/Win obj.style.filter = "alpha(opacity:"+opacity+")"; // Safari<1.2, Konqueror obj.style.KHTMLOpacity = opacity/100; // Older Mozilla and Firefox obj.style.MozOpacity = opacity/100; // Safari 1.2, newer Firefox and Mozilla, CSS3 obj.style.opacity = opacity/100; } window.onload = function() {initImage()} //////////////////////// ///html file/// <html> <head> <title></title> <script type="text/javascript" src="fade.js"></script> </head> <body> <img src="img_01.jpg" id="thephoto" /></div> <img src="img_02.jpg" id="thephoto" /></div> </body> </html> //////////////////////// どなかたご教授いただけますでしょうか。 何卒、宜しくお願い申し上げます。

  • Alphaフィルタについて

     こんにちは。質問させてください。 現在、alphaフィルタを使って、画像の背景を半透明にしたいと思っているのですが、どうしてもできません。 (確認はie6.0でも5.5でも行っています) ソースはタグ辞典を見ながら、下のようなものを組みました。 どこか間違っているでしょうか? お教え頂ければうれしいです。 よろしくお願い致します! <html> <head> <meta http-equiv="Content-STYLE-Type" content="text/css; charset=Shift_JIS"> <title>無題ドキュメント</title> <style type="text/css"> <!-- .alpha1{ filter:progid:DXImageTransform.Microsoft.alpha(style=2,opacity=100, finishopacity=40); } .alpha2{ filter:progid:DXImageTranceform.Microsoft.alpha(style=2,opacity=100, finishopacity=0); } --> </style> </head> <body bgcolor="#FFFFFF" text="#000000"> <img src="/jsg41044.jpg" width="700" height="466" class="alpha2"> </body> </html>

    • ベストアンサー
    • CSS
  • javascriptでのフェードイン

    javascriptを使用してhtml上の画像をフェードインにて表示したいと思っております。 ネット上の情報とこちらのサイトでのアドバイスを元に以下のソースを使用しておりますが WindowsのIE(6&7)で確認すると「エラー:オブジェクトがありません」と表示されてしまいます。 こちらで確認したところjavascript最後の行の「window.onload~」がエラーの原因となっているようなのですが、 修正する記述方法が分からず困っております。 解決策をご存じの方がおられましたらお手数ですが、 ご教授いただけないでしょうか。 何卒、宜しくお願い申し上げます。 ///javascript file(fade.js)/// document.write("<style type='text/css'>#thephoto1 {visibility:hidden;}</style>"); document.write("<style type='text/css'>#thephoto2 {visibility:hidden;}</style>"); document.write("<style type='text/css'>#thephoto3 {visibility:hidden;}</style>"); function initImage() { for(i=1;i<4;i++){ imageId = 'thephoto' + i; image = document.getElementById(imageId); setOpacity(image, 0); image.style.visibility = "visible"; fadeIn(imageId,0); } } function fadeIn(objId,opacity) { if (document.getElementById) { obj = document.getElementById(objId); if (opacity <= 100) { setOpacity(obj, opacity); opacity += 25; window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100); } } } function setOpacity(obj, opacity) { opacity = (opacity == 100)?99.999:opacity; // IE/Win obj.style.filter = "alpha(opacity:"+opacity+")"; // Safari<1.2, Konqueror obj.style.KHTMLOpacity = opacity/100; // Older Mozilla and Firefox obj.style.MozOpacity = opacity/100; // Safari 1.2, newer Firefox and Mozilla, CSS3 obj.style.opacity = opacity/100; } window.onload = function() { initImage() } //////////////////////// ///html file/// <html> <head> <script type="text/javascript" src="fade.js"></script> </head> <body> <img src="img_01.jpg" id="thephoto1" /> <img src="img_02.jpg" id="thephoto2" /> <img src="img_03.jpg" id="thephoto3" /> </body> </html> ////////////////////////

  • 5秒後にフェードイン

    以下の画像がフェードインするプログラムで、5秒後にフェードインを実行するように設定するにはどうしたらよいでしょうか? どなたかご教授ください。 <script language="JavaScript"> <!-- function fadein(id) { app = navigator.appName.charAt(0); ver = navigator.appVersion.charAt(0); if ((app == "M") && (ver >= 4)) { document.all.item(id).style.visibility = "hidden"; document.all.item(id).filters[0].apply(); document.all.item(id).style.visibility = "visible"; document.all.item(id).filters[0].play(); } } // --> </script> </head> <body bgcolor="white" text="red" link="blue" vlink="purple" alink="red" class="style" onload="fadein('img1');"> <p align="right"> <img src="non.jpg"    id="img1" style="filter:revealTrans(duration=3.0,Transition=12); visibility=hidden;"> </p> </body>