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

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

詳細はこちら
HTML

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

CSS

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

Q&A

解決済

1回答

2736閲覧

CSSグリッドで思った所に表示されない

zynu

総合スコア29

HTML

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

CSS

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

0グッド

0クリップ

投稿2019/12/09 03:22

div.main-contentを#main内に入れたいのですが、上手く入ってくれません。
現状、デベロッパーツールで確認してみると#mainがdiv.titleまでしか取り込んでくれません。
これのせいで#main以下の内容がdiv.main-contentに重なって表示されてしまいます。

どなたかアドバイスお願いします。
返信は少し遅くなってしまうかもしれません。

html

1<div id="main"> 2 <div class="title"> 3 <h2>Contents</h2> 4 <h3>私が提供するもの</h3> 5 </div> 6 <div class="main-content"> 7 <div class="main-container"> 8 <div class="concert-wrap"> 9 10 <button class="concert"> 11 <div class="m-inner-wrap"> 12 <div class="m-inner"> 13 <h4>Concert</h4> 14 </div> 15 </div> 16 </button> 17 </div> 18 <div class="lesson-wrap"> 19 20 <button class="lesson"> 21 <div class="m-inner-wrap"> 22 <div class="m-inner"> 23 <h4>Lesson</h4> 24 </div> 25 </div> 26 </button> 27 </div> 28 </div> 29 </div> 30 </div>

CSS

1#main{ 2 grid-row: detail; 3 display: grid; 4 grid-template-rows: [body] auto; 5 grid-template-columns: repeat(5, .25fr); 6 7 position: relative; 8} 9#main .title{ 10 grid-column: 3/ 4; 11 grid-row: body; 12 width: 100%; 13 14 background-color: rgba(155, 125, 57, 0); 15} 16#main .title h2, .title h3{ 17 color: rgba(155, 125, 57, 1) 18} 19.main-content{ 20 grid-column: 1/ -1; 21 grid-row: body; 22 23 position: absolute; 24 top: 230px; 25 height: 500px; 26 width: 100%; 27 z-index: -1; 28} 29 30.main-container{ 31 display: grid; 32 grid-template-rows: [buttons] auto; 33 grid-template-columns: .1fr repeat(2, 1fr) .1fr; 34 35 position: relative; 36 width: 100%; 37} 38.concert-wrap{ 39 grid-column: 2/ 3; 40 top: -20px; 41} 42 43.lesson-wrap{ 44 grid-column: -3/ -2; 45} 46.concert-wrap, .lesson-wrap{ 47 grid-row: buttons; 48 height: 450px; 49 width: 100%; 50 overflow: hidden; 51 position: absolute; 52} 53 54.concert{ 55 background: url("img/dolo-iglesias-FjElUqGfbAw-unsplash.jpg") center center / cover no-repeat; 56} 57.lesson{ 58 background: url("img/paige-cody-7kck7rSl_Bo-unsplash.jpg") center center / cover no-repeat; 59} 60.concert, .lesson{ 61 height: 100%; 62 width: 100%; 63 position: relative; 64 transition: all 1s; 65} 66.lesson:hover, .concert:hover{ 67 transform: scale3d(1.1,1.1,1); 68} 69.concert::before{ 70 background-color: rgba(255, 255, 255, 0.3); 71 color: #000; 72} 73.lesson::before{ 74 background-color: rgba(0, 0, 0, 0.4); 75 color: #ddd; 76} 77 78.concert::before, .lesson::before{ 79 content: "Show More"; 80 display: flex; 81 justify-content: center; /* 文字の中央配置 */ 82 align-items: center; 83 filter: blur(4px); /* ブラー効果 */ 84 font-size: 40px; 85 position: absolute; 86 top: 0; 87 right: 0; 88 bottom: 0; 89 left: 0; 90 opacity: 0; 91 transition: all 1s; 92 z-index: 2; 93} 94.concert:hover::before, .lesson:hover::before{ 95 filter: blur(0); /* ブラー効果を解除 */ 96 opacity: 1; 97} 98.m-inner-wrap{ 99 height: 100px; 100 width: 40%; 101 position: absolute; 102 top: 50px; 103 left: 50px; 104} 105.lesson > .m-inner-wrap{ 106 top: auto; 107 right: 50px; 108 bottom: 50px; 109 left: auto; 110} 111.m-inner{ 112 background-color: rgba(0, 0, 0, 0.8); 113 color: #fff; 114 display: flex; 115 justify-content: center; 116 align-items: center; 117 font-size: 25px; 118 font-weight: 400; 119 height: 100px; 120 width: 100%; 121 position: relative; 122} 123.concert .m-inner{ 124 background-color: rgba(255, 255, 255, 0.8); 125 color: #000; 126} 127.m-inner::before{ 128 background-color: rgba(204, 153, 0, .8); 129 content: ""; 130 height: 100%; 131 width: 5px; 132 position: absolute; 133 left: 10px; 134}

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

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

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

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

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

hatena19

2019/12/09 04:24

最終的にどのようなレイアウトがご希望のなのですか。 画像などで提示してください。
zynu

2019/12/09 11:17

div.main-contentを#mainの中に入れられれば満足です。 今はレイアウトを気にしていません。
zynu

2019/12/09 11:18

現状ではdiv.main-contentが#mainの要素として認められていないみたいです。
guest

回答1

0

ベストアンサー

現状ではdiv.main-contentが#mainの要素として認められていないみたいです。

div.main-contentに position: absolute; が設定してあるからですね。
position: absolute;を設定すると通常のフローから外れるので、gridアイテムにはなりません。

レイアウトをgridで決めるのか、position: absolute;で決めるのか、まずはどちらかに統一しましょう。

レイアウトを設定する方法は、他にも flexbox などがあります。
どのようなレイアウトにするかによって適切な方法かありますので、レイアウトを決めるのが先だと思います。

投稿2019/12/09 11:38

編集2019/12/09 11:47
hatena19

総合スコア34073

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

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

zynu

2019/12/09 12:36

知りませんでした!おかげ様で解決できました。ありがとうございます!
hatena19

2019/12/09 12:52

もし、grid でレイアウトを決めるなら、もう少し grid について基本を学習してからの方がいいと思います。grid のメリットは最低限のHTML要素で複雑なレイアウトを設計できることです。 それ以前の方法だとレイアウトの為に、要素を囲むブロックが必要だったのですが、それが必要ないというのがメリットです。 現在のHTMLは不必要なラッパーブロックが多数あり、grid のメリットを活かすことができません。
zynu

2019/12/09 13:05

確かにそうですね... gridで細かく設定するよりもpositionで配置する方が簡単かなと思ったのですが、擬似要素なども入れると結局余計に手間がかかってしまいました。 先の手間を減らす為にももう少しgridを勉強しようと思います。 今回は本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問