前提・実現したいこと
<picture>を使って、同じ画像を、デフォルトサイズはPC版、タブレット版にあて、SPのときのみspサイズの画像に切り替えたいです。
しかし、どうも検証ツールで確認する限り、<source>タグのheightが0になっていて、sp版でも表示されているのは<img>タグになっているようです。
どうしたらうまくきりかえられるでしょうか?
ご教授いただけましたら幸いです。
どうぞよろしくお願い致します。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="UTF-8"> 6 <!-- <meta name="viewport" content="width=device-width,initial-scal=1">--> 7 <meta name="viewport" content="width=device-width,initial-scale=1"> 8 <link rel="preconnect" href="https://fonts.gstatic.com"> 9 <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500;800&family=Noto+Sans+JP&display=swap" rel="stylesheet"> 10 <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> 11 <link rel="stylesheet" href="../css/reset.css"> 12 <link rel="stylesheet" href="../css/contact.css"> 13 14 15 <title>コンタクトページ</title> 16</head> 17 18<body> 19 <header> 20 <div class="header-wrapper"> 21 <div class="header-log"> 22 <img src="../img/site-logo.svg" alt="" class="site-log"> 23 </div> 24 25 <ul class="header-nav"> 26 <li class="header-list"> 27 <a href="#"> 28 <i class="fas fa-bars"></i> 29 </a> 30 </li> 31 <li class="header-list"> 32 <a href="#">MENU</a> 33 </li> 34 </ul> 35 </div> 36 </header> 37 <main> 38 39 40 <section id="fv"> 41 42 <div class="wrapper"> 43 <div class="scroll-bar"> 44 <p class="message">SCROLL</p> 45 </div> 46 <div class="fv-wrapper"> 47 <picture> 48 <source srcset="../img/contact-page@2x.png" media="(max-width:767px)"> 49 <img src="../img/contact-page.png" class="fv-img"> 50 </picture> 51 52 </div> 53 54 <div class="fv-black"></div> 55 <div class="copy"> 56 <p class="main-copy">CONTACT</p> 57 <p class="sub-copy">お問い合わせ</p> 58 </div> 59 60 </div> 61 </section> 62 63 </main> 64 <footer><small>©2018 DIGSMILE INC.</small></footer> 65</body> 66 67</html> 68
該当のソースコード
CSS
1@charset "UTF-8"; 2/*カラーコード*/ 3/*mixin*/ 4html { 5 font-size: 62.5%; 6} 7html * { 8 box-sizing: border-box; 9} 10html body { 11 line-height: 1.8; 12 font-size: 16px; 13 font-family: "Montserrat", "Noto Sans JP", sans-serif; 14 width: 100%; 15} 16html body img { 17 max-width: 100%; 18 vertical-align: bottom; 19} 20html body h2 { 21 font-size: 3.2rem; 22 font-weight: bold; 23} 24html body h3 { 25 font-size: 2.4rem; 26 font-weight: bold; 27} 28html body a { 29 text-decoration: none; 30 color: #FFFFFF; 31} 32html body section { 33 margin: 0 auto; 34 text-align: center; 35} 36/*ヘッダー*/ 37header { 38 position: absolute; 39 width: 100%; 40 /*共通部とここでwidth:100pxで広がる*/ 41 z-index: 10; 42} 43header .header-wrapper { 44 padding: 30px 58px; 45 display: flex; 46 justify-content: space-between; 47} 48header .header-wrapper .header-nav { 49 display: flex; 50} 51header .header-wrapper .header-nav .header-list { 52 padding-right: 7px; 53} 54 55/*fv*/ 56#fv { 57 height: 464px; 58} 59#fv .wrapper { 60 display: flex; 61} 62#fv .wrapper .scroll-bar { 63 display: none; 64} 65#fv .fv-wrapper { 66 position: relative; 67 overflow: hidden; 68 width: 96.3vw; 69 height: 387px; 70 text-align: left; 71 z-index: 2; 72} 73#fv .fv-wrapper .fv-img { 74 position: absolute; 75 top: -40%; 76 object-position: right; 77 filter: brightness(60%); 78 height: 100vh; 79} 80#fv .fv-black { 81 width: 780px; 82 height: 464px; 83 background-color: #333333; 84 z-index: 1; 85 position: absolute; 86 right: 0; 87} 88#fv .copy { 89 z-index: 5; 90 color: #FFFFFF; 91 font-weight: bold; 92 margin-top: 157px; 93 position: absolute; 94 right: 17%; 95 text-align: left; 96} 97#fv .copy .sub-copy, 98#fv .copy .company { 99 font-size: 20px; 100} 101#fv .copy .main-copy { 102 font-size: 7.2rem; 103} 104#fv .copy .sub-copy { 105 font-weight: normal; 106} 107 108/*footer*/ 109footer { 110 background-color: #333333; 111 text-align: center; 112 color: #FFFFFF; 113 padding: 18px; 114 font-size: 10px; 115} 116 117/*レスポンシブ*/ 118/*タブレット版*/ 119@media screen and (max-width: 1000px) { 120 html body { 121 font-size: 1.4rem; 122 width: 100%; 123 } 124 html body h2 { 125 font-size: 3.2rem; 126 } 127 128 /*ヘッダー タブレット*/ 129 header { 130 /*ここでheaderのpaddingを設定してしまうと画面の外まで飛び出してしまう*/ 131 } 132 header .header-wrapper { 133 display: flex; 134 height: 20px; 135 padding: 30px; 136 /*ヘッダー全体がはみ出さないようにする*/ 137 } 138 header .header-wrapper .header-log .site-log { 139 height: 20px; 140 } 141 header .header-wrapper .header-nav { 142 display: flex; 143 } 144 header .header-wrapper .header-nav .header-list { 145 padding-right: 7px; 146 } 147 148 /*fv タブレット*/ 149 #fv { 150 height: 615px; 151 } 152 #fv .wrapper { 153 display: flex; 154 width: 100%; 155 } 156 #fv .fv-wrapper { 157 position: absolute; 158 top: 0; 159 text-align: left; 160 width: 578px; 161 height: 529px; 162 position: relative; 163 } 164 #fv .fv-wrapper .fv-img { 165 position: absolute; 166 object-position: 45% 50%; 167 object-fit: cover; 168 } 169 #fv .fv-black { 170 width: 52.86vw; 171 height: 60.06vh; 172 background-color: #333333; 173 z-index: 0; 174 position: absolute; 175 right: 0; 176 /*margin-bottom: 80px;*/ 177 /* margin-bottom: 120px;*/ 178 } 179 #fv .copy { 180 z-index: 5; 181 color: #FFFFFF; 182 font-weight: bold; 183 margin-top: 330px; 184 position: absolute; 185 right: 12%; 186 text-align: left; 187 } 188 #fv .copy .sub-copy, 189#fv .copy .company { 190 font-size: 16px; 191 } 192 #fv .copy .main-copy { 193 font-size: 5.6rem; 194 line-height: 53px; 195 margin-top: 10px; 196 } 197} 198/*スマホ版*/ 199@media screen and (max-width: 767px) { 200 * { 201 box-sizing: border-box; 202 } 203 204 html body { 205 font-size: 1.4rem; 206 } 207 html body h2 { 208 font-size: 2.8rem; 209 width: 44.8vw; 210 } 211 html body h3 { 212 font-size: 2.4rem; 213 font-weight: normal; 214 } 215 html body section .wrapper { 216 padding: 0 15px; 217 } 218 html body .section-title { 219 font-size: 2.8rem; 220 } 221 222 /*ヘッダー*/ 223 header .header-wrapper { 224 padding: 15px 19px; 225 display: flex; 226 justify-content: space-between; 227 z-index: 10; 228 } 229 header .header-wrapper .header-log { 230 width: 189px; 231 height: 20px; 232 } 233 header .header-wrapper .header-nav { 234 display: flex; 235 } 236 header .header-wrapper .header-nav a { 237 font-size: 1.2rem; 238 } 239 header .header-wrapper .header-nav .header-list { 240 padding-right: 7px; 241 } 242 243 /*fv*/ 244 #fv { 245 height: 445px; 246 } 247 #fv .wrapper { 248 display: flex; 249 width: 100%; 250 padding: 0; 251 } 252 #fv .wrapper .scroll-bar { 253 display: block; 254 position: absolute; 255 z-index: 10; 256 top: 35%; 257 left: -26%; 258 } 259 #fv .wrapper .scroll-bar .message { 260 color: #FFFFFF; 261 transform: rotate(-90deg); 262 font-weight: bold; 263 } 264 #fv .wrapper .scroll-bar .message::after { 265 content: ""; 266 background-color: #333333; 267 display: inline-block; 268 vertical-align: middle; 269 width: 178.5px; 270 height: 0.15rem; 271 } 272 #fv .fv-wrapper { 273 text-align: left; 274 z-index: 1; 275 width: 76.53vw; 276 height: 270px; 277 /*overflow: hidden;*/ 278 position: relative; 279 } 280 #fv .fv-wrapper .fv-img { 281 object-position: top; 282 } 283 #fv .fv-black { 284 width: 75.47vw; 285 height: 365px; 286 background-color: #333333; 287 z-index: 0; 288 position: absolute; 289 right: 0; 290 } 291 #fv .copy { 292 z-index: 5; 293 color: #FFFFFF; 294 font-weight: bold; 295 margin-top: 175px; 296 position: absolute; 297 right: 6%; 298 text-align: right; 299 } 300 #fv .copy .sub-copy, 301#fv .copy .company { 302 font-size: 16px; 303 } 304 #fv .copy .main-copy { 305 font-size: 5.6rem; 306 line-height: 53px; 307 margin-top: 10px; 308 } 309} 310
試したこと
①HTMLでimg(デフォルト版/SP版)を二つ入れて、SP版では前者を非表示に、後者を表示して上書きする
→結果としてうまくいきませんでした。しかし、記事によるとこの手法はロード自体は2枚読み込んでいるため重くなるとのことで控えたいと考えています。
②今までfv-img(デフォルト版)につけていた「fv-img」を<picture>につけてみる
→それまでは正常に表示されていたタブレット版の画像位置がずれてしまいました。
一方で、sp版画像は表示されなくなってしまいます。
補足情報(FW/ツールのバージョンなど)
参考記事
OS:Windows
エディタ:Brackets
ブラウザ:クローム
※本来の投稿機能の使い方から外れますが、全コードの掲示にあたり、上記を消すわけにもいかないため、自己解決投稿欄を使用させて頂いております。ご容赦ください。
追記
以上の状態から、<sorce>タグの画像が読み込まれず、<image>タグが読み込まれているのではないかと推測しました。
回答3件
あなたの回答
tips
プレビュー