• ベストアンサー

HTML5での段組

以前、こちらでHTML5では段組を意識しないで済む 工夫が用意されていると見かけました。 現在、div.fig{width:500px;float:left}・・・ とかで段組しているサイトが圧倒的かと思います。 このfloat:leftがなくなって専用の何かができると 思っているのですが、具体的にどう変わりますか?

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

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

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

 複数のブロックを「段組もどき」で配置することと、記事を段組することの違いはきちんと区別してください。本来の段組は、長い記事を一行80文字とかで表示すると目で追うのが大変なので、40文字の二段に段組して、二つの段にテキストを流し込むことを言います。そとと3では、それが用意されます。 CSS Multi-column Layout Module ( http://www.w3.org/TR/2011/CR-css3-multicol-20110412/ )  これは、文書構造上、記事自体は連続しているものをプレゼンテーションで二段に分けるという問題なので、HTMLではなくCSSで指定すべきですから、HTML5だろうとHTML6だろうとHTMLには用意されないでしょう。  さて、本題のブロックを並べる方法ですが、HTML5で <body>  <header>  </header>  <section>   <h2>記事見出し</h2>   <div id="tableContent"><!-- 目次 --></div>   <section>    <h3>章見出し</h3>    ・・記事・・   </section>   <section>    <h3>章見出し</h3>    ・・記事・・   </section>   <section>    <h3>章見出し</h3>    ・・記事・・   </section>  </section>  <footer>   <nav id="sitmap"></div>  </footer> </body> というHTMLがある場合、body>section内のdiv.tableContentは、body>sectionの左横に置き、footer navは、ページの右に置く。本文の章はウィンドウの巾によって一段から3段に段組して表示する・・・なんてことが、文書構造を変更せずに出来るようになるでしょう。  

flyingbee
質問者

お礼

ソースまでご提供頂き、まことに済みません。 段組とdivブロックを並べることの違いは、以前にお聞きして把握しています。 一般企業としてはやはりdivブロックを並べたレイアウトに関心があります。 用語で専門家の方と齟齬が生じたのは申し訳ありません。 他の用語も全く思いつかなかったので敢えて段組と表現しました。

その他の回答 (2)

  • tep0607
  • ベストアンサー率0% (0/1)
回答No.2

ボックスを並べるためのfloatはほぼ必要なくなります。 displayの属性にboxという要素が追加されています。 #aaa{display:box;} と言う要素を持った親要素を作成した場合、 子要素のボックス要素(主にdiv)はfloatをかけなくても 横幅が余っていれば、回り込んで配置されます。 さらに、heightも並んでいる要素の中で最も大きい要素と自然に揃えてくれます。 IEの対応が待ち遠しいですね。

参考URL:
http://www.css-lecture.com/log/css3/css3-layout-box.html
flyingbee
質問者

お礼

どうも情報提供有り難うございます。 これだと教えてgooのようなサイドメニューとかには 対応できそうもありませんが、 取り敢えずclearfix系の呪縛からは解放されそうですね。 HTMLにはまだ完全に慣れきってないので 頓珍漢なことを言っていたらご指摘お願いします。

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

HTML5自体で変わるわけではありません。 HTML4.01で <body>  <div class="header">   <div class="nav"></div>  </div>  <div class="section">  </div>  <div class="figure">  </div> </body> だったものが、 <body>  <header>   <nav></nav>  </header>  <section>  </section>  <footer>  </footer> </body> と文書構造を示すclass名をつけなくても、文書構造を示せる要素が導入された以上の変更があるわけではありません。 「DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.4 )」 ↓ 「HTML5 では、文書をよりよく構造化するために、次の要素が新しく追加されました。 ( http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff/#new-elements )」  段組(Columns)とは、本来の意味は文字通り段組です。新聞記事が段組されているため一行の文字数を長くしないで何段もの段に自動的に文字が振り分けられて並べることが本来の段組です。HTML(Web)において多用されるtableやabsoluteを使用する方法は、本来の段組ではありません。  HTML5で段組をというのは誤解で、CSS3で「段組が可能になった」を誤解されているのではないですか?  CSS3で導入されるcolumns(column-width,column-count)、column-rule(column-gap,column-rule,column-rule-color,column-rule-style,column-rule-width)、break-after,break-before,break-inside、column-span,column-fillと言った段組に関わるプロパティは、本来の意味での段組です。 <div style="width: 600px;column-width:290px;"> <p>・・・</p> <p>・・・</p> ・・・・ </div> で、 ・・・・・・・・・  左下より・・・・・・ ・・・・・・・・・  ・・・・・・・・・・ ・・・・・・・・・  ・・・・・・・・・・ ・・・・・・・・・  ・・・・・・・・・・ ・・・・・・・・・  ・・・・・・・・・・ ・・・・・・・・・  ・・・・・・・・・・ ・・・・・・右上へ  ・・・・・・・・・・ のように段組されます。  以前、floatによる段組について - Webデザイン・CSS - 教えて!goo ( http://okwave.jp/qa/q7079628.html#a3 )で回答したことがあるのですが、確かにfloatで配置する方法が多いのは事実ですが、本来はabsoluteで配置するほうがよいと思っています。それは、上記リンク先で参照しているWikiの記事の「Webデザインにおける段組 ( http://ja.wikipedia.org/wiki/%E6%AE%B5%E7%B5%84#Web.E3.83.87.E3.82.B6.E3.82.A4.E3.83.B3.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E6.AE.B5.E7.B5.84 )」に詳しいので省きます。  いずれにしても、 [本来の段組--次の段にテキストを回り込ませる]を、文書構造を崩さずに、きちんと段組をするためには古いブラウザを無視してCSS3でデザインすると言うことになると思います。

flyingbee
質問者

お礼

ご回答有り難うございます。 そういえばリンク先でも私も回答してますね^^; 以前から時折ROMっていたので ORUKA1951さんがabsolute派というのは知っています。 それでORUKA1951さんがよく仰っていた sectionやarticleやfigureといったタグに段組の仕組みが あるのかなと思ったのですが、そうでもないらしい。 段組をどのように文書構造に反映させていくんだろうと思ってました。 段組はあくまでレイアウトということですね。 columnsという属性で指定していくのですか。 HTML5で段組が可能になったというのは 他のベテランの方の記述を見て、そうなのかと思いました。 ただ、その時は漠然と認識していたため、勘違いがあるかもしれません。

関連するQ&A

  • CSS:floatを使っての段組で困っています

    図のような段組をしたいのですが、ソースはあっているでしょうか? サイトを作成しているとズレたりするので、根本的な段組が間違っているのか見て頂けると助かります。 ■HTML <body> <div id="container"> <div id="box-2">box-2</div> <div id="box-3">box-3</div> <div id="box-4">box-4</div> <div id="box-5">box-5</div> <div id="box-6">box-6</div> <div id="box-7">box-7</div> <div id="box-8">box-8</div> </div> </body> ■CSS body { margin: 0 auto 0 auto; padding: 0px; height:100%; } #container { width: 800px; } #box-2 { float: left; width: 800px; height: 30px; } #box-3 { float: left; width: 400px; height: 300px; } #box-4 { float: left; width: 400px; height: 300px; } #box-567 { clear:left; float: left; width: 800px; } #box-5 { float: left; width: 300px; height: 200px; } #box-6 { float: left; width: 300px; height: 200px; } #box-7 { float: left; width: 200px; height: 200px; } #box-8 { clear:left; width: 800px; }

    • ベストアンサー
    • HTML
  • スタイルシートで上手く段組が出来ません。

    スタイルシートで段組をして、いわゆる擬似フレームのHPを作りたいのですが、いまいち上手く出来ません。 下の画像の赤紫部分(HTML内ではtopsとしている部分)も分割して、全部で5つのフレームに分けたいのですが、そこを分割しようと <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"> <!-- body { margin:0px; padding:0px; } #top { width:450px; height:200px; float:left; background-color:#cc6600; } #tops { width:300px; height:200px; float:left; background-color:#cc5555; } #left { width:250px; height:600px; clear: both; background-color:#ff9933; } #right { width:500px; height:600px; float:left; background-color:#ffcc66; } #under { width:750px; height:10px; clear: both; background-color:#ff9955; } --> </style> </head> <body> <div id="top"></div> <div id="tops"></div> <div id="left"></div> <div id="right"></div> <div id="under"></div> </body> </html> というタグを打つと、topsの部分はちゃんと回り込んでくれるのですが、画像のように、回り込みを解除したleftの横のrightがちゃんとfloat:left;と打ち込んでいるのにも関わらず、leftの下にいってしまうのです。 どうしたらちゃんと5つに分割出来るのでしょうか? よろしくお願いしますm(_ _)m

  • HTMLのCSS(float)の設定がよくわかりません

    HTMLのCSS(float)の設定がよくわかりません 画像のように各配置はうまく表示されているのですが footerのCSSを #footer { width: 100%; float: left; clear: both; } と表記するとwrapperのCSSで表記した外枠のボーダーが footerの前で切、footerの左横に1px~2pxの隙間が できてしまうのですが、その理由をわかる方いらっしゃいますか。 宜しくお願い致します。 footerの表記を #footer { width: 100%; clear: both; } とすると、ボーダーも1pxの隙間もなく正常に表示されます。 宜しくお願い致します。 ■HTML <html> <body> <div id="wrapper"> <div id="header"></div> <div id="container"> <div id="left"></div> <div id="right"></div> </div> <div id="footer"></div> </div> </body> </html> ■CSS #wrapper { width: 700px; border-right-width: 1px; border-left-width: 1px; border-right-style: solid; border-left-style: solid; border-right-color: #000; border-left-color: #000; } #container { overflow: hidden; } #left { float: left; } #right { float: left; } #footer { width: 100%; float: left; clear: both; } わかる方いらっしゃいましたら 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • テキストの段組み

    テキストを2段で表示させ、全体を1pxの線で囲みたいと考えています。 【CSS】 .width_border{ width:300px; border:1px solid #222; } .width50{ width:50%; float:left; } 【HTML】 <div class="width_border"> <p class="width50"> 左のテキスト </p> <p class="width50"> 右のテキスト </p> </div> としていますが、IEでは全体に1pxの枠がつけられますが、FirefoxやOperaではdivの先頭の部分だけ線がつき、全体に囲うことができません。 どうすればいいかよいか御教授お願いいたします。

    • ベストアンサー
    • HTML
  • HTML、CSS が、なかなかうまくいきません。

    お世話になります。 HTMLを始めたばかりですので、 ご教授いただけたら幸いです。 以下の図のような感じに並べたいのですが、 なかなかうまい具合にいきません。 黄色は、全てボタンになります。 赤は、ボタンについた吹き出し部分となります。 上段の2つのボタンは、やや大きい感じのボタン。 下段の3つのボタンは、上段に比べて、少し小さい感じのボタンになります。 ボタンは、上段(A)と下段(B)で、 HTML と CSS は、分けようかと考えています。 【HTML】 <div class="Button"> <div class="contents"> <div class="Button_boxA clearfix"> <div class="Yellow_Btn_01"><img src="img/Yellow_Btn_01.png" width="200" height="75" /> </div> <div class="Yellow_Btn_02"><img src="img/Yellow_Btn_02.png" width="200" height="80" /> </div> </div> <div class="btn_boxB clearfix"> <div class="Yellow_Btn_03"><img src="img/Yellow_Btn_03.png" width="100" height="60" /> </div> <div class="Yellow_Btn_04"><img src="img/Yellow_Btn_04.png" width="100" height="65" /> </div> <div class="Yellow_Btn_05"><img src="img/Yellow_Btn_05.png" width="100" height="60" /> </div> </div> </div> </div> 【 CSS 】 div.Button{ width:600px; margin-top:20px; margin-right:auto; margin-left:auto; padding-right:25px; } div.btn_boxA{ width::500px; margin-left:auto; margin-right:auto; margin-bottom:10px; } div.low_btn_01{ width:200px; height:75px; margin-left:auto; margin-right:auto; margin-bottom:10px; float:left; } div.low_btn_02{ width:200px; height:80px; margin-left:auto; margin-right:auto; padding-left:25px; margin-bottom:10px; float:left; } div.btn_boxB{ width::500px; margin-left:auto; margin-right:auto; margin-bottom:10px; } div.low_btn_03{ width:100px; height:60px; margin-left:auto; margin-right:auto; margin-bottom:10px; padding-left:25px; float:left; } div.low_btn_04{ width:100px; height:65px; margin-left:auto; margin-right:auto; margin-bottom:10px; padding-left:25px; float:left; ] div.low_btn_05{ width:100px; height:60px; margin-left:auto; margin-right:auto; margin-bottom:10px; padding-left:25px; float:left; } 長ったらしくなってしまいましたが、 ご教授いただけたら、幸いです。 宜しくお願いします。

    • 締切済み
    • CSS
  • CSSの段組で要素がかけてしまいます

    いつもお世話になります。 今CSSで段組をしています。 #content{ width:780px; height:auto; } #content{ float:left; width:440px; padding-left:20px; padding-right:20px; } #menu{ float:right; width:440px; padding-right:20px; } で左右のボックスを作り、 それぞれにテキストや画像などの子要素を入れていきます。 html <body> <div id="content"> <div id="main"> <div class="sub1"> </div> <div class="sub2"> </div> </div>  <div id="menu"> <div class="sub3"> </div> <div class="sub4"> </div>   <div class="sub5"> </div> <div class="sub6"> </div> </div> </div> </html> という具合です。子要素(sub)には高さ指定はしていません。 問題なのは、 firefoxでは子要素がきちんとおさまるのですが、 IE(6,7とも)右の3番目(sub5)の要素が欠落し、(飛ばされている感じ) safariでは右の4番目(sub6)の要素が右の1番上の要素にかぶって表示されます。 どうしたらいいでしょう?どなたかご教授ください。 質問に慣れていないので、もし補足が必要であればお願いします。

  • スタイルシートを使って段組でのバディングは?

    書籍にのっていたスタイルシートでの段組を 次のように記述してみました。 <DIV style="float:left;border-right:3px dashed #000000;width:50%;padding-left:10px;"> ○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○ </DIV><DIV style="padding-left:10px">  ○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○ </DIV> 中央に点線が入って文章が左右に分けられるのですが、 文字と中央線の余白がないので、paddingやmarginを使って みたのですが、特に右側文章の左にある点線と文字の空間がどうしてもできません。(左側部分のの左右余白は機能するのですが) tableを使ったときはpadding-leftで設定できたのですが、正しい方法がありましたらお教えください。 書籍にもここらへんの説明がないのです。

  • カラムで段組と段組の間に隙間が埋ができる

    カラムで段組と段組の間に隙間ができてしまい無くせません。 menuとtop,accsentなどの間に隙間ができてしまいます。 助けてください。 style.css /*html ボディー*/ html{height:100%; overflow:hidden;} body{ margin:0px;height:100%; width: 100%; font-family:"HG正楷書体-PRO","HG行書体","HGP行書体",cursive;} .cur{font-family:cursive;} .ser{font-family:serif;} /*フレーム スタイル*/ div#menu{float:left; width:100px; height:100%; background-color:#666633;} div#top{height:10%; width:; background-color:#ff9933;} div#accent{height:3%; width:; background-color:#999933;} div#navi{height:6%; wsidth:; background-color:#ff9933;} div#main{margin-left:100px; height:; width:; background-color:#ffff99;} div#base{position:relative; width:100%; height:91%; background-color:#ffff99;} div#bottom{clera:both; height:9%; width:100%; background-color:#999933; } HTMLのほうは <HTML> <HEAD> <meta http-equiv="Content-Style-Type" content="text/css"> <link rel="stylesheet" href="style.css" type="text/css"> <TITLE></TITLE> </HEAD> <BODY> <div id="base"> <div id="menu"> menu </div> <div id="top"> top </div> <div id="accent"> accent </div> <div id="navi"> navi </div> <div id="main"> main </div> </div> <div id="bottom"> bottom </div> </BODY> </HTML> このような感じになります お願いします。

    • ベストアンサー
    • HTML
  • CSS 段組で要素が表示されません

    いつもお世話になります。 今CSSで段組をしています。 #content{ width:910px; height:auto; } #content{ float:left; width:440px; padding-left:10px; padding-right:10px; } #menu{ float:right; width:440px; padding-right:10px; } で左右のボックスを作り、 それぞれににsubを作ってテキストや画像などの子要素を入れていきます。 htmlは <body> <div id="content"> <div id="main"> <div class="sub1"> </div> <div class="sub2"> </div> </div>  <div id="menu"> <div class="sub3"> </div> <div class="sub4"> </div>   <div class="sub5"> </div> <div class="sub6"> </div> </div> </div> </body> という具合です。子要素(sub)には高さ指定はしていません。 問題なのは、 firefoxでは子要素がきちんと表示されているのですが、 IE(6,7とも)右の2番目(sub4)の要素を表示せず、(飛ばされている感じ) safariでは右の4番目(sub6)の要素が右の1番上の要素にかぶって表示されます。 全体の高さとしては右側の段組の方が高さがあります。 実際にはそれぞれのsubにテーブルやテキスト、画像などが入っています。 何が原因でしょう?どなたかご教授ください。 質問に慣れていないので、もし補足が必要であればお願いします。

  • 段組みレイアウトがfloatleft上手くいきませ

    先程の投稿は、一度削除させて頂きました。 再度、投稿しなおします。 なんとか、以下の画像のところまで持ってくることが出来ました。 おかしなところ。 Q1 hedderの上に隙間10pxが出来てしまっている(本来は、黄色の色が一番上0pxの所まで持って行きたいです) Q2 全体が、centerに行かない、、、。左によってしまっております。 以上2点です。 宜しくお願いします。 失礼致します。 こんにちは。ycqと申します。 html+CSSでサイトを作っています。 簡単に段組みレイアウトを作って、CSSで色を付けてみるのですが、レイアウトが崩れてしまっています。ソースを修正したりしたのですが、原因を見つけることが出来ませんでした。 heightは基本的に autoでも構いません。 #wrapper 950px #head 950px #main 950px (mainの中に) #main_left と#main_right があります。 #main_left 250px で左側メニューfloat:left; #main_right 700px で右側に回り込ませるために、きっちりと float:left; #main_right の中には #right_box_flash #contents #fotter が入ります。 |----------------------| |----|-----------------| | | | | |-----------------| | | | | |-----------------| |___|____________| 画像も添付させて頂きます。それぞれのボックスにたいして、CSSで色を付けております。 おかしい所がございますでしょうか? Q レイアウトがCenterを指定しているのに、真ん中にいかない。 Q #hedder の上部に10pxぐらいの空白ができている。margin:0px; padding:10px指定 お時間がございましたら、どうぞ、宜しくお願いいたします。 失礼致します。 index.html*************************** <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>hogehoge</title> <link href="css/default.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="wrapper"> <div class="header"> <h2>header</h2> </div> <div class="main"> <div class="main_left"> </div> <div class="left_box_menu">   <h2>left_box_menu</h2> </div> </div> <div class="main_right"> <div class="right_box_flash"> <h2>right_box_flash</h2> </div> <div class="contents"> <h2>contents</h2> </div> <div class="footer"> <h2>footer</h2> </div> </div> </div> </div> </div> </body> </html> **************************************** default.css*********************************** @charset "utf-8"; /* CSS Document */ /*------------------------------*/ 共通設定 /*------------------------------*/ * { margin: 0; padding: 0; line-height: 1.6; font-family: "メイリオ","MS Pゴシック", "ヒラギノ角ゴ Pro W3"; list-style-type: none; } img{ border:none; } body{ margin: 0; padding: 0; text-align:center; background-color:red; } /*------------------------------*/ 大枠ボックス構成 /*------------------------------*/ .wrapper{ width:950px; height:1015; margin:0px auto; padding:0px;background-color:orange; } .header{ width:950px; height:100px; background-color:yellow; } .main{ width:950px; background-color:purple; } .main_left { width:250px; height:915px; margin:0px auto; padding:0px; float:left; background-color:DarkgGldenRod; } .left_box_menu{ width:250px; height:auto; float:left; background-color:khaki; margin:0px auto; padding:0px; } .main_right{ width:700px; height:auto; float:left; } .right_box_flash{ width:700px; height:300px; float:left; background-color:pink; } .contents{ width:700px; height:280px; float:left; background-color:blue; } .footer{ width:700px; height:115px; float:left; background-color:yellow;

    • ベストアンサー
    • CSS