ランダム表示に加えwidthをブラウザに合わしたい

このQ&Aのポイント
  • ホームページを作成しています。5枚の画像からランダムで背景に表示する処理に加えて、選ばれた画像のwidthをブラウザに合わせて拡大・縮小したいです。以下ソースのランダム表示の処理に加えて、ブラウザに合わせて画像を拡大・縮小して表示する方法を教えて下さい。
  • ホームページで背景画像をランダムに表示する際に、選ばれた画像のwidthをブラウザに合わせて調整したいです。ソースコードでランダム表示の処理を実装しているので、ここにwidth調整の処理を追加したいです。具体的には、選ばれた画像をブラウザの幅に合わせて拡大・縮小したいです。
  • ホームページの背景にランダムに画像を表示する処理に加えて、選ばれた画像のwidthをブラウザの幅に合わせて調整する方法を教えてください。現在はソースコードでランダム表示の処理を行っていますが、ここにwidth調整の処理を加えたいです。選ばれた画像をブラウザの幅に応じて拡大・縮小する方法を教えてください。
回答を見る
  • ベストアンサー

ランダム表示に加えwidthをブラウザに合わしたい

ホームページを作成しています。 5枚の画像からランダムで背景に表示する処理に加えて、選ばれた画像のwidthをブラウザに合わせて拡大・縮小したいです。 以下ソースのランダム表示の処理に加えて、ブラウザに合わせて画像を拡大・縮小して表示する方法を教えて下さい。 よろしくお願いします。 <SCRIPT language="JavaScript"> bgc = new Array(); bgc[0] = "url(../image/ti1.jpg)"; bgc[1] = "url(../image/bg2.jpg)"; bgc[2] = "url(../image/bg3.jpg)"; bgc[3] = "url(../image/bg4.jpg)"; bgc[4] = "url(../image/bg5.jpg)"; n = Math.floor(Math.random()*bgc.length); document.body.style.backgroundImage = bgc[n]; </SCRIPT>

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

  • ベストアンサー
回答No.3

既に回答を頂いているのですが bodyのリサイズいれないと画面のサイズ変更した時に・・・ ↓みたいな感じかな <head> <script type="text/javascript"> function onReady(){ resizeBody(); //別にこれはcssで書いてもいい document.body.style.backgroundSize = "cover"; //BG-IMGを指定するコードを此処に書く } function resizeBody(){ document.body.style.width = window.innerWidth - 50 + "px"; document.body.style.height = window.innerHeight - 50 + "px"; } </script> </head> <body onload="onReady()" onresize="resizeBody()"> </body>

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

ANo1です。 >html(css)側でどのように、document.body.style.backgroundImage >を操作するのでしょうか 別に操作する必要はないと思いますので、最初からCSSで指定しておけばよろしいかと思います。 例えば   body { background-size: cover; }

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

CSS3なら、background-sizeで指定すればよさそう。  http://www.w3.org/TR/css3-background/#the-background-size

yuki_tigers
質問者

補足

ありがとうございます。 javascriptで設定している背景をどのようにしてhtml(css)側に渡して、background-sizeで指定するのでしょうか? javascript内の document.body.style.backgroundImage = bgc[n]; で表示処理は全て完了してしまっています。 html(css)側でどのように、document.body.style.backgroundImage を操作するのでしょうか?そこが知りたいです。 他の方でも分かる方がいらっしゃいましたら、よろしくお願いします。

関連するQ&A

  • 背景画像のランダム表示

    お世話になります。 PHP勉強中です。 1.背景画像のランダム表示:bodyタグ内でなくdiv内の背景画像を変更したい。bottom right指定等施したいのでスタイルシートで書き出す?? 2.確率を設定したい:1枚の基本画像が60%表示され、それ以外の複数の画像が40%で選択、その中で画像をランダムに設定したい。 3.使用する画像は同一フォルダ内にある、背景画像以外はいれない。今後枚数を増やしていく予定なので、ファイル名を1つずつ指定するのではなく、フォルダ内の画像を読んで、配列に・・・ と、やりたいことはあるのですが、どうやったらいいのやら・・・頭が混乱してます(汗) 私のサイトに訪問される方でjsをOFFにされている方が多少いらっしゃるので、どうせならPHPで!と意気込んでみたのですが・・・ もしよろしかったらご教授下さいませ。 よろしくお願い致します。 参考:現在設置のjsファイル <script> wall = new Array(); wall[0] = "./image/bg01.jpg"; wall[1] = "./image/bg02.jpg"; wall[2] = "./image/bg03.jpg"; wall[3] = "./image/bg04.jpg"; wall[4] = "./image/bg05.jpg"; wall[5] = "./image/bg06.jpg"; wall[6] = "./image/bg07.jpg"; wall[7] = "./image/bg08.jpg"; rnd = Math.round(Math.random() * (wall.length - 1)); document.write('<style type="text/css">div.mainTOP { background:url(' , wall[rnd] , ') no-repeat bottom right #FAFAFA; }</style>'); </script>

    • ベストアンサー
    • PHP
  • html/css について質問です。

    現在、htmlとcssを勉強しながら、トップページのコーディングしています。 以下の処理を行っています。 〇一番上に[幅136px高さ34px]のヘッダ画像を横方向にリピートして、background-attachmentはscrollで固定。上や左や右は余白なしにしたい。 〇一番下に[幅168px高さ42px]のフッダ画像を横方向にリピートして、background-attachmentはfixedでブラウザの下部分に常についてくるようにしたい。 〇javaScriptでランダムにトップの画像を表示している。 しかし、3点問題があります。 ●一番上の画像について、background-position: left bottom;にしても、ブラウザ等で確認してみると、 上や左に5px程度の余白(後ろの背景画像が隙間から見えている)ができてしまいます。 marginやpaddingを追加して0にしても、余白は埋まりません。余白を埋めてブラウザの上や左を埋めるにはどうすればよいでしょうか? ●フッダの画像が、下にいけば消えてしまいます。CSSでheight: 42px;という設定をしているのですが、 この範囲がブラウザを大きくすると消えて見えなくなります。 だからといって、heightを設定しないと全くフッダ画像が表示されなくなります。消えずに常に表示されるようにするにはどうすればよいでしょうか? ●またjavascriptで背景画像を表示させているにも関わらず、フッダ画像やヘッダ画像を背景画像のような記述でコーディングしてしまっています。これは普通の画像を右方向へリピートさせる方法がわからなかったため、background-repeat: repeat-x;というコードを書いてしまっています。このようなコーディングはやはり適当ではないでしょうか? どなたかご指導お願いします。 [html] <body> <SCRIPT language="JavaScript"> bgc = new Array(); bgc[0] = "url(../image/bg1.jpg)"; bgc[1] = "url(../image/bg2.jpg)"; bgc[2] = "url(../image/bg3.jpg)"; bgc[3] = "url(../image/bg4.jpg)"; bgc[4] = "url(../image/bg5.jpg)"; n = Math.floor(Math.random()*bgc.length); document.body.style.backgroundImage = bgc[n] </SCRIPT> <div id="container"> <div id="top_header"></div> <div id="top_footer"></div> </div> </body> [css] #container{ width:100%; height:100%; } #top_header{ background-image: url(../image/top_header.gif); height: 34px; background-position: left top; background-repeat: repeat-x; background-attachment: scroll; z-index: 1; } #top_footer{ background-image: url(../image/top_footer.gif); height: 42px; bottom: 0; background-position: left bottom; background-repeat: repeat-x; background-attachment:fixed; z-index: 2; }

    • ベストアンサー
    • CSS
  • 画像をフォルダから自動読み込み。

    画像をフォルダから自動で読み込み、ランダムに背景に読み込ませたいのです。 ランダムに背景に表示させる方法は以下のスクリプトで達成済みです。 <script type="text/javascript"> var imglst= new Array( "haikei/bg001.jpg", "haikei/bg002.jpg", "haikei/bg003.jpg" ); function randombg(){ var imgnum=Math.floor(Math.random()*imglst.length); document.body.style.backgroundImage="url("+imglst[imgnum]+")"; } </script> <body onload="randombg();"> 上のスクリプトのnew Array()でいちいち画像のフォルダ名/画像名.jpgとかを記述するのではなく、自動でhaikeiという名前のフォルダからやりたいのです。画像数は100枚以上あるのでいちいち書くとファイルサイズも肥大化するので。

  • CSSで背景をランダム表示させたい

    CSS初心者です。 3分割のフレームのサイトで、mainページの背景をCSSで指定しているのですが それをランダムに5種類の画像を表示出来るようにしたいのですが 何度やってもやり方が分からず教えてもらえませんでしょうか・・・ PHPは対応していないサーバーなので無理でした。 http://okwave.jp/qa/q4805263.htmlこちらも試してみましたが出来ませんでした・・・ どうかご教授願います。 style.CSSから抜粋↓ /* デザイン全般設定 */ .ta1{border-bottom:1px solid #cccccc;background-color:#eeeeee;} .ta2{background:url(bg02.gif) repeat-y 260px 0px;} .ta3{background:url(bg01.jpg) repeat-y 95% 0%;} #enter_page{overflow:hidden;} #main_page{background:url(img/hptop1109.jpg) no-repeat 100% 50% fixed;}←ここでmainページの背景を指定しています。 #menu_page{border-bottom:1px solid #cccccc;background-color:#eeeeee;} #left_page{background:url(bg02.gif) repeat-y 260px 0px fixed;} .back{font-size:17px;text-align:right;background:url(back.gif) no-repeat 160px 90%;margin:20px 0px 0px 0px;padding:15px 20px 5px 0px;} .back a:hover{text-decoration:underline;} #main_page{background:url(img/hptop1109.jpg) no-repeat 100% 50% fixed;} </style> <script type="text/javascript"> window.onload = function(){ //var url = "a.jpg,b.jpg,c.jpg".split(','); var url=[]; url[0] = 'top_bg01.jpg'; url[1] = 'top_bg02.jpg'; url[2] = 'top_bg03.jpg'; var n = Math.floor(Math.random() * url.length); var elm = document.getElementById('main'); elm.style.backgroundImage = 'url(/image/' + url[n] + ')'; } </script> ↑このように、#main_page{background~~の後ろに、参考サイトのをコピペしても何も表示されず背景は白のままになってしまいました。 色々頑張ってみたのですが分からないので、どなたか教えてくれませんか・・・ 他に必要なソースがあれば追記いたします。 どうぞよろしくお願いいたします。

  • javaScriptでリンク画像のランダム更新表示

    画像をランダム表示する方法はわかったのですが、 各画像にリンク設定したいのと、 各画像の大きさをCSSのwidthやhighのように調整する方法をご教授ください。 <html> <body> <script type="text/javascript"> <!-- var imgURL = ["./images/1.jpg", "./images/2.jpg", "./images/3.jpg"]; var n = Math.floor(Math.random() * imgURL.length); document.write('<img src="'+imgURL[n]+'">'); // --></script> </body> </html>

  • ランダム表示とリンクの貼り付け

    数百の画像を、ランダムにダブらないで表示させるのはできたのですが (画像名は整理しやすい0000.jpg~0100.jpgとしました) <script type="text/javascript"><!-- x=Math.floor(Math.random()*100); x=new String(x); if (x.length==1){ x="000"+x;} else if (x.length==2){ x="00"+x;} else if (x.length==3){ x="0"+x;} RndImg= new Image(); RndImg.src="images/image"+x+".jpg"; NoMem[n]=x;} //↑これって同じ画像が重複しないように。の意味でいいんですか? function ImgDisp(){ document.images["imgs0"].src=RndImg.src; } window.onload=ImgDisp; //--></script> <body> <img src="*" name="imgs0"> </body> 一つ一つの画像にそれぞれリンクを貼りたいと思います。 どこに何を入れたらいいでしょうか? それと ランダムにする画像を3つくらい並べたいのですが <img src="*" name="imgs0"> だと1つしかランダムにならずに、 あとの2つは画像が表示されません。 何を変えたらいいでしょうか? よろしくお願いします。

  • 画像をランダムに

    JavaScript初心者です。回答していただければさいわいです。 初心者といってもタグサイトからコピペしていじくるだけの者ですが。 画像をランダムに表示したいと思いJavaScriptを使用したのですが うまく表示させることができません。 画像自体表示していないことになってしまいます。 画像を表示させたい部分に <SCRIPT language="JavaScript"> <!-- // img = new Array(); img[0] = "t/1.jpg"; img[1] = "t/2.jpg"; img[2] = "t/3.jpg"; img[3] = "t/4.jpg"; img[4] = "t/5.jpg"; n = Math.floor(Math.random()*img.length); document.write("<img src='"+img[n]+"' border='0'>"); //--> </SCRIPT> とタグをうっているのですが、なにか足りないところがあるのでしょうか?

  • スライド写真で2、3枚目をランダムで表示させるには

    bgSwitcherを使用してフェードインアウトするスライドショーを作りました。 [A固定]→[Bランダム]→[Bランダム]→[C固定] 1枚目、4枚目は指定画像に差替え表示できていますが、 2枚目、3枚目が同じ画像を表示してしまい、繰り返し再生しても再度ランダムに選んでくれず、初めに読み込んだ画像のままでした。 【実現したいこと】 ●imgBをランダム読み込みし、2枚目、3枚目で同じ画像が選ばれないようにしたい ●2巡目以降も、再生のたびにランダム処理を実施する どなたか、上記のものが実現できるように出来ないものでしょうか。 どうぞよろしくお願いいたします。 <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> <script src="js/jquery.js" type="text/javascript"></script> <script src="js/jquery.bgSwitcher.js" type="text/javascript"></script> <script language="javascript"> <!-- // JavaScript Document var imgA = ["images-top/A.jpg"], imgC = ["images-top/C.jpg"]; imgB = new Array(); imgB[0] = "images-top/B1.jpg"; imgB[1] = "images-top/B2.jpg"; imgB[2] = "images-top/B3.jpg"; imgB[3] = "images-top/B4.jpg"; imgB[4] = "images-top/B5.jpg"; n = Math.floor(Math.random()*imgB.length); jQuery(function($) { $('#bgSwitch-fadeOut').bgSwitcher({ images: [imgA, imgB[n], imgB[n], imgC], interval: 1000, fadeSpeed: 1000, }, true); }) --> </script> <style type="text/css"> .bg { width: 160px; height: 160px; padding: 20px; line-height: 1.6; } </style> </head> <body> <div> <div id="bgSwitch-fadeOut" class="bg"> <p>テキスト</p> </div> </div> </body> </html>

  • 画像のランダム表示

    初心者です。。 画像のランダム表示で、下のものを使っているのですが、 画像の上にカーソルをもっていったときに手のマークにしたいのですが、 どのようにすればできるのでしょうか? onclickを使っているからだと思うのですが、 A href=を使えばできるのでしょうか? よろしくお願いします。 <script type="text/javascript"> <!-- var imgs = new Array; var n = 5; var i; for(i=0;i<n;i++){ imgs[i] = new Image(); } imgs[0].src="image/001.jpg"; imgs[1].src="image/002.jpg"; imgs[2].src="image/003.jpg"; imgs[3].src="image/004.jpg"; imgs[4].src="image/005.jpg"; function disp(img){ img.src=imgs[Math.round(Math.random()*(n-1))].src; } //--> </script> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> </head> <body> <div align="center"> <img src="image/001.jpg" border="0" onclick="disp(this)"> </div> </body> </html>

  • CSSで背景画像をランダムに表示させたいのですが

    CSSで背景画像をランダムに表示させたいのですが、簡単な対応方法などありますでしょうか? 背景のランダム表示としてbody部分をjavascriptで背景のランダム処理はたくさんあるのですが、今回はスタイルシートでbodyではなく、サイト内のいち部分のクラス要素の背景をランダムに表示させたいと思っています。 <div class="main"> ここにコンテンツがあって、このmainのクラス要素の背景をランダムに変えたいです。 </div> スタイルシートの方では現在は .main { float:left; background-image:url(/image/top_bg01.jpg); background-repeat:no-repeat; min-width:736px; height:auto; border-right:1px solid #000000; } としており、このtop_bg01.jpgの部分の画像を top_bg01.jpg top_bg02.jpg top_bg03.jpg top_bg04.jpg top_bg05.jpg とランダムに表示させたいのですが、対応方法が分からずに困っています。 http://www.designwalker.com/2006/12/random-css.html はためしてみましたが、PHPがうまく対応できずに断念してしまいました。 どなた様か宜しくお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう