前提・実現したいこと
PCで表示できるHPを作成しました。
3個の画像を同じ場所に表示を2秒おきに切り替える仕組みを作りました。
また、別の場所にサムネイルアイコンをクリックすると画像が表示される仕組みを作るなどしています。(ギャラリーと呼びます)
他にも静止画の画像を張り付けてある状態です。
このページをレスポンシブデザインにさせたいのですが、画像の大きさがスマホの横幅にあわせて変化してくれません。大きくも小さくも変化せずです。
発生している問題・エラーメッセージ
エラーメッセージは特に表示されていません。
HPページ右クリック→検証で確認しましたが特にエラーは発生していません。
該当のソースコード
HTML
1</style> 2 3 4 <head> 5 <title>レシピ</title> 6 <meta charset="UTF-8"> 7 <meta name=”viewport” content=”width=device-width,initial-scale=1.0″> 8 <link rel="stylesheet" href="style.css"> 9 </head> 10 11 <script> 12 13 const img = ["hoge.png", "foo.png", "bar.jpg"]; 14 15 let count = -1; 16 17 const hoge = () => { 18 count++; 19 // カウントが最大になれば初期値に戻す 20 if (count == img.length) count = 0; 21 //画像選択 22 pic.src = img[count]; 23 //1秒ごとに実行 24 setTimeout(() => { hoge(); }, 2000); 25 } 26 27 window.onload = () => { 28 29 hoge(); 30 31 } 32 33 </script> 34 35<body> 36 <h1><font color="#EEEEEE">レシピ ~ カルボナーラとペペロンチーノ</h1> 37 <br> 38 <hr width="700" align="left"> 39 40 41 <!--- html -----> 42 43 <img id="pic" src="hoge.png" width="600" height=auto class="top"> 44 45 46 47 48 <p> 49 <table> 50 51 <tr><th class="fixed"><img src="calbo150.png" class="calbo"></th> 52 <td style="background-color:#476072"> 53 ちょっとしたひと工夫で普通の手作り<br> 54 カルボからお店風本格カルボに。<br> 55 失敗もしない簡単レシピ<br><br> 56 <a href="calbo.html" class="calbo" style="background-color:#476072">カルボナーラのレシピ</a> 57 58 </td> 59 </tr> 60 61 <tr><th class="fixed"><img src="pepe.jpg" class="pepe"></th> 62 <td style="background-color:#476072"> 63 簡単だけど難しいペペロンチーノ。<br> 64 材料と水分調整がうまくいけば本格的な<br> 65 ペペロンチーノに仕上がります。<br><br> 66 <a href="pepe.html" class="pepe" style="background-color:#476072">ペペロンチーノのレシピ</a> 67 </td> 68 69 </tr> 70 </table> 71 72 </p> 73<!-- JavaScript --> 74<div id="gallery"> 75 <div class="main"> 76 </div> 77 <div class="thumb"> 78 </div> 79</div> 80<script src="js/app.js"></script>
CSS
1.under { 2 border-bottom: dotted 2px #87cdfa 3} 4 5.fixed { 6 width : 300px; 7 height : auto; 8} 9 10img.calbo { 11 width: 100%; 12 height:auto; 13} 14 15img.pepe { 16 width: 100%; 17 height:auto; 18} 19 20 21#gallery { 22 margin: 0; 23 padding-top: 40px; 24 width: 700px; 25} 26 27#gallery .main img { 28 border:4px solid #fff; 29 box-shadow: 0; 30} 31 32#gallery .main p { 33 color:#bbb; 34 font-size:20px; 35 font-weight:bold; 36} 37 38 39 40#gallery .thumb img { 41 border:4px solid #fff; 42 border-radius: 400px; 43 box-shadow: 0px 0px 10px #000; 44 height: 60px; 45 margin: 10px; 46 width: 60px; 47 cursor: pointer; 48} 49 50 51 52@media screen and (max-width: 480px) { 53 54 test { 55 float: none; 56 } 57 58 img { 59 width: 100% ; 60 } 61 }
JavaScript
1//アルバムデータの作成 2let album = [ 3 {src: 'img/1.png', msg:'さまざまな形のパスタと自然の恵みを生かしたイタリアン'}, 4 {src: 'img/2.png', msg:'パスタだけでなく軽食やスイーツも'}, 5 {src: 'img/3.png', msg:'肉料理やピザもイタリアン料理を彩ります'}, 6 {src: 'img/4.png', msg:'豊富な種類のピザ'}, 7 {src: 'img/5.png', msg:'チーズが主役だったり生ハムが主役だったり、ピザの種類は豊富です'} 8]; 9 10//最初のデータを表示しておく 11let mainImage = document.createElement('img'); 12mainImage.setAttribute('src', album[0].src); 13mainImage.setAttribute('alt', album[0].msg); 14 15let mainMsg = document.createElement('p'); 16mainMsg.innerText = mainImage.alt; 17 18let mainFlame = document.querySelector('#gallery .main'); 19mainFlame.insertBefore(mainImage, null); 20mainFlame.insertBefore(mainMsg, null); 21 22//サムネイル写真の表示 23let thumbFlame = document.querySelector('#gallery .thumb'); 24for (let i=0; i< album.length; i++) { 25 let thumbImage = document.createElement('img'); 26 thumbImage.setAttribute('src', album[i].src); 27 thumbImage.setAttribute('alt', album[i].msg); 28 thumbFlame.insertBefore(thumbImage, null); 29} 30 31//クリックした画像をメインにする 32thumbFlame.addEventListener('click',function(event) { 33 if (event.target.src) { 34 mainImage.src = event.target.src; 35 mainMsg.innerText = event.target.alt; 36 } 37});
試したこと
ネット検索で見つけた方法で、viewportを追加し、imgタグのwidthを100%にすれば実現っできると思ってやってみているのですが、ダメでした。
どうぞよろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/27 05:06
2021/07/27 05:24
2021/07/27 07:55
2021/07/27 08:59