ブロック要素のフロートについて質問します。
.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>
上記の書き方で希望の表示にはなりましたが、もっと簡単な方法があるのでは?と思って質問しました。
どうぞ宜しくお願いします。
No.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つの要素にクラス名はいくつでも入れられますので、今後覚えておいても損はないと思います。
ご回答ありがとうございます。
マージンをマイナスで指定するという発想に至りませんでした。
クラス名の付け方も注意します。
参考にさせて頂きます。ありがとうございました。
No.1
- 回答日時:
そんな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>© ORUKA1951 2012 - 2016 All Rights Reserved mailto:*****</address>
_</div>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS 吹き出し 下記の吹き出しのスタイルシートについて 下記のスタイルシートは左側にアイコンがでる使用にな 1 2022/11/12 17:55
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- HTML・CSS HTML、cssのatomつぅーやつで 課題Ex1ってやつを表示させたいのですが、 私は課題Ex1が 2 2022/12/15 16:56
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
line-height指定で発生する余白...
-
一括で全体を右にずらす
-
article、section、hgroup?
-
div要素が重なってします
-
html5でheaderの中にnav
-
ブログのサイドバーが下にくる
-
オシャレな区切り線はありませ...
-
グラフィックス
-
idとclassの指定方法
-
HTML属性での「""」 「''」違い
-
<div>テキスト</div>
-
html divボックスの入れ子で中...
-
html5にて水平線の引き方は?
-
HTMLとCSSの次に覚えることは何...
-
html の divとtable の役割
-
h1のテキストサイズよりh2の方...
-
【html&css】太さの違う2本線の...
-
改行がしたいのですが、うまく...
-
携帯サイト、ナノでのタグ編集...
-
コンピューターの画像ブロック
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
div要素が重なってします
-
<div id="container">の使いか...
-
複数のボタンを等間隔に、かつ...
-
html の divとtable の役割
-
divとpの使いわけ
-
ヘッダーとフッターだけ背景を...
-
min-heightとheightの違いについて
-
セクションをdivで囲むと見出し...
-
画面を縮小するとカラムが落ち...
-
ヘッダーを左右に二分割する方...
-
1時間30分を簡単に表したいで...
-
スペースを使わず文字位置を揃...
-
CSSで、contentsがfooterに重な...
-
h1に自分自身へのリンクを張...
-
divの中に外部のHTMLを埋め込む
-
divを横に並べる方法
-
hタグの右横に画像を表示
-
h1のテキストサイズよりh2の方...
おすすめ情報