• ベストアンサー

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
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
noname#19175
noname#19175
回答No.2

CSS1(CSSバージョン1)では<br>にもclearを使えますが、 CSS2では、clearはブロック要素に指定しなければなりません。 <br>に対してclear:both等を指定するのは、HTML3.2からの<br clear="all">などに関係していると思いますが、CSS2では間違った使い方です。 XHTMLではCSS2になる(またはブラウザ依存?)と思うので、<br>に対してclearは使えません。 その下にブロック要素を書いているはずですから、そこにclass="clear"を指定して下さい。 わざわざclearするためだけのタグを書く必要はありません。 たとえば <p><img src="" style="float:left" />1行目<br />2行目<br style="clear:both;" />3行目</p> <p>段落</p> 3行目の前でclear:leftしたいと思っても、CSS2では、そういうデザインは禁止のようです。 以下のように強引に段落を分けることで対応出来ます。 (ただし、論理構造が崩れます。 その方が問題ありでしょうけど、HTMLチェッカーやCSSチェッカーで減点はされません(´・ω・`) 何か別の対処方法があれば、教えて下さい>識者の方 デザインを優先するなら、私は一部のHTMLチェッカーに減点されてでも(XHTMLではなく)HTMLを使って<br clear="all">を使うか、<br>にスタイルを当てる方をおすすめします。) <p><img src="" style="float:left" />1行目<br />2行目</p> <p style="clear:both;">3行目</p> <p>段落</p> > <img・・・・・ class="10px">(左右に10pxマージンを指定した場合)これはfirefoxのバグか何かでしょうか?はたまた私の定義に問題アリでしょうか? 記述に問題ありです。 詳細はANo.1をご参考に。。。

yuyukina
質問者

お礼

talooさん有難う御座います。 >CSS2では、clearはブロック要素に指定しなければなりません。 そうなのですね、初めて知りました・・・。 >3行目の前でclear:leftしたいと思っても、CSS2では、そういうデザインは禁止のようです。 むむむ・・、この様な定義が禁止となると、根本的に厳格な構造の定義が必要ですね・・・。 大変勉強になります。

その他の回答 (2)

  • bunoo
  • ベストアンサー率60% (3/5)
回答No.3

あまりお勧めしないのですが、clearするためだけのdivタグを作って、 ----------------------- div.hidari{ float:left; } div.migi{ float:right; } div.kaijo{ clear:both; } ----------------------- <div class="kaijo"> <div class="hidari"> 文書左 </div> <div class="migi"> 文書右 </div> </div> ----------------------- のようにすることが出来たと思います(多分)。 ただ、確かこれはあまりほめられた方法ではなかったような気がします。参考URLも一応書いておきます。

参考URL:
http://www.2step-css.com/
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

とりあえず、IDやclassの名称で数字からはじめるのは やめましょう。 10px→px10とかでかまわないので。 もしclassの使い方を間違えていて、 clearというclassもstyleや外部ファイルで きちんと宣言されていないのでは? 関係箇所だけでも具体的にどのようになさっているか 例示すると適切な指摘がつくかもしれません

yuyukina
質問者

お礼

有難う御座います。 class名は数字ではありません。 css部分は以下になります。 .clear { clear: both; } この様に単体でクリアを用いること自体が問題なのでしょうか・・・。

関連するQ&A

  • 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; }

  • 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>ではない方法をお願いします。

    • ベストアンサー
    • CSS
  • floatを使って画像にテキストを回り込ませて解除する時

    floatを使って画像にテキストを回り込ませて解除する時 clear:both;などを使うけど、テキストの量が少ないと上手く解除されないですよね。そのとき、下記のようなCSSを書くのですが、これだとMacのIEではうまいこと解除できていません。 どう書いたら良いでしょうか? 【HTML】 <div class="box"> <img> <p>テキスト</p> </div> 【CSS】 div.box { zoom: 100%; background-color: #CCC; padding: 10px; width: 500px; } div.box:after { content: " "; clear: both; height: 0; display: block; visibility: hidden; } div img { float: left; }

    • 締切済み
    • CSS
  • CSSテキストの回りこみ解除について

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> CSSでサイトをつくっています。 写真の右にテキストを回り込ませるのにfoat:leftをimgに指定しているのですが、 <div style="clear: both;"> <br style="clear: both;"> で解除すると、Firefoxで下に200pxくらいの余白ができてしまいます。(IEは問題ありません) そこでbothをallに変えると、Firefoxでもきちんと表示されるのですが、allはHTML 4.01は非推奨とのこと。 テキストの回りこみはどのようにすればうまく行くのでしょうか?

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

    フロートのクリアについて 下記のように設定しているのですが、<p class="mp0" style="clear:both; "></p>でフロートをクリアしています。 このやり方以外でフロートを解除する方法はあるでしょうか? (dlの中でpを使うのはあまり良くない?ようなので) .blocks にclear:bothを設定しても、dl全体の高さが認識されないようで、ボーダーがボックスの下にきてくれません。 ちなみに、class"mp0"となっているのは下で記載はしていませんがマージンとパディングを0に設定しています。 <div id="special_area"> <p class="mp0"><img src="*****"></p> <dl class="blocks"> <dt class="blocks_ico"><a href="#"><img src="***"></a></dt> <dd class="blocks_text"> <p class="blocks_catch"><a href="#">あああ</a></p> <p class="blocks_title"><a href="#">いいい</a></p>   <p class="blocks_com"><a href="#">ううう</a></p> <p class="blocks_go"><a href="#"><img src="***"></a></p> </dd> <p class="mp0" style="clear:both; "></p> </dl><!-- blocks --> <dl class="blocks"> <dt class="blocks_ico"><a href="#"><img src="***"></a></dt> <dd class="blocks_text"> <p class="blocks_catch"><a href="#">かかか</a></p> <p class="blocks_title"><a href="#">ききき</a></p>   <p class="blocks_com"><a href="#">くくく</a></p> <p class="blocks_go"><a href="#"><img src="***"></a></p> </dd> <p class="mp0" style="clear:both; "></p> </dl><!-- blocks --> </div><!-- special end --> css #special_area{ float:right; width:390px; } .blocks{ padding:15px 20px; border-bottom:dotted 1px #bbb; } .blocks_ico{ float:left; width:85px; height:85px; padding:0; } .blocks_text{ float:right; margin:0; width:250px; } .blocks_catch{ margin:0; line-height:1.2; font-weight:bold; color:#333; } .blocks_title{ margin:0; font-weight:bold; font-size:160%; font-size:16px; color:#333; } .blocks_com{ margin:3px 0; line-height:1.1; color:#333; } .blocks_go{ margin:0; }

    • ベストアンサー
    • HTML
  • CSSでの回り込みの解除について

    1つのブロック要素の中でPタグで写真を配置してfloatで回り込ませ、任意のPタグで解除させたい場合、<div class="clear"><hr /></div>と該当のPタグで<p class="clear">するのはどちらがよいのでしょうか? clearについてのCSS .clear { clear:both; } .clear hr { display:none; }

    • ベストアンサー
    • HTML
  • HTML&CSS DIVをぴったりと縦に並べたい

    HTML&CSS初心者です。 下記のソース様に、DIVで一つにまとめたBOXを縦に並べたいのですが、 「見出し002」の上のマージンがうまく取れずに困っています。 .box内のphoto00.jpgをフロートにしている為、フロートが悪さをしている事を考え、 「見出し002」の上のDIV内に<br style="clear: both;" />を入れると、余白が生まれるのですが、 MacのSafariとFirefoxでは、余白の差が出てしまいます。(Safariの方が余白が大きい) <br style="clear: both;" />を入れないと、上のマージンはほぼ消えてしまい、わずかにFirefoxの方では余白が生まれます。 ちなみにこの現象は「ここにテキストが入ります。」の行数を減らすと解決するのですが、 下記のソースでも、photo00.jpgの高さをはみ出す行数ではない為、この<div class="box">に 変な膨らみを持たせたくありません。 どなたか解決法を教えて下さい。よろしくお願い致します。 【HTML】 <div id="main"> <div class="mds01"><h3><em>見出し001</em></h3></div> <div class="box"> <img src="img/photo00.jpg" width="155" height="108"> <h5>小見出し</h5> <p class="txt">ここにテキストが入ります。<br><br> ここにテキストが入ります。<br> ここにテキストが入ります。</p> </div> <div class="box"> <img src="img/photo00.jpg" width="155" height="108"> <h5>小見出し</h5> <p class="txt">ここにテキストが入ります。<br><br> ここにテキストが入ります。<br> ここにテキストが入ります。</p><br style="clear: both;" /> </div> <div class="mds02"><h3><em>見出し002</em></h3></div> <div class="box"> <img src="img/photo00.jpg" width="155" height="108"> <h5>小見出し</h5> <p class="txt">ここにテキストが入ります。<br><br> ここにテキストが入ります。<br> ここにテキストが入ります。</p> </div> </div> 【CSS】 /*メイン大枠部分*/ #main { margin: 0px; padding: 0px; width: 627px; float: right; background: #FFFFFF; height: auto; } /*各見出し*/ .mds01 h3 { background: url(img/mmds01.gif) no-repeat; margin: 25px 0px 15px; padding: 0px; height: 20px; width: 587px; font-size: 9px; color: #FFFFFF; clear: left; float: none; } .mds02 h3 { background: url(img/mmds02.gif) no-repeat; margin: 25px 0px 15px; padding: 0px; height: 20px; width: 587px; font-size: 9px; color: #FFFFFF; clear: left; float: none; } /*ボックス*/ .box { margin: 0px; padding: 0px; height: auto; width: 587px; clear: left; } /*ボックス内・画像とテキスト*/ #main .box img { float: left; padding-right: 10px; } #main .box h5 { font: bold 14px "MS Pゴシック", Osaka; color: #022962; margin: 0px 0px 10px; padding: 0px; } .txt { font: normal 13px/16px "MS Pゴシック", Osaka; color: #333333; margin: 0px; padding: 0px; } em { visibility: hidden; }

    • ベストアンサー
    • HTML
  • 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
  • CSSのfloatの回り込み解除について

    現在は、<dt>にfloat:leftを指定して、.clearを作成し、<div class="clear"></div>で解除しています。 ただ最近floatを頻繁に使うようになり、<div class="clear">が多くなってしまいどうにかならないか探しているところです。 私がやりたい事は、<dl>に直接clear属性を付属できないかです。 これができれば、回り込み解除の指定がいらなくなるので、助かるのですが、<dl>に入れると、<dt>のfloatも解除されてしまいます。 下記がサンプルソースです。 CSS: dl {clear:both;} dt {float:left;width:130px;border:solid 1px #CCC;} HTML <dl> <dt>SAMPLE</dt> <dt>SAMPLE</dt> <dt>SAMPLE</dt> </dl> <p>clearを設置しなくても回り込み解除</p> これが理想です。 やはり、clearは別で設置しなければならないんでしょうか?

    • ベストアンサー
    • HTML
  • <br style="clear:both;">っておかしくないですか?

    私は初心者でよく分からないのですがお尋ねします。 ホームページを作っていて、firefoxなどでメインのboxに高さが反映されません。(メインboxの中は3カラムです)で、とあるWEBサイトで<br style="clear:both;">を最後に記述すればOKと書いてあったので、早速やって見ました。 するとアラ不思議、本当に反映され、高さも表示されたのですが、この<br style="clear:both;">という表記って何かおかしくないですか?<br>にstyleですか・・・。 これはWC3的にはどうなのでしょうか??? 推奨されていますか? もっといい方法があれば教えていただきたいのですが・・・。

    • ベストアンサー
    • HTML

専門家に質問してみよう