電子書籍の厳選無料作品が豊富!

CSSとHTMLは以下の様に幅などを注意して書いたつもりで、微妙にそれぞれの幅などを調整しても、三番目だけが、なぜか下にずれちゃいます。何か勘違いしているようにも思いますが、原因を教えてください。
単に二個だとうまく行くんですけどね。
よろしくお願いします。

HTML
<div id="mainR1">
<div id="box1" >
  box1
</div>
<div id="box2" >
  box2
</div>
<div id="box3" >
  box3
</div>
</div>

CSS
#mainR1 {
float: left;
width: 480;
background-color: #ffffff;
border: dotted 1px #9d9d9d;
}

#box1{
float: left;
width: 138;
height: 138;
background-color: #ffcfff;
border: dotted 1px #9d9d9d;
-moz-box-ordinal-group: 1;
-webkit-box-ordinal-group: 1;
}

#box2{
margin-left: 160;
width: 138;
height: 138;
background-color: #ffffff;
border: dotted 1px #9d9d9d;
-moz-box-ordinal-group: 2;
-webkit-box-ordinal-group: 2;
}
#box3{
float: right;
width: 138;
height: 138;
background-color: #ffcfff;
border: dotted 1px #9d9d9d;
-moz-box-ordinal-group: 3;
-webkit-box-ordinal-group: 3;
}

「3番目のBoxだけずれる」の質問画像

A 回答 (3件)

box2のCSSを少し変更。



#box2{
margin-left: 160;
  ↓
#box2{
float:left;
margin-left: 22;
    • good
    • 0
この回答へのお礼

すばやいご指摘 ありがとうございます。
右からしか考えていませんでした。

お礼日時:2013/06/27 13:54

3番目の……の原因は2番目がfloatしていないからです。

それと、cssは単位が省略不可です。width:480pxなどと書きましょう。

簡単に説明します。原則として文書は普通、左から右に、上から下に解釈し置いていきます。ブロックレベル要素であるboxnは、ブロックレベル要素であるdivであるため(前後に改行を含む塊)、そのままの解釈にまかせると左から右には流れず、上から下に置いていきます。

masarun53406 さんのソースでは、親要素があり、初めての子要素#box1はfloat:leftしていますので、floatつまり、浮動化します。本来の流れからは切り離されて左に寄ります。

次にbox2はfloat:leftがないと次のボックスは原則どおり下に来るのですが、前の要素が本来の流れから外れているため、box2がbox1のあった場所に入ります。但し、box1が左にいるため、その場所をよけます(水が氷に場所を譲るような感じ)。

masarun53406さんのソースでは、box2はfloatしていませんので、box3は本来の流れ通り、box2の下に来ます。
#1さんの改良案では、#2もfloatしているので、隣に来るわけです。

蛇足ですが、親要素の範囲ないで横に並べたいだけなら、
#mainR1>div{/*ここでひとまとめに*/
float: left;
width: 138px;
height: 138px;
border: dotted 1px #9d9d9d;
margin-right:10px;
margin-left:10px;
}
/*以下は別々の指定に*/
#box1{
background-color: #ffcfff;
-moz-box-ordinal-group: 1;
-webkit-box-ordinal-group: 1;
}

#box2{
background-color: #ffffff;
-moz-box-ordinal-group: 2;
-webkit-box-ordinal-group: 2;
}
#box3{
background-color: #ffcfff;
-moz-box-ordinal-group: 3;
-webkit-box-ordinal-group: 3;
}
とすればOKです。floatはその他解除など、込み入ってくるのでしっかり理解しないとつまづきの原因になります。

http://webdesignrecipes.com/css-visual-formating …
http://www.kanzaki.com/book/css/3-2.html
等、参考に詳しく学ばれることをお勧めします。
    • good
    • 0
この回答へのお礼

まだまだ初心者な物で、おっしゃる通りいろいろ現況をしなければなりません。しかしどの資料も読みにくいですね。

お礼日時:2013/07/03 12:51

本当に基本的な事ですが、とっても重要な事です。


★HTMLはデザインに関することは一切書いてはなりません。HTMLには文書構造しか書きません。デザインはスタイルシートで行いますが、その時にHTMLの文書構造を利用しますが、HTMLではデザインのために書かれているわけではないことが大前提です。
・構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )
 は1999年のHTML4.01の勧告以来、強く叫ばれている事です。

 具体的なHTMLとスタイルシートを書いてみます。質問と添付図では文書構造が分かりませんので想像です。(誰--検索エンジンや後任の人--が見ても分かるように)

★その上で、リストの項目をdisplay:blockでblockにして、float:leftで並べてある。
★スクリーンではリストで表示される。
★HTML4.01strict + CSS2.1
★タブは_に置換してあるので戻す。
★HTMLには、デザインに関することは何も書いてないので、簡単にかつ自由にデザインできる。
 先で全くデザインを変更することも容易

[HTML]
<!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 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" media="screen">
<!--
div.section{ /* 本文(section) */
background-color:lime;padding-bottom:10px;
}
div.plan{/* planブロック */
width:440px;margin:0 auto;
background-color:white;
}
div.plan:after{
content:"";display:block;clear:left;
}
div.plan ol,div.plan ol li{/* planブロック内のリスト */
list-style:none;display:block;
margin:0;padding:0;
}
div.plan ol.header li{/* plan内のheaderクラスのol */
border:solid gray 1px;
width:180px;
float:left;
margin:5px;padding:5px;
}
div.plan ol.header{font-size:0.9em;}
div.plan ol.header li p{margin:0 0.5em 0 3em;;font-size:1.1em;}
div.plan ol.menue{clear:left;}
div.plan ol.menue>li{
width:138px;height:138px;margin:2px;
float:left;
background-color: #ffcfff;
border:dotted 1px #9d9d9d;
}
/* 以下ひとコマごとに色分けCSS3を使うともっと簡単 */
div.plan ol.menue>li+li{background-color:silver;}
div.plan ol.menue>li+li+li{background-color:#ffcfff;}
div.plan ol.menue>li+li+li+li{background-color:silver;}
div.plan ol.menue>li+li+li+li+li{background-color:#ffcfff;}
div.plan ol.menue ol{margin:5px;}

-->
_</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<p>このページでは・・・・</p>
_</div>
_<div class="section">
__<h2>計画書</h2>
__<div class="plan">
___<ol class="header">
____<li>年月日
_____<p>平成25年8月1日</p>
____</li>
____<li>担当者
_____<p>山田太郎</p>
____</li>
___</ol>
___<ol class="menue">
____<li>
_____<ol>
______<li>8月1日</li>
______<li>全体会議</li>
_____</ol>
____</li>
____<li>
_____<ol>
______<li>8月2日</li>
______<li>試験</li>
_____</ol>
____</li>
____<li>
_____<ol>
______<li>8月3日</li>
______<li>実技試験</li>
_____</ol>
____</li>
____<li>
_____<ol>
______<li>8月4日</li>
______<li>増減可能</li>
_____</ol>
____</li>
___</ol>
__</div>
_</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

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