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

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

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

HTMLの<div>タグです。<div>要素は特に意味を持っていません。ひとかたまりのコンテンツに使用されるか、(セマンティックとして)他の要素では記述できないコンテンツに使用されることが多いです。

HTML

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

CSS

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

Q&A

解決済

4回答

3696閲覧

divで囲む意味を知りたい

shokotin

総合スコア1

div

HTMLの<div>タグです。<div>要素は特に意味を持っていません。ひとかたまりのコンテンツに使用されるか、(セマンティックとして)他の要素では記述できないコンテンツに使用されることが多いです。

HTML

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

CSS

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

0グッド

2クリップ

投稿2020/09/15 13:42

編集2020/09/15 14:24

イメージ説明### 前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

div要素で囲う意味を教えてほしいです。
div要素で囲まなくてもできるという考えでした。調べてもよくわからなかったので、どうかお願いいたします。
やはり、要所要所で変わってくるのですかね。。。
どのような場合に、div要素で囲んだほうがいいかも教えてほしいです。

エラーメッセージ

該当のソースコード

html

1/*誤ったコード*/ 2<div class = "header"> 3 <div class = "box"> 4 <img src = "..."> 5 <a href = "#" class = "login">ログイン</a> 6 </div> 7</div> 8/*Progateでの答え*/ 9<header> 10 <div class="container"> 11 <div class="header-left"> 12 <img class="logo" src="..."> 13 </div> 14 <div class="header-right"> 15 <a href="#" class="login">ログイン</a> 16 </div> 17 </div> 18 </header> 19```ここに言語名を入力 20HTML

試したこと

Webサイトにて、div要素の意味を改めて調べてみましたがどうもしっくりくるものがなかったです。
インライン要素を囲まなくてもできるのでは?と思ってしまいます。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
Progateの道場中級編の2でつまずいています。
boxとcontainerは一緒のものです。
...には、urlが入ります。

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

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

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

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

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

kai0310

2020/09/15 13:54

コードは画像としてではなく、テキストでMarkDownを使用して記載してください。
shokotin

2020/09/15 14:11

わかりました。すみませんでした。
miyabi_takatsuk

2020/09/15 16:04

実装したいデザイン画面がわからないとなんとも言えません。 そのデザインいかんで、divを使う必要が発生します。
guest

回答4

0

ベストアンサー

Progateってここで時々見ますが私はよくしらないし思想とかもさっぱりわからないのですが私は「マークアップに正解はない」と思っているので
ぶっちゃけ期待した結果ができればいいと思っています。

そこをdivで囲う意味は、Progateの正解とやらのコードを書いた人しか
わからないかなと。タグの使用意図をすべて書いてあるなら…と思ったのですが
質問者がここに来て質問しに来るということは、ないということでしょうし
ない以上は想像することしかできません。

/誤ったコード/となっていますが私はそうは思いません。
Progateと違うだけでやれることやれてれば正解だと思います。
特にdivの意味付けなんて個人の裁量によるものがほとんどかなと。

横並びだけでもtableがfloatになったりinline-blockになったりflexになったり
gridになったりする以上マークアップの形もある程度ころころ変わる
もんだと思います。「Progateがそうしていたから」っていう感じで
divを増やすのではなく自分でしっかり意味付けしたタグであれば
それはそれで正解かなと思いますね。

質問とはかけ離れた話になってしまいました笑

投稿2020/09/16 02:09

sousuke

総合スコア3830

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

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

0

ご提示のHTMLのように内部に持つ要素がひとつだけであれば、基本的に外側のdivは不要だと思います。

ただし、JavaScriptで要素を追加する、::before疑似要素を使うなど、HTMLにない要素を追加するのであれば、外側にdivが必要になってくるでしょう。
また、img要素は置換要素というものであるため、内部にCSSを効かせることができず、そういう場合にも外側にdivが必要になります。

投稿2020/09/16 01:21

編集2020/09/16 02:14
Lhankor_Mhy

総合スコア36960

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

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

Lhankor_Mhy

2020/09/16 08:02

低評価をした方、理由を教えていただけませんか?
guest

0

一般的に、dicタグ(ディビジョンタグ)である範囲のある要素(特定のタグやname属性が同じ要素)の装飾や振る舞い(色やセンタリング指定など)を統一したいときに囲んでおけば、飛び飛びに要素が散らばっていても見落とす心配がありません。
また、逆にdivで指定した色とは違う色をあえて狭い範囲では指定したいようなときに、内側のdivで指定すれば、外側に影響を与えません。
そのような利点があります。
pタグ(パラグラフタグ)で囲むと上下に隙間が空いてしまうので、改行や隙間が必要ないときはdivタグがふさわしいです。

投稿2020/09/15 14:22

編集2020/09/15 14:25
seastar3

総合スコア2287

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

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

shokotin

2020/09/15 14:58

コメントありがとうございます! 後で色々付け加えるときがある場合は、imgやa要素などにとりあえずdiv要素で囲むといいのでしょうか? 答えていただけると幸いです。
seastar3

2020/09/16 08:16

複数のimgタグやaタグに太字指定やセンタリングなどの共通の装飾を施すとき、そうします。 一つのタグに色々と属性を付け加えるのなら、直接指定した方が開発しやすいこともあるでしょう。
guest

0

スタイルシートの定義「header-left」「header-right」が判らないのではっきりしませんが、
誤ったコードの場合、画面の幅を狭くすると「画像」と「ログイン」が折り返されて表示されませんか?

投稿2020/09/15 14:38

kuma_kuma_

総合スコア2506

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

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

shokotin

2020/09/15 14:52 編集

コメントありがとうございます! header-left,header-rightは、Progateが指定していたdiv要素のクラス名です。 div要素が加わっているみたいです。 私は、imgやa要素単体で行けると思ったんですが、div要素で囲んでいたのでその意味合いが分からないので、質問させていただきました。
kuma_kuma_

2020/09/15 16:29

>div要素のクラス名です。 スタイルシートの指定(stylesheet.css)に「container」「logo」「login」「header-left」「header-right」の定義があると思います。 スタイルシートには形や色やフォントなどの情報を登録しておいて一つの名前でまとめておきます。 (この場合「header-left」「header-right」等) 要素にはclassでその名前を指定すればスタイルシートで定義された内容が適応されます。 このスタイルシートの情報がないと推測でしか書くことができません。 今回の場合ですとdiv要素ですので使用する場合大体表示位置を決めるのに使用します。 理由としてはdisplayがblockの為 ・縦横サイズが指定できる。 ・位置が指定できる。 などがあります。 各タグにはdisplayプロパティがあってimgやa要素などで違います。 細かい事は下記URLで https://saruwakakun.com/html-css/basic/display なおdisplay自体変更することも可能ですのでimgやa要素単体をdisplay:blockにすれば div要素を使わないでも可能でしょうが、分かりやすくdiv要素を使う事が多いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問