画像のリストを横並びにして、その右端に文字を配置する設定。
今回は、グリッドレイアウトを使ってやってみました。
他にもflexも試したが、今回はグリッドレイアウト
を使った方がレスポンシブを考えると簡単に
実装できたのでその方法を記事にしました。
実際に完成したのが下記になります。
画面幅が1023px以上の時は画像4枚横並び
そこから、サイズに合わせて表示枚数変えてます。
下記のような動きになりました。動画撮影はBandicam使用してます。
この動画はパソコン画面の動画撮影が簡単で録画できる
BANDICAM使ってます。無料でお試し可能↓
BANDICAM使ってパソコン画面動画はがとても使いやすくていい感じ!
実際に書いたコードをはここからです。
class名は適当につけてます。
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<section class="imglist"> <div class="imglist-wrapper"> <div class="imglist-content"> <div class="img-list"> <h2 class="headline"> 日本 </h2> <div class="img-list-innner"> <p class="greenline-text"> Japan </p> <div class="img-contents"> <img src="./images/j_1.jpg" alt="japan1" class="img-item"> <img src="./images/j_2.jpg" alt="japan2" class="img-item"> <img src="./images/j_3.jpg" alt="japan3" class="img-item"> <img src="./images/j_4.jpg" alt="japan4" class="img-item"> </div> </div> </div> <div class="img-list"> <h2 class="headline"> アメリカ </h2> <div class="img-list-innner"> <p class="greenline-text america"> America </p> <div class="img-contents"> <img src="./images/a_1.jpg" alt="america1" class="img-item"> <img src="./images/a_2.jpg" alt="america2" class="img-item"> <img src="./images/a_3.jpg" alt="america3" class="img-item"> </div> </div> </div> </div> </div> </section> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
@charset "utf-8"; * { box-sizing: border-box; } .imglist-wrapper{ width: 100%; max-width: 1500px; margin: auto; } .imglists-content{ width: 100%; margin: auto; } .img-list{ text-align: left; margin-top: 40px; } .img-list:first-child{ margin-top: 0; } h2{ margin: 0; } .headline{ font-size: 25px; color: #000; display: inline-block; padding: 10px; border-bottom: 2px solid #7bec8e; margin-bottom: 20px; } .img-list-innner{ position: relative; z-index: 1; } .img-item{ width: 100%; height: 250px; object-fit: cover; vertical-align: bottom; } .img-contents{ display: grid; gap: 30px; grid-template-columns: 1fr 1fr 1fr 1fr; } p{ margin: 0; } .greenline-text{ font-size: 120px; color: transparent; -webkit-text-stroke: 3px #74c067; position: absolute; top: -126px; right: 0; z-index: -1; } .greenline-text.america{ right: 26%; } |
レスポンシブ対応で書いたコードも記載していきます。
レスポンシブのブレイクポイントは今回は
画像が崩れるところで入れてます。
変更したところだけ書いていきます。
1023px以下の場合
画像の横並びの数を3枚に変更。
アメリカの文字の位置を調整。
CSS
1 2 3 4 5 6 7 8 9 10 |
@media screen and (max-width: 1023px){ .img-contents{ gap: 40px; grid-template-columns: 1fr 1fr 1fr; } .greenline-text.america{ right: 0; } } |
900px以下の場合
画像の横並びの数を2枚に変更。
右端の文字のサイズ・位置調整。
CSS
1 2 3 4 5 6 7 8 9 10 |
@media screen and (max-width: 900px){ .img-contents{ grid-template-columns: 1fr 1fr; } .greenline-text{ font-size: 90px; top: -95px; } } |
500px以下の場合
画像の横並びの数を1枚に変更。
headlineの文字の位置・サイズ変更。
右端の文字表示なし。
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@media screen and (max-width: 500px){ .img-contents{ grid-template-columns: 1fr; } .img-list{ text-align: center; } .headline{ font-size: 25px; } .greenline-text{ display: none; } } |
今回はこんな感じで設定しました。
画像の枚数が多い場合は、swiperを使うと
いい感じで表示できると思います。
今回は枚数が少なかったので、グリッドレイアウト
のみで実装しました。
この辺のやり方は、色々あるので自分のやりやすい
方法でやるといいです。
今回のコードはよければ、1例として参考にしてください。
この実装は先のも書きましたが、フレックスボックスでも
実装可能です。
YouTube動画はこちら
フリーランス案件
フリーランスにもIT技術にも詳しいコンサルタントだから安心!【ポテパンフリーランス】
フリーランスコンサルタント・エンジニア伴走型マッチングサービス【RIRIKU】
コメント