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

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

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

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

HTML

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

Q&A

解決済

2回答

15642閲覧

ブロック要素をさらにdivで囲む理由

on_off_on

総合スコア18

div

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

HTML

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

0グッド

1クリップ

投稿2018/02/20 05:11

編集2018/02/20 05:49

これはprogateのレッスンの一部なのですが、divやulタグなどのブロック要素をさらにdivで囲む必要性について、あまり理解できないのですが、なぜ囲む必要があるのでしょうか?
(divを<div class= "container">などで囲む理由も同様に不明)

ulに直接クラス名をつけてCSSを当てても問題ないように思えます。

<div class = "header"> <div class = "header-list"> <ul> <li> <li> <li> </ul> </div> </div>

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

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

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

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

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

guest

回答2

0

CSSを確認しないとなんとも言えないところがありますが、headerが横長で、header-listはその横長の要素のうちの一部(例えば左3分の1)を占めるような表示をするhtmlでしょうか。
このhtmlだけを確認すると、確かにご質問の通りulをdivで囲む必要性は感じられません。

ただし例えば後になって誰かが「リストをもう一つ増やしてほしい」と言い出した場合、divで囲っているメリットも出てきます。

具体的には以下のようにコードを変更すれば良いからです。

html

1<div class = "header"> 2 <div class = "header-list"> 3 <ul> 4 <li> 5 <li> 6 <li> 7 </ul> 8 <ul> 9 <li> 10 <li> 11 <li> 12 </ul> 13 </div> 14</div>

もしulに直接クラス名をつけていた場合、リストを増やした上でレイアウトが今までと同じであることを求められたときに柔軟性がなくなる恐れがあります。
試しに、divを削除してulにクラスを付与してレイアウトを実現していた場合、もう一つリストを増やそうとするとどうすれば良いか考えてみてください。

そもそもdivとは「囲った範囲をブロック要素にする」というような抽象的な要素です。
そのため、画面のレイアウトはdivで構成し、細かな要素はdiv内の細かな要素で記載する、という方針でhtmlの要素を組み立てていくという流儀もそれなりに存在します。

もちろん、後で変更が加えられないことが保証されているのであればご質問の通りulにクラス名を付与するのも全く問題ありません。
同じ結果を得られるコードはたくさんあるのですが、それぞれの実現方法にメリットデメリットがありますので、適宜取捨選択して採用していくことが必要になります。

投稿2018/02/20 05:54

akabee

総合スコア1947

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

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

0

ベストアンサー

ヘッダーというものは多分position:fix;にしたいだろう
そして後からヘッダーの「要素の下に何かを追加」したいとなった場合
ヘッダー全体という囲みでposition:fix;になっておらず
ヘッダーの部品毎にposition:fix;になっていると
「要素の下に何かを追加」するのがいちいちめんどくさいことになる

.headerをposition:fix;にして
.header-listはそうしないことで
.header-listの下に何かを追加するのがメンドくさくなくなる

ul.header-listとせず
div.header-list>ulとしているのは

scss

1div.header-list{ 2 background:url('menu-bar-bg.png') repeat-x; 3 ul{ 4 width:960px; 5 margin:0 auto; 6 list-style:none; 7 } 8}

みたいな感じのことをしたいからじゃないかと推測
ul単体だと、左右に背景をつけつつ
指定した幅で真ん中寄せが結構しんどい

デザインの為だけの要素というのはなるべく避けたいものではあるが
絶対にあってはならないというようなものでもなし

効率と秤に掛けてより良い判断を

投稿2018/02/20 05:55

編集2018/02/20 05:56
KazuhiroHatano

総合スコア7819

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問