clear:both;で回りこみ解除する方法とは?

このQ&Aのポイント
  • clear:both;を使用して回りこみを解除する方法について知りたいです。
  • インライン要素でclear:both;を指定する方法について教えてください。
  • 回りこみを解除するために、<div>タグ以外でclear:both;を指定する方法を教えてください。
回答を見る
  • ベストアンサー

clear:both;を単体で指定

float:leftなどで回りこみを設定しました。その設定をclear:both;で解除する時に、インライン要素で指定したいです。 例えば、<div style="clear:both;"></div>で単体ですが、ブロックレベル要素です。 インライン要素で指定できますか?<span>ですと、解除できません。 <div style="float:left;">A</div> <div>B</div> <div>C</div> Cを回りこみさせたくないので、BとCの間にclear:both;を指定したいです。 <div style="clear:both;">C</div>ではない方法をお願いします。

noname#191253
noname#191253
  • CSS
  • 回答数3
  • ありがとう数1

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

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

 floatは、文章中に登場する画像が文章の可読性を妨げるため、画像の周囲に文章を回り込ませたり、複数の文章ブロックをウィンドウ幅に合わせて横並びの個数を変化させるためるために使うものです。素人さんがCSSを書き始めると、しばしば内容枠の配置に使用したりしていますが・・  したがってブロック要素以外で回り込み解除はHTMLが正しければ本来は必要ないはずです。それをしたいということは、HTML自体が誤っているのではないかと。  方法はいくつかありますが、そもそもfloatを使わなくても良い、使うべきでない場面ではないかと・・ ・デザインのためにマークアップするのではない文書構造にしたがってマークアップする ・正しいHTMLに対してCSSで、それぞれの媒体に対してスタイルシートでプレゼンテーション方法を決めていく。しばしば、mediaを指定しないスタイルシートも見かけますが、それだと読み上げソフトや点字端末、そして検索エンジンには???  どういう文書構造に対して、どのようにマークアップし、screen媒体に対してどのようなプレゼンテーションをしたいか

その他の回答 (2)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

HTML と CSS を正しく解釈する一般的なブラウザなら "clear:both;" をインライン要素に指定しても無効だよ。 そもそも、float: も clear: もブロック要素のためのスタイルだし。 「<div style="clear:both;"></div>」だとレイアウトが崩れたりするのだとおもうけれど、とりあえず、影響のありそうなスタイルをすべて 0 にした、こんなのはどうかな? <div style="clear:both;margin:0;padding:0;border:0;width:0;height:0;line-height:0;font-size:0;"></div> 問題が出ないようなら、少しずつスタイル設定を減らして、どのスタイルが原因なのかみつけると解決がはやいかも。 でも、[ANo.2] さんも指摘しているけれど、適切に構造化された HTML 文書に対して、適切に CSS をつければ、このようなやぼったくて気持ちのわるいことをしなくていいはず。

  • tracer
  • ベストアンサー率41% (255/621)
回答No.1

インライン要素にfloat指定したい理由、<div style="clear:both;">C</div>では不都合な理由を添えるべきかと。 多くの場合、「~したい」よりも「なぜそうしたいのか」の方が重要です。

関連するQ&A

  • clear: bothの事で質問です。

    XHTML+CSSを勉強してる初心者ですが。 この場を借りて質問させてもらいます。 判らない事は (1) <div style="background: #CCCCCC; height: auto; width: 700px;"> <div style="background: #888999; height: 100px;width: 300px;float:left;">画像</div> <div style="background: #999999; height: 300px;width: 400px;float:left;">画像の説明</div> <br style="clear: both;" /> (2) <div style="background: #CCCCCC; height: auto; width: 700px;"> <div style="background: #888999; height: 100px;width: 300px;float:left;">画像</div> <div style="background: #999999; height: 100px;width: 400px;float:left;">画像説明</div> <div style="clear: both;"></div> (1)と(2)では、 (1)は<br style="clear: both;" />と記入してますが (2)は<div style="clear: both;"></div>と記入してます。 この(1)と(2)は同じなのでしょうか? それと使うとするならどちらのほうが有効的なのでしようか? 教えていただければ光栄です。

    • 締切済み
    • CSS
  • firefox表示でclear: both;を指定した要素のマージンは強制的に0?

    ヒントだけでも頂けると助かるのですが float:left; で段組をしていて、その直下の <address> 要素で clear: both; しています で、IE と Opera だと通常に段組解除 & margin-top が取れるのですが firefox だと段組解除のみで margin-top がとれません。 これって回避方法ってありませんか? 多分 <hr style="clear: both;" /> でもいいんでしょうが 極力要素は減らしたいので <address> で解除+ margin-top を取りたいんです おわかりの方居ましたらよろしくお願いします

    • ベストアンサー
    • CSS
  • clear:bothなしで解除!?

    http://www.monexgroup.jp/ こちらのサイトのロゴにはfloat:left; よくある質問、お問い合わせにfloat:right; English 中文みにfloat:right; の設定がされていますが、その後にclear:both; の記述がどこにもされていないのですが、 どうやって回り込み解除なされてるのでしょうか? 探っていたのですが、まったくわかりません; 分かる方、どうかご教授お願いいたします><;

    • ベストアンサー
    • HTML
  • clear:both;を入れる箇所が分からない

    floatを使ったら 次の要素にclear:both;を入れないといけないと思うのですが たくさん使っていたら分からなくなってしまいました。 添付画像のようなサイトがありますが pやul liなどにfloatを使っていたら clear:both;を入れる要素がないように思うのですが どうすればよいのでしょうか。 一応、表示は崩れてはいないのですが なんだかすっきりしません… よろしくお願いします。

    • ベストアンサー
    • HTML
  • float の clear

    CSS によるレイアウトを試しています。 float を中断したいときにはその次の要素で clear=left|right する、というのは理解したのですが、この clear, 要素のネストを無視するのでしょうか。 たとえば次のソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>File Browser</title> <style type="text/css"> <!-- #leftside { background-color: #66FF00; float: left; width: 120px; height: 120px; } #rightside { background-color: #33CC99; margin-left: 120px; } #navlink .boxrow { float: left; height: 30px; width: 120px; background-color: #CC9999; margin: 5px; } #content { background-color: #CCFF99; height: 300px; clear: left; } --> </style> </head> <body> <div id="leftside"> </div> <div id="rightside"> <div id="navlink"> <div class="boxrow"></div> <div class="boxrow"></div> <div class="boxrow"></div> </div> <div id="content"> </div> </div> </body> </html> (rightside の要素の中なので)content の clear により navlink の直下に配置されて欲しいのですが、leftside の float まで clear してしまっているようです。 親の要素の中だけで clear することはできないのでしょうか?

    • ベストアンサー
    • HTML
  • clear bothで回り込みがうまく解除できません・・・。

    cssにて現在サイトを構成しています。 そこでお詳しい方がいらっしゃいましたらアドバイスを頂けたらと思います。 回り込みの指定解除なのですが、現在cssでbothの指定を行っています。名前はclearとします。 そこで、<br>に対してclass指定で、<br class="clear" />と記述するのですが、何か旨く解除し切れません・・・。 これをブロックレベルで、<p class="clear"></p>とすると旨く解除が出来ます。・・・でも空タグが出来るのでどうなのでしょうか??? ですが、時々<br class="clear" />でも、きちんと解除できるものもありますので、何か違いをつけて、インラインとブロックで解除を分けなければいけないのかな?と思いご質問させていただきました。 すみませんが、解除の仕方をアドバイス願います。 あと、これは余談な質問ですが、imgに対してマージンなどの指定を行ってもfirefox1.5で隙間が反映されません。 <img・・・・・ class="10px">(左右に10pxマージンを指定した場合)これはfirefoxのバグか何かでしょうか?はたまた私の定義に問題アリでしょうか? どうぞ、宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSでフローとした際の親要素の高さ

    CSSでfloatしたものって、親要素のheightに反映されません?ただ親要素に背景があって、反映されないと凄く困る感じで・・・。 それってどうやって回避すればいいでしょうか? 取りあえず <div style="width:750px;background:url(mainback.gif)"> <div style="float:left;width:300px;">左側</div> <div style="float:right;width:450px;">右側</div> <br style="clear:both;"> </div> のように、<br style="clear:both;">みたいにして取逃げたんですが、そもそも無意味なbrを入れるのもどうかと思うし。文法的にもbrにclearって微妙な気もするし、 なにか良い逃げ方ってないでしょうか?? ご存知の方、宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • [携帯]divで指定した背景色から画像がはみ出す。

    携帯用サイトを制作しているのですが、 <div style="clear:both;background-color:red;">    <img src="./images/icon.gif" width="64" height="64" align="left" style="vertical-align:middle;float:left;margin:5px;" />    <br />こんにちは </div> <div style="clear:both;~ と画像の横に文字が回りこんだとき、背景色が文字の部分にしかつかず、画像がはみ出した状態になってしまいます。 今回は1*1の透明なgif画像を使い、 <div style="clear:both;background-color:red;">    <img src="./images/icon.gif" width="64" height="64" align="left" style="vertical-align:middle;float:left;margin:5px;" />    <br />こんにちは       <div clear="all" style="clear:both;">          <img src="./images/space.gif">       </div> </div> <div style="clear:both;~ とすることで解消できたのですが、 参考にしていたサイトではどうやら画像を使わずに背景内に収めているようです。 後学のために、画像を使わず、背景から画像をはみ出さないように見せる方法を教えてください。よろしくお願いします。 docomoで動作確認しています。

  • floatをfooterに指定すると正しく表示ができない。

    floatをfooterに指定すると正しく表示ができない。 画像の(3)のようにfooterにfloat:leftを指定しなければ綺麗に表示されるのは分かります。ところが、画像の(1)や(2)のように、footerにfloat:left;を指定して、次の行で<div style="clear:left"></div>と指定して、footerにfloat:leftを指定しなかったのと同様の処理をすると、(1)や(2)のようにwidthに対して様々な現象が起きてしまいます。 (1)はwidthを指定しない場合、width:auto;を指定した場合に見られ、(2)はwidth:100%;とした場合にwrapperよりはみ出すという現象が起きます。なぜ、floatを指定しないのと指定後解除するのとで同様の結果が得られずに違った結果になるのでしょうか?わかる方いらっしゃいましたら回答宜しくお願い致します。 以下はソースでそのままエディタに貼り付けると表示できます。 <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>サンプル</title> <style type="text/css"> <!-- /* default.css */ #container { background:red; border:10px solid fuchsia; padding:10px; } #left { float: left; width: 200px; height:100px; background:yellow; } #right { float: left; border:5px #000 solid; width: 200px; height:200px; background:black; color:#FFF; } #footer { float: left; height:200px; background:blue; border:5px #000 solid; color:#FFF; } --> </style> </head> <body> <div id="wrapper">WRAPPER <div id="header">HEADER</div> <div id="container">CONTAINER <div id="left">LEFT </div> <div id="right">RIGHT </div> <br style="clear:left"/> </div> <div id="footer">FOOTER </div> <div style="clear:left"></div> </div> </body> </html>

    • ベストアンサー
    • HTML
  • floatのクリアについて

    以下のように「test1」,「test2」というclassを「test」の中で左右に 配置したのですが、一番最後のh2にあるclassのclearが反映されずfloatを 解除することが出来ません。(IEの7では解除できましたが、FireFoxの 3.0.11での解除が出来ません) 「test」の</div>直前に<br class="test3" />を入れると解除されるので すが、<br>を使わずに解除する方法はありますでしょうか? 現在の希望は以下の方法での解除か、「test1」にclearを設定し「test」を 下に続けて並べたいと考えています。 ご教授よろしくお願いします。 ■■■HTML■■■ <div id="test">    <div class="test1">       <img src="画像" width="100" height="100" />    </div>    <div class="test2">       <p>test2</p>    </div> </div> <h2 class="test3">test</h2> ■■■CSS■■■ #test { width: 500px; margin: 0 0 20px 0; } .test1 { float: left; width: 100px; margin: 0 10px; padding: 0; } .test2 { float: left; width: 380px; margin: 0; padding: 0; } .test3 { width: 500px; clear: both; }