HTML5でインラインボックスはない?

このQ&Aのポイント
  • HTML5からはインラインボックスやブロックボックスの概念はなく、代わりにコンテンツモデルが導入されています。
  • HTML4の時は、div要素はブロックボックスでしたが、HTML5ではフローコンテンツに該当します。
  • input要素はHTML4の時はインラインブロックボックスでしたが、HTML5ではフローコンテンツであり、フレージングコンテンツ、インタラクティブコンテンツでもあります。
回答を見る
  • ベストアンサー

HTML5ではインラインボックスがない?

表題の件について、質問させて頂きます。 この前、Webサイト等で、HTML5を勉強していたら 「HTML5からはインラインボックスやブロックボックスという概念がない」 という記事を見つけました。 「なにー!」と思って調べてみたら、 現在は、コンテンツモデルというものが出来上がっており、 そちらに置き換わったのだという解釈をしました。 いろんなサイトでコンテンツモデルの意味や、カテゴリなどは 紹介されているので、何を意味するものかは理解したつもりですが、 ここで疑問が残りました。 その疑問は、 「結局、HTML4でいうところのインラインボックスやブロックボックスは  どのカテゴリになったの?」 ということです。 例として、 div要素は、HTML4の時はブロックボックスで、 HTML5ではフローコンテンツに該当しているから、 フローコンテンツを今までのブロックボックスと 同じように扱っていいのかな? と考えていたのですが input要素は、HTML4の時はインラインブロックボックスで、 HTML5では、フローコンテンツであり、フレージングコンテンツであり、 インタラクティブコンテンツである・・・・・・と、 もうさっきの考えは崩れ去りました。 お手上げだったので、ここに質問させて頂いています。 私が何に困っているのかといいますと、 HTML4の知識になりますが、 「ブロックボックスではwidthやheightを指定できるけど、  インラインボックスではできない。」 等の概念を、どうやって初心者の方に教えたら良いかを困っています。 ちなみに、個人的な見解ですが、CSSのdisplay属性に inlineとかblockがそのまま残っていることに違和感があります。 これも初心者の方に教える時に、 「ブロックボックスやインラインボックスはHTML4までの概念です」 と説明しておきながら、矛盾が生じるような気がしてなりません。

  • HTML
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

大きな誤解をされています。 「結局、HTML4でいうところのインラインボックスやブロックボックスは、どのカテゴリになったの?」 HTML4.01では、ブロック要素とインライン要素しかありませんでした。 『7.5.3 ブロックレベル要素と行内要素 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.3 )』  「ブロックボックスやインラインボックス」は、スタイルシートの視覚メディアに対する整形と言うHTMLとは別の用語です。これは、HTML5の仕様に含められることもあるCSS3ではそのまま引き継がれています。その意味ではなくなってはいません。  もっと端的にわかり易く言うと、HTML4までは、文書構造を示す要素の分類は特にされていませんでしたが、HTML5では、プレゼンテーションと文書構造の分離をより徹底するために、HTML上の要素は、文書構造上の意味から分類されています。 整理してみました。 メタデータ・コンテンツ (Metadata content)  base,command,link,meta,noscript,script,style,title フロー・コンテンツ (Flow content)  a,abbr,address,area (map 要素の子孫のとき),article,aside,audio,  b,bdi,bdo,blockquote,br,button,canvas,cite,  code,command,datalist,del,details,dfn,div,dl,em,embed,fieldset,figure,  footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,i,iframe,img,input,  ins,kbd,keygen,label,map,mark,math,menu,meter,nav,noscript,object,ol,  output,p,pre,progress,q,ruby,s,samp,script,section,select,small,  span,strong,style (scoped 属性があるとき),sub,sup,svg,  table,textarea,time,u,ul,var,video,wbr,およびテキスト セクショニング・コンテンツ (Sectioning content)  article,aside,nav,section ヘッディング・コンテンツ (Heading content)  h1,h2,h3,h4,h5,h6,hgroup フレージング・コンテンツ (Phrasing content)  abbr,audio,b,bdi,bdo,br,button,canvas,cite,code,command,datalist,  dfn,em,embed,i,iframe,img,input,kbd,keygen,label,mark,math,meter,  noscript,object,output,progress,q,ruby,s,samp,script,select,small,  span,strong,sub,sup,svg,textarea,time,u,var,video,wbr,およびテキスト  そして、内容にフレージングコンテンツのみが入っているときの  a,del,ins,map  (map要素の子孫のとき)のarea エンベッディッド・コンテンツ (Embedded content)  audio,canvas,embed,iframe,img,math,object,svg,video  および、MathMLやSVG インタラクティブ・コンテンツ (Interactive content)  a,button,details,embed,iframe,,keygen,label,select,textarea,  controls 属性が存在しているaudio,video,  usemap 属性が存在しているimg,object  type 属性が Hidden 状態でないinput  type 属性が toolbarのmenu ・・・一目でわかるように、これらはもっぱら「文書構造」で分類したものです。 ★どのカテゴリーにも分類されないもの  dd,dt,liなど・・  あなたが言われる「ブロックボックスやインラインボックスはHTML4までの概念です」は、より細かく分類され、ブロック要素はセクショニングコンテンツと、ヘッディングコンテンツに分類され、インライン要素はフレージングコンテンツとエンベッディッドコンテンツ、インタラクティブコンテンツに再分類されたと考えるべきでしょう。  その場合、それらの登場形態によって、その分類に含まれなかったり他の分類がされる場合があること。そしてこれらすべてをひとまとめにしてフロー・コンテンツ--流し込めるデータ--とする。  と考えれば良いです。 ・・・・・・・・以上はHTMLのマークアップの問題です。 「個人的な見解ですが、CSSのdisplay属性にinlineとかblockがそのまま残っていることに違和感があります。」  これはスタイルシート側の問題です。文書構造を担うHTMLとプレゼンテーションを担うスタイルシート--特に視覚メディアに対する整形モデル--を混同して考えるから、違和感を感じるのでしょう。スタイルシートでは、displayプロパティによって、整形上の他の整形モデルに変更できます。  なお、CSS3のdsplayの値は、 inline | block | inline-block | list-item | run-in | compact | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | ruby | ruby-base | ruby-text | ruby-base-group | ruby-text-group | <template>| none

triplane26
質問者

お礼

長文での回答ありがとうございます なるほど、確かにHTMLとCSSを混同して考えていました。 私が参考にしたサイトは下記のサイトなのですが http://www.htmq.com/html5/007.shtml このサイトの最初の部分を読んで、 「なくなってしまったのか」と思っていました ブロックボックスとブロック要素を同じものとして認識して いたことがそもそも間違っていたのですね

関連するQ&A

  • HTML4.01-DIV要素の仕様

    HTML4.01の仕様では内容モデルが (%flow;)* と定義されてありますが、これについて 「0個以上のインライン要素、又はブロック要素を含む必要がある」 といった解釈で良いのでしょうか。 だとするなら、そのエリアだけ背景色をかえたいが為にdiv要素を使っても良いということになりそうなのですが…やはりその様な使い方は推奨されないような気もします。 調べてみてもなかなか確信がもてなくて質問させて頂きました。 どなたかご教授頂けると嬉しいです。m(_ _)m

  • HTML5について教えてください

    当方、HTML5初心者(勉強中)のため、分かりやすく説明して頂ければ幸いです。 HTML4.1で書かれたページをHTML5にするとしたら、デコード宣言(HTML5から追加や変更&廃止になったタグも含む)。 上記以外で直すべきところはありますか? あるのであれば例を挙げて頂ければ幸いです。 また、フレーズ・コンテンツの中にフレーズ・コンテンツが入っているというのはマズいのでしょうか? 例 <p>今日は<span class="gray">曇りだ。<span class="文字サイズ変更">そして寒い。</span></span></p> など。今までインライン要素・ブロックレベル要素と分かれていた要素が細かく分類されていますよね。 この分類によって何か記述のルール変更等はあるのでしょうか。

    • ベストアンサー
    • HTML
  • HTML5について

    HTML5を勉強した方がいいと言われたので、 ちょっと検索して下のサイトを見つけました。 そこのセクションのところの要素についてお聞きします。 http://www.html5.jp/tag/elements/index.html 質問1 セクションのところのheaderとfooterがあります。 これは<div "id=header">とかしていたものが 専用の要素に置き換わるということでしょうか。 質問2 上記の場合、headerとかfooterとかは大きなブロックですよね? h1~h6も同じところにありますが、 これはp要素と同じコンテンツのグループ化の方ではないですか。

    • ベストアンサー
    • HTML
  • このHTMLとCSSをひとつにするのはどうすれば?

    WordpressのAddQuickTagを使うために別れたままでは使うことができません>< https://saruwakakun.com/html-css/reference/box ちなみに19番のカギカッコを使いたいと思っています。 何卒よろしくお願いいたします!! HTMLが・・・ <div class="box19"> <p>ここに文章</p> </div> CSSが・・・ .box19 { position: relative; padding:0.25em 1em; } .box19:before,.box19:after{ content:''; width: 20px; height: 30px; position: absolute; display: inline-block; } .box19:before{ border-left: solid 1px #5767bf; border-top: solid 1px #5767bf; top:0; left: 0; } .box19:after{ border-right: solid 1px #5767bf; border-bottom: solid 1px #5767bf; bottom:0; right: 0; } .box19 p { margin: 0; padding: 0; }

  • JSPの代わりにHTMLじゃだめですか?

    こんにちは、Web初心者でもうしわけないのですが、MVCモデルのビューについて教えてください。 JSPではできるだけビジネスロジックを書かないほうが よいといわれています。もしビジネスロジックが全く必要ないJSPファイルがあったら(HTML要素しかないJSPファイル)、これはもうHTMLファイルにしちゃってよいのでしょうか? それともHTMLファイルにしてしまうと、クライアントからこのファイルにアクセスがあっても、コンテナーがレスポンズメッセージをこのHTMLにのせてをクライアントに返せないのでしょうか?

    • ベストアンサー
    • Java
  • CSSセクレター 子孫のみに適用する方法

    子孫の要素のみに、CSSを適用する方法を教えてください。 下記は適用方法が分からないため、<a>に適用させていますが、 理想としては<a>の中の<div>要素に適用させたいのです。 ※(最後のbox1margin:rgiht:0px;になりそれ意外のブロックが全てmargin:rgiht:10px;になる) よろしくお願いします! <!--HTMLの記述--> <div class="box-wrapper"> <a href=""><div class="box1">ブロック1</div></a> <a href=""><div class="box1">ブロック2</div></a> <a href=""><div class="box1">ブロック3</div></a> </div> /*CSS側の記述*/ .box1{ width:100px; height:20px; background:#C6F; text-align:center; display:inline-block; } .box-wrapper > a{ margin:0 10px 0 0; } .box-wrapper > a:last-child{ margin:0; }

  • 【CSS/HTML】ナビゲーションメニューについて

    【CSS/HTML】ナビゲーションメニューについて http://pegoring.blog108.fc2.com/ ・ボタンたちをコンテンツの幅に合わせる方法(左並びからセンタリングへ)を教えてください。 ・ボタンにカーソルを合したとき(hover)にそのカーソルを合したときの高さと背景の高さが合いません。 ・そのコンテンツの時にボタンの要素(色や背景など)を変更する方法を教えてください。(たとえば、Homeならチプページにいるときだけ、そのボタンだけ背景を変えるなど) →Javascriptになるとおもいます。javascriptに詳しい方、こっちも教えていただけると幸いですorz。 画像を横幅いっぱいにrepeatさせて、中央にコンテンツを置くようにしたいんです。 オレンジの背景が横いっぱいに最後まで続き、ボタンはコンテンツの幅に揃えたいんです。 とにかく、リンクから実際に見てもらえば言いたいことのおおよそはつかんでいただけると思います。

  • jQuery スライダー

    下記のサイトを参考にjQueryでブラウザウィンドウ幅めいっぱいに要素を並べたコンテンツスライダーを設置しました。 参考サイトにあるようにちゃんと動かす事は出来たのですが。 しかし、現在作成中のwebページは、このコンテンツスライダー要素全体を囲うブロック要素が1000px,スライダーを表示する幅を950pxにしたいのですが自分なりに試行錯誤しても、メイン表示エリアがスライダーを表示する、幅950px内の中央に来ません。 参考サイトには、今回のjqueryのソースではコンテンツスライダー要素全体を囲うブロック要素が100%でないといけないとなっています、この場合はHTML,CSS,SCRIPTどこを変えれば、コンテンツスライダー要素全体を囲うブロック要素が1000px,スライダーを表示する幅を950pxに納める事ができるのでしょうか? 自分のソースを書くスペースが無いので、申し訳ありませんが、私が参考にしたサイトのURLよりソースをご確認頂き、ご指摘お願いいたします。 参考サイト http://black-flag.net/jquery/20121219-4407.html

  • HTML、CSSの質問です

    HTML,CSSを勉強している初心者です。 CSSでの、ブロックレベル要素のセンタリグについての質問です。 縦のセンタリングはどうすればいいのでしょうか? 横のセンタリングは、左右のマージンをautoにすると上手くいくのですが、上下のマージンにautoを設定してもセンタリングされません。 縦600px、横600pxのdivbox(トップページ)を作って、bodyのなかで縦横ともにセンタリングさせて、モニタ画面の真ん中にdivbox(トップページ)を配置させたいのです。 制作したトップページをサーバにアップロードして、色々なサイズのモニタ画面で見た時に、常にモニタ画面の真ん中に作ったトップページを配置させるのが目的です。 どなたかお知恵をおかしくださいませ。 宜しくお願いいたします。

    • ベストアンサー
    • CSS
  • HTML.CSSの質問です

    HTML,CSSを勉強している初心者です。 CSSでの、ブロックレベル要素のセンタリグについての質問です。 縦のセンタリングはどうすればいいのでしょうか? 横のセンタリングは、左右のマージンをautoにすると上手くいくのですが、上下のマージンにautoを設定してもセンタリングされません。 縦600px、横600pxのdivbox(トップページ)を作って、bodyのなかで縦横ともにセンタリングさせて、モニタ画面の真ん中にdivbox(トップページ)を配置させたいのです。 制作したトップページをサーバにアップロードして、色々なサイズのモニタ画面で見た時に、常にモニタ画面の真ん中に作ったトップページを配置させるのが目的です。 どなたかお知恵をおかしくださいませ。 宜しくお願いいたします。