🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSS

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

Q&A

解決済

1回答

1512閲覧

グリッドレイアウトについて

mikan23

総合スコア13

CSS

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

0グッド

0クリップ

投稿2021/03/02 09:10

編集2021/03/03 08:38
<div class="grid"> <div class="grid1"> <p><h3> タイトル</h3> <h4>本文 </h4></p> </div> <div class="grid2"> <img src="images/about_dogs.jpg" class="dogpic" alt="dog"> </div> <div class="grid3"> <img src="images/takeout_pic.jpg" class="togopic" alt="togo"> </div> <div class="grid4"> <p><h3>タイトル</h3> <h4>本文</h4> </p> </div> </div> <CSS> .grid { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: 500px 500px; } .grid1 { background-color: #a2ded0; } .grid1 p { display: inline-block; } .grid2 { background-color: #f4d03f; } .grid3 { background-color: #6c7a89; } .grid4 { background-color: #59abe3; } .grid img{ width: 100%; height:100%; object-fit: contain; }

各500px×500pxの4マスのgrid layoutを作成しています。
こちらのサイトの写真部分ようにページ幅に合わせて500×500がそのまま拡大縮小していく設定にしたいのですがうまくできません。

あと画像がマスいっぱいに広がりません。
どうしたら良いでしょうか?
よろしくお願いします。`

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

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

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

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

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

K_3578

2021/03/02 09:16

質問は編集できます。 回答者が見づらいため、ソースコードはMarkDownの<code>ブロック内に貼り付けてください。 加えて、URLは「リンクの挿入」を押して[リンク内容](URL)という形で編集して追記してください。
Lhankor_Mhy

2021/03/02 09:21

ご提示のリンク先では、画像がサイズに応じて切り取られていますが、そのような形でいいですか?
mikan23

2021/03/02 09:24

>ご提示のリンク先では、画像がサイズに応じて切り取られていますが、そのような形でいいですか? はい、大丈夫です。
m.ts10806

2021/03/02 21:04

質問は編集できます。
K_3578

2021/03/03 08:46

@質問者さん <code>ブロックに入れてくれたのはナイスなのですが惜しい、これだとHTMLとCSSが1つのコードに なってしまってるんで、 ```HTML <div class="grid"> <div class="grid1"> <p><h3> タイトル</h3> (省略) ``` (1行空ける) ```CSS .grid { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: 500px 500px; } (省略) ``` っていう形にしてくれると全員から見やすくてgoodです。
guest

回答1

0

ベストアンサー

aspect-ratio はブラウザ対応がそろっていないので、marginを使ってアスペクト比を維持するのがいいかと思います。
aspect-ratio - CSS: Cascading Style Sheets | MDN

css

1.grid { 2 display: grid; 3 grid-template-columns: repeat(2, 1fr); 4 grid-template-rows: 500px 500px; 5 grid-template-rows: auto auto; 6} 7.grid1 { 8 background-color: #a2ded0; 9} 10.grid1 p { 11 display: inline-block; 12} 13.grid2 { 14 background-color: #f4d03f; 15} 16.grid3 { 17 background-color: #6c7a89; 18} 19.grid4 { 20 background-color: #59abe3; 21} 22.grid img { 23 width: 100%; 24 height: 100%; 25 object-fit: contain; 26 object-fit: cover; 27} 28.grid > * > * { 29 position: absolute; 30} 31.grid > * { 32 position: relative; 33 display: flex; 34} 35.grid > *::before { 36 display: block; 37 content: ""; 38 width: 0; 39 margin-top: 100%; 40 position: static; 41}

それから、p要素の子に見出し要素をつけることはできないので、気を付けてください。表示が崩れます。

許可されている内容 記述コンテンツ

<p>: 段落要素 - HTML: HyperText Markup Language | MDN

投稿2021/03/02 09:50

Lhankor_Mhy

総合スコア36946

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

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

mikan23

2021/03/02 11:41

ご回答ありがとうございます。 イメージ通りにできました! ありがとうございます。
mikan23

2021/03/02 11:57

すみません、文字をマスのど真ん中に起きたいのですが position: absolute; top: 50%とかでできるかと思うのですが どこに入れたら良いでしょうか? 重ね重ね申し訳ございません。
Lhankor_Mhy

2021/03/03 01:12

縦中央寄せをするために、top: 50% を使うのはあまりいい方法ではないと思いますが、.grid1などの子要素にスタイルを当てればいいかと思いますよ。
mikan23

2021/03/03 08:36

初心者で申し訳ないのですがスタイルを当てると言うのはどう言うことでしょうか? これからも使うと思うので、他に良い方法があれば教えていただきたいです。 お手数をおかけしますがよろしくお願いします。
Lhankor_Mhy

2021/03/03 08:42

CSSは、おおむね以下のような書式です。 セレクタ{ プロパティ: 値; } ですので、たとえば、h1要素にcolorプロパティをredにするスタイルを当てたい場合は、 h1{ color: red; } と書きます。
mikan23

2021/03/03 12:22

そのことですね!理解しました。 実際、https://saruwakakun.com/html-css/basic/centering#section2 こちらのサイトのその2:absoluteを活用して縦中央に配置/例:複数行の文章の場合 を参考にgrid1やgrid1 pにも試してみたのですがうまく反映されませんでした。 他に方法がありますでしょうか? 何度も申し訳ございませんがご存知でしたらどうぞよろしくお願いします。
Lhankor_Mhy

2021/03/04 01:48

「grid1 pにも試してみた」とのことですが、回答にも書いた通り、p要素の子に見出し要素を入れるのは文法違反です。表示が崩れることもあるので避けた方がいいでしょう。 当方で試したところ、ご提示の方法で垂直中央寄せになりました。
mikan23

2021/03/08 09:11

お礼の文が反映されていませんでした、失礼しました。 指示していただいた通り行いましたらきれいに垂直中央寄せになりました! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問