プロが教える店舗&オフィスのセキュリティ対策術

ブロック要素のフロートについて質問します。

.1{ float:right; }
.a{ width:200px; }
.b{ width:50px; float:left; }
.c{ width:50px; float:left; }

<div class="1">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>

|              [      A     ] |
|              [ B ][ C ]      |

上記を下記のようにしたいのですが、思うようにできません。

|              [      A     ] |
|                   [ B ][ C ] |

全体を右寄せに、かつB,Cも右寄せです。
B,Cに float:right; を指定すると、[ C ][ B ] と、Cの右側にBが来てしまいました。

一応自分なりに試行錯誤して、

.1{ float:right; }
.2{ clear:both; }
.a{ width:200px; }
.b{ width:50px; float:left; }
.c{ width:50px; float:left; }

<div class="1">
<div class="a">A</div>
</div>
<div class="2">
<div class="1">
<div class="b">B</div>
<div class="c">C</div>
</div>
</div>

上記の書き方で希望の表示にはなりましたが、もっと簡単な方法があるのでは?と思って質問しました。
どうぞ宜しくお願いします。

A 回答 (2件)

最初のソースを利用すると


.a1{ float:right;}
.a{ width:200px; }
.b{ width:50px; float:left;margin-left:100px; }/*★200-50-50=100★*/
.c{ width:50px; float:left; }

<div class="a1">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
</div>

でいかがでしょうか?
文章構造を見た目になるように変更するのは文章構造と視覚デザインの分離の原則に反します。clearの為にdivやクラス名を追加するのは好ましくありません。ので、お気づきのように第2案はよくないです。

最初のソースに1つだけ加えました。但し、class名「1」は文法違反です。クラス名・ID名ともにアルファベットで始めなければなりません。[1]だと解釈しないブラウザもありますので、便宜上a1としました。


★蛇足
また、第2案ですが、
<div class="1">
<div class="a">A</div>
</div>
<!--これ消す
<div class="2">
-->
<div class="1 2"><!-- スペースを空けて、クラス名をいくつでも追加できます -->
<div class="b">B</div>
<div class="c">C</div>
</div>
<!--これ消す
</div>
-->
というように、1つの要素にクラス名はいくつでも入れられますので、今後覚えておいても損はないと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
マージンをマイナスで指定するという発想に至りませんでした。
クラス名の付け方も注意します。
参考にさせて頂きます。ありがとうございました。

お礼日時:2012/09/30 12:02

 そんなHTMLやスタイルシートの書き方・・どこで習いました?。



 もし、将来並べ方を変えたいと思ったとき、どのように手を打ちますか?
 ・・・最初にデザインを決めてHTMLやCSSを書こうとすると、必ず、挫折します。・・・・

 なぜなら、根本が間違っているからです。

 さきほど、Webデザインの勉強の仕方での回答にも書きました( http://oshiete.goo.ne.jp/qa/7722342.html#a1 )が、根本からやり直してください。

 そのような配置が必要ということは、必ず文書構造にそのように配置する根拠があるはずです。たとえば、本文中でいくつかの挿絵を配置したいが、ひとつの挿絵は大きくて、残り二つの挿絵は小さい場合などが想像できます。


★Another HTML-lint 5 ( http://www.htmllint.net/html-lint/htmllint.html# )
★W3C CSS 検証サービス ( http://jigsaw.w3.org/css-validator/#validate_by_ … )
でチェックしてみてください。スタイルシートは、スタイルシート部分だけ

※たった3行の指定ですよ。
div.figure{clear:right;}
div.figure p{float:left;}
div.figure{float:right;}
だけで、期待通りになっているはずです。もちろん先で、flatじゃなくて行間に入れたいと思ってもHTMLを弄らなくても良いです。HTMLにいくら変更や記事の追加があってもスタイルシートは独立している。
※タブは_に置換してあるので戻すこと
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
※class名は、文書構造を示すために一般的なものを付けてあります。元々そのためのものです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css">
<!--
html,body{margin:0;padding:0;background-color:gray;}
div.header,div.section,div.footer{width:70%;margin:0 auto;background-color:white;background-color:silver;}
p{text-indent:1em;}
h1,h2,h3,p{margin:0 10px;line-height:1.6em;}
/* 挿絵の設定 */
div.figure{clear:right;}
div.figure p{float:left;}
div.figure{float:right;}
/* わかりやすいように・・色とか余白とか上と一緒に書く方が良い */
div.figure{text-align:center;font-size:0.7em;}
div.figure p{margin:2px;}
div.figure{background-color:white;padding:5px;}
-->
_</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<p>このページでは・・・・</p>
_</div>
_<div class="section">
__<h2>見出し</h2>
__<p>そんなHTMLやスタイルシートの書き方・・どこで習いました?。</p>
__<div class="figure">
___<p><img src="./images/AA.jpg" width="200" height="150" alt="A"><br>これは挿絵Aです。</p>
__</div>
__<p>もし、将来並べ方を変えたいと思ったとき、どのように手を打ちますか?</p>
__<p>・・・最初にデザインを決めてHTMLやCSSを書こうとすると、必ず、挫折します。・・・・</p>
__<p>なぜなら、根本が間違っているからです。</p>
__<h3>どうすればよいのか</h3>
__<div class="figure">
___<p><img src="./images/BB.jpg" width="50" height="38" alt="B"><br>挿絵B</p>
___<p><img src="./images/CC.jpg" width="50" height="38" alt="C"><br>挿絵C</p>
__</div>
__<p>まずHTMLをきちんと書くこと。そのような配置が必要ということは、必ず文書構造にそのように配置する根拠があるはずです。たとえば、本文中でいくつかの挿絵を配置したいが、ひとつの挿絵は大きくて、残り二つの挿絵は小さい場合などが想像できます。</p>
__
_</div>
_<div class="footer">
__<h2>文書情報</h2>
__<dl class="documentHistry">
___<dt id="FIRST-PUBLISHED">First Published</dt>
___<dd>2012-08-10</dd>
__</dl>
__<address>&copy; ORUKA1951 2012 - 2016 All Rights Reserved mailto:*****</address>
_</div>
</body>
</html>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
全く勉強が足らないようですみません。
参考にさせて頂きます。

お礼日時:2012/09/30 11:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!