【前提・実現したいこと】
・4つの横並びli要素(幅:画面幅の25%(最大300px)、高さ:400px)を覆うように画像を配置する
・画面サイズが変わっても縦横比を保ったまま画像を表示させる
・li要素内に表示させたい画像は、元画像の一部分を切り抜き、その部分をli要素のサイズに合わせて表示させる
※添付ファイルの1ページ、2ページ目をご参照ください
【 発生している問題】
<問題1:画像の切り抜きができない>
<問題2:画面幅を変化させると、画像が見切れる部分が発生する>
【試したこと】
<問題1:タテ画像の切り抜きができない>
画像をレスポンシブに対応させるため、li要素の幅を25%、最大幅300px;を指定。
Img要素はli要素全体を覆うように表示してほしいので、幅を100%に指定。
高さは30vw、最大高さ300pxにて指定(画面サイズに応じて縦横比を維持するため)。
object-fit:coverにて、li要素分のサイズに画像が切り抜き配置させようとしたが、タテ画像が元画像がli要素内に収まるように表示されてしまう(切り出しができていない)。
Object-positionにて位置指定を変えても、画像の表示位置が変わらない
<問題2:画面幅を変化させると、画像が見切れる部分が発生する>
上記の状態で、画面幅を変化させると、画像のサイズが変わり、一部分が見切れてしまう。
横幅が%指定のため、幅変化よって縦横比を保つよう画像の切り出しが変わり、最大高さを超えた分が見切れていると考える。
最大高さを指定しないことで、見切れる現象は解決したが、その分高さが大きくなってしまう。
【コード】
html
1 <div class="inner"> 2 <ul class="face_lists"> 3 <li class="face_list"> 4 <img class="face01" src="./img/tate.jpg" alt=""> 5 </li> 6 <li class="face_list"> 7 <img class="face02" src="./img/yoko.jpg" alt=""> 8 </li> 9 10 <li class="face_list"> 11 <img class="face01" src="./img/tate.jpg" alt=""> 12 </li> 13 <li class="face_list"> 14 <img class="face02" src="./img/yoko.jpg" alt=""> 15 </li> 16 </ul> 17 </div> 18 19【css】 20.inner{ 21 width: 100%; 22 max-width: 1200px; 23 margin: 0 auto; 24} 25 26.face_lists{ 27 display: flex; 28} 29 30 31.face_list{ 32 flex: 0 0 25%; 33 max-width: 300px; 34} 35 36img{ 37 width: 100%; 38 height: 30vw; 39 max-height:300px; 40 object-fit: cover; 41} 42
【やりたいこと】
<問題1:タテ画像の切り抜きができない>
Object-fitにて画像の任意の一部分を拡大して切り出したい。
<問題2:画面幅を変化させると、画像が見切れる部分が発生する>
最大高さを指定しても画像が見切れないようにしたい。
【利用環境】
windows10
問題1,2両方を解決するには元の画像ファイルをいい形に切り出すしかないのでしょうか?
擬似要素などを使用して試してみましたが、結果は変わらずでした。
3日ほどこの問題で検討し続けているのですが、うまくいかず非常に悩んでいます。
何かいい解決策あればご教示頂きたくよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー