• ベストアンサー

ブロックレベル要素とdisplay:block;

ブロックというものがよくわかってないのですが、スタイルシートでdisplay:block;とした場合、インライン要素でもブロックレベル要素になるということでしょうか? タグによっては、「インライン要素を含むことはできません」などの制限のあるものがあると思いますが、スタイルシートでdisplay:block;として、インライン要素をブロックレベル要素にした場合はどうなるのでしょうか? またそもそも、元々ブロックレベルである要素と、display:block;によってブロックレベルにしたインライン要素は、同じと考えてもいいのでしょうか?

  • CSS
  • 回答数4
  • ありがとう数7

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

  • ベストアンサー
  • abril
  • ベストアンサー率69% (388/560)
回答No.4

> 元々ブロックレベルである要素と、display:block;によってブロックレベルにしたインライン要素は、同じと考えてもいいのでしょうか? 違います。HTMLの文法上のルールと、CSSのプロパティの性質は全く別の問題ですので、先ずはそこを切り分けて考えて下さい。 > スタイルシートでdisplay:block;とした場合、インライン要素でもブロックレベル要素になるということでしょうか? > スタイルシートでdisplay:block;として、インライン要素をブロックレベル要素にした場合はどうなるのでしょうか? HTML上インライン要素であるものは、あくまでインライン要素ですので、CSSでdisplayプロパティを変更したとしても、HTML文書としてそれぞれの要素に決められた文法に影響を与えるものではありません。 例えばインライン要素であるspanに対して"display: block;"を設定しても、HTMLのマークアップを下記の様にできるわけではないという事です。 【誤】 <span>内容<p>内容</p>内容</span> "display: block;"は、あくまでその要素が生成するボックスの”表示形式”に”ブロック要素としての性質”を持たせるだけです。 例えば、下記の様なマークアップがあったとします: <p>内容1<span>内容2</span></p> CSSで何もdisplayを変更していなければ: 【表示結果】(改行されずに内容1と内容2が続く) 内容1内容2 となりますが、spanのdisplayプロパティをディフォルト値のinlineから変更して"display: block;"と設定してあれば: 【表示結果】 内容1(改行) 内容2 と、「あたかもブロック要素の表示の様に」なるという事です。

3104kita
質問者

お礼

回答ありがとうございます!とてもわかりやすくて、htmlのブロックレベル要素とcssのblockについてがちゃんと整理できました!

その他の回答 (3)

  • MAN_MA_RUI
  • ベストアンサー率41% (426/1024)
回答No.3

インライン要素の中にブロック要素を含めないと言うのはHTMLの構造の問題だと思います。 単体でインライン構造を持った要素の中に単体でブロック構造を持った要素(タグ)を入れるなと言うだけで、インライン構造の中にブロック構造を含んではいけないと言う問題ではないんじゃないかな。

3104kita
質問者

お礼

回答ありがとうございました!参考にさせていただきました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

スタイルシートでいくらブロック要素化しても構造上の問題なので、 解決しません。 インライン要素を含むことができないタグには、一度ブロック要素の タグを入れ込んだ上でその中にインライン要素を書き込んでください。

3104kita
質問者

お礼

回答ありがとうございました!参考にさせていただきました。

  • gtrans
  • ベストアンサー率20% (3/15)
回答No.1

 それほどHTMLのエレメントの勉強をしたわけではありませんが、おおよそdivになると解釈して十分だと思います。  本来 block で無いものを block として扱いたい、そのために作られた機能と解釈すれば、インラインをブロック化できない方が変に感じるようになるかも知れません。  ところで今検索していて気がついたのですが、新しくinline-blockというブロック回り込みが追加されていたんですね。  何かの参考になるかも知れないのでURLを貼っておきました。

参考URL:
http://builder.japan.zdnet.com/sp/css-firefox-safari/story/0,3800083423,20372850,00.htm
3104kita
質問者

お礼

回答ありがとうございました!参考にさせていただきました。

関連するQ&A

  • CSSのブロックレベルとインラインレベル

    今CSSをやろうとしているのですが diplayタグがいまいちわかりません display:inline disilay:blockでは インラインレベル要素として使う ブロックレベル要素として使うと 参考書には書いてありました それでインラインとブロックレベル要素とはなんでしょうか? そもそも要素自体よくわかってないのですが この二つの違いがよくわかりません

    • ベストアンサー
    • CSS
  • CSSのdisplayプロパティについて

    スタイルシートのdisplayについてなのですが、ブロックレベル要素をインラインで表示したり、インライン要素をブロックレベルで表示するものですよね? ブロックレベル要素をインラインで表示する、というのはわかる気がするのですが、インライン要素をブロックレベル要素で表示する、というのはどういった時に、どういう理由で使用するのでしょうか? 同じくリスト項目として表示する(list-item)、などもリスト項目として表示するなら、はじめからhtmlでリストを作っておけばよいのでは?と思うのですが・・・。 初歩的な疑問かもしれませんが、どう使うものなのかよくわからないので、教えていただけるでしょうか? よろしくお願いします。

  • ブロックレベル要素

    こんにちは。ホームページをHTMLとCSSで作成しています。 W3Cのページで、スタイルシートを検証したのですが、 一つ一つのページにスタイルシートを記述して検証したときは、 合格が出たのですが、 外部スタイルシートにして検証すると、 ブロックレベル要素です。と、エラーがでてしまいました。 これはどういうことなのでしょうか? 外部スタイルシートにするのとしないのとで記述方法に違いがあるのでしょうか? また、どうすればいいのか教えていただけませんか? 初歩的なことで申し訳ありませんが、 いろいろなところで調べても分からなかったので、 教えていただけるとありがたいです。 よろしくお願いします。

  • 取得した要素がインライン要素かブロック要素かを判定する方法はないでしょうか?

    下の様に取得した要素が、インライン要素かブロック要素かを判断する方法はないでしょうか?  document.onclick = function(evt){   var e = evt?evt.target:event.srcElement;   for (i in e.parentNode.childNodes){    if(e.parentNode.childNodes[i].nodeType ==1 && e.parentNode.childNodes[i] != e){     if(e.parentNode.childNodes[i].style.display =="none"){      alert(e.parentNode.childNodes[i].tagName); /* ブロック要素かインライン要素かを判定したい!*/ /* インライン要素 */      e.parentNode.childNodes[i].style.display = "inline"; /* ブロック要素 */      e.parentNode.childNodes[i].style.display = "block";     }else{      e.parentNode.childNodes[i].style.display = "none";     }    }   }  }

  • 「インライン要素」と「ブロック要素」の違いは何

    SPANタグの意味を調べたくてググったら http://www.htmq.com/html/span.shtml を見たのですが、 divタグと、SPANタグの違いがよくわからないのですが、 「インライン要素」と「ブロック要素」の違いは何でしょうか?

    • ベストアンサー
    • CSS
  • ブロック要素を含むボックスを作るときの注意点は?

    現在お店のHPを製作中です。  で、リストや<h>や<div>の入ったボックスを組むのに<p>タグでくくったのですが、うまくいきませんでした。  これはブロック要素をインライン要素でくくってはいけないということだったようです。  そこで、ボックスの中にはブロック要素はなるべく入れないほうがいいのでしょうか?それとも同じくブロック要素のタグでくくってやれば特に問題はないのでしょうか?  なにぶんこの件で初めてブロック要素・インライン要素という言葉を知りました^^;  他にも注意するところがあったら教えてほしいです。  よろしくお願いします。

    • ベストアンサー
    • HTML
  • ブロックレベル要素の前後のスペース(余白)のことで

    ブロック要素の場合は、前後に改行が入るのはわかりましたが、同じブロックレベル要素でもpタグは前後に余白?空白行?が入ります。divやaddressも同じブロックレベル要素なのに、こちらは段落の前後にあきが出ません。 ブロックレベル要素に共通なのは、前後で改行されるということだけで、前後に1行?あいてしまうかどうかは、要素によってマチマチということなのでしょうか。 ※Win7、IE8使用

  • なぜbody要素はブロック要素しか内包できないのでしょうか?

    初めて質問いたします。 XHTML 1.0で妥当なマークアップを勉強し始めたのですが、なぜか気になってしまったことがあります。 仕様ではbody要素はブロックレベルの要素しか内包できないとされていると学んだのですが、どうしてなのでしょうか。 body要素が直接インライン要素を含むと、どんな不都合があるのでしょうか。 こんな質問をすること自体、意味のないことなのかもしれませんが、なぜかその理由を知りたくてたまらなくなってしまいました(苦笑) 変な質問で申し訳ありませんが、お教えいただければ幸いです。 よろしくお願いいたします。

  • XHTMLでは、インライン要素は必ずブロックレベル要素内に記述となっていますがこの場合は?

    XHTMLについて教えてください。 XHTMLでは、インラインレベル要素は、必ずブロックレベル要素内で記述されなければなりませんが、こういった場合(以下参照ください)の書き方は、どちらが正しのでしょうか? まずCSSを、 #hoge{ width:200px; background-color:#000000; } と設定したと仮定します。 で、XHTMLですが・・・ -----サンプル1----- <div id="hoge"> <p><img src="写真とか.gif" alt="" width="10" height="10" /></p> <h1>タイトル</h1> <p>テキストテキストテキスト・・・・・</p> </div> -----サンプル2----- <div id="hoge"> <img src="写真とか.gif" alt="" width="10" height="10" /> <h1>タイトル</h1> テキストテキスト </div> あと、ブロックid“hoge”内に一つだけインライン要素を配置する場合・・・ -----サンプル2----- <div id="hoge"> <p><img src="ボタン.gif" alt="" width="10" height="10" /></p> </div> -----サンプル2----- <div id="hoge"> <img src="ボタン.gif" alt="" width="10" height="10" /> </div> 要するに、CSSの設定を呼び出すために<div>で括っている場合は、それぞれのサンプル2のように既にブロックレベル要素内に収まっている」ということになるのでしょうか? それとも、やはり、サンプル1のよう記述するのが正しいのでしょうか? 説明が分かりにくくて申し訳ございませんが、ぜひアドバイスくださいますようお願いいたします。

    • ベストアンサー
    • HTML
  • display:block;を指定した置換要素の幅

    通常のブロック要素であれば親要素の幅まで広がりますが、 置換要素の場合display:block;を指定しても幅が広がりませんよね。 置換要素をブロック要素と同様な幅算出させる方法ってありますか? 具体的にはiPhone/Android向けのデザインでbuttonを親要素の横幅いっぱいにしたいのですが、 width:100%;だとbuttonにmarginを設定した場合にはみ出てしまうので使い勝手がよくないのです。 Firefoxの場合はwidth:-moz-available;を指定することで期待する挙動になるのですが、 webkitで似たようなことを実現する方法があれば教えてください!

    • 締切済み
    • CSS

専門家に質問してみよう