質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1403閲覧

htmlとcssで写真を正方形のグリッド状に表示したい。

toyop

総合スコア30

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2020/08/23 18:09

こんちは。

htmlとcssで写真を正方形のグリッド状に表示したいです。
現状だと、いろいろな形の写真がまざっているため、整列はしているものの、ちょっと雑然としている感じです。そこで、各写真の大きさを正方形に揃えたいのですが、ここで詰まってしまいました。

コードは、

html

1 <section class="post-list"> 2 @foreach($user->tests as $test) 3 <a href="" class="post"> 4 <figure class="post-image"> 5 @if($test->image == null) 6 <img src="/storage/image/no_image.png" alt="{{$test->name}}"> 7 @else 8 <img src="/storage/image/{{$test->image}}" alt="{{$test->name}}"> 9 @endif 10 </figure> 11 <div class="post-overlay"> 12 <p> 13 <span class="post-likes"><i class="fa fa-heart" aria-hidden="true"></i> 150</span> 14 <span class="post-comments"><i class="fa fa-comment" aria-hidden="true"></i> 10</span> 15 </p> 16 </div> 17 </a> 18 @endforeach 19 </section>

css

1.post-list { 2 display: grid; 3 grid-template-columns: repeat(3, minmax(100px, 293px)); 4 justify-content: center; 5 grid-gap: 28px; 6 padding-top: 110px; 7} 8 9.post { 10 cursor: pointer; 11 position: relative; 12 display: block; 13} 14.post-image { 15 margin: 0; 16} 17.post-image img { 18 width: 100%; 19 vertical-align: top; 20}

です。cssの.post-image imgに

css

1 width: 250px; 2 height: 250px; 3 object-fit: cover;

を加えたのですが、そうすると画面幅を縮めていったときに最終的に画像が重なってしまいます。できればグリッドを保ちつつ、かつ正方形であってほしいです。

よければアドバイスいただけないでしょうか。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

css

1.post-image { 2 margin: 0; 3 padding-top: 100%; /* 余白の高さが幅と等しくなり、余白部分は正方形になる。*/ 4 position: relative; 5} 6.post-image img { 7 position: absolute; /* 通常フローからはずれ浮いた状態になる */ 8 top: 0; /* .post-image の上端に配置 */ 9 width: 100%; 10 height: 100%; /* .post-image と同じにすることで正方形になる */ 11 vertical-align: top; 12 object-fit: cover; /* トリミング */ 13}

注意点
object-fit はIEは非対応です。


もう IE はスルーしてもいいと思いますが、対応させたいなら、画像をimgタグではなくCSSの背景として表示させればいいでしょう。

html

1 <figure class="post-image" style="background:url(/storage/image/{{$test->image}}) center/cover;"> 2 </figure>

投稿2020/08/23 18:51

編集2020/08/24 02:34
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toyop

2020/08/24 04:19

hatena19さん ご回答ありがとうございました。 無事実現することができました。思っていたよりも手順が複雑だったので、ひとつひとつ自分で理解していきます。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問