質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
float(CSS)

これはCSSのfloatプロパティのタグです。指定された要素を左または右に寄せて配置する際に使用します。

Q&A

解決済

1回答

496閲覧

floatの動きが理解できません。

choco10

総合スコア14

float(CSS)

これはCSSのfloatプロパティのタグです。指定された要素を左または右に寄せて配置する際に使用します。

0グッド

0クリップ

投稿2019/07/02 15:59

編集2019/07/12 13:33

HTML5&CSS3標準デザイン講座第二版のfloatで3カラムつくるというのを勉強しています。
floatを指定したときの、その要素のスタート位置の定義がわかりません。

#テキストのHTML・CSS

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title>3カラムレイアウトサンプル</title> 6<link rel="stylesheet" href="style1.css" media="all"> 7</head> 8 9<body> 10<div id="wrap"> 11 <header id="header">ヘッダー領域<br>ヘッダー領域<br>ヘッダー領域</header> 12 <section id="cont1"> 13 <p>コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。</p> 14 <p>コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。</p> 15 <p>コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。コンテンツ1が入ります。</p> 16 <!-- /#cont1--></section> 17 <section id="cont2"> 18 <p>コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。</p> 19 <p>コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。</p> 20 <p>コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。コンテンツ2が入ります。</p> 21 <!-- /#cont2 --></section> 22 <section id="cont3"> 23 <p>コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。</p> 24 <p>コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。</p> 25 <p>コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。コンテンツ3が入ります。</p> 26 <!-- /#cont3 --></section> 27 <footer id="footer">フッター領域<br>フッター領域<br>フッター領域</footer> 28</div> 29</body> 30</html> 31

CSS

1 2@charset "UTF-8"; 3/* CSS Document */ 4 5*{ 6 margin:0; 7 padding:0; 8} 9 10#wrap { 11 width: :949px; 12 margin: 30px auto; 13 background-color: beige; 14} 15 16#header { 17 background-color: lightpink; 18} 19 20#cont1 { 21 background-color: palegreen; 22 width: 300px; 23} 24 25#cont2 { 26 background-color: skyblue; 27 width: 300px; 28} 29 30#cont3 { 31 background-color: plum; 32 width: 300px; 33} 34 35#footer { 36 background-color: gold; 37} 38

テキスト初期画面
テキストでは、ここからコンテンツに順にCSSにfloat leftを付け加えていき、最後にfooterでclear bothとするように指示があります。
やっていくとこんな感じになります。
イメージ説明
#テキスト3カラム完成形

css

1@charset "UTF-8"; 2/* CSS Document */ 3 4*{ 5 margin:0; 6 padding:0; 7} 8 9#wrap { 10 width: :949px; 11 margin: 30px auto; 12 background-color: beige; 13} 14 15#header { 16 background-color: lightpink; 17} 18 19#cont1 { 20 background-color: palegreen; 21 width: 300px; 22 float: left; 23} 24 25#cont2 { 26 background-color: skyblue; 27 width: 300px; 28 float: left; 29} 30 31#cont3 { 32 background-color: plum; 33 width: 300px; 34 float: left; 35} 36 37#footer { 38 background-color: gold; 39 clear: both; 40}

なるほどと思ったのですが、いろいろ試しているうちにfloatの動きがわからなくなりました。
#わからないこと
この一連の流れをやってみて、一カ所だけにfloatを指定したらどうなるのかやっていると、理解できない部分がでてきました。
##cont2(青)の部分だけにfloat leftした場合の動きについて

css

1@charset "UTF-8"; 2/* CSS Document */ 3 4*{ 5 margin:0; 6 padding:0; 7} 8 9#wrap { 10 width: :949px; 11 margin: 30px auto; 12 background-color: beige; 13} 14 15#header { 16 background-color: lightpink; 17} 18 19#cont1 { 20 background-color: palegreen; 21 width: 300px; 22} 23 24#cont2 { 25 background-color: skyblue; 26 width: 300px; 27 float: left; 28} 29 30#cont3 { 31 background-color: plum; 32 width: 300px; 33} 34 35#footer { 36 background-color: gold; 37}

私の予想では、レイヤーが一段あがりcont1の隣にcont2がつき、cont2が抜けた分、cont3とfooterが下の画像のように上へズレるとおもったのですがそうなりませんでした。floatを指定したときにレイヤーが一段上がった時のスタート位置の定義がわかりません。
イメージ説明

つまり、floatを指定した時の、浮いた要素の稼働範囲がよくわかりません。float leftをすると、空きのある一番左上(cont1の横)がスタート位置だと思っていたのですが、cont2のみにfloat leftをした場合に変化がないのはなぜでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2019/07/03 02:35

> テキスト通りにCSSを打ち込んでいるのですが まずはテキスト通りに3カラムになるところまで通して作ってみましたか? テキストがこんな中途半端な状態で止めることはないと思うのですが、テキストにあるコードと、自分で試してみたコードを分けて提示してください。
choco10

2019/07/03 06:00

3カラムになるところまでつくり、その過程でfloat の概念が確認できず、このような質問に至りました。 例えば、コンテンツ1のみにfloat leftをすると、レイヤーが一段あがり、ヘッダー部分に重なってくるのかとおもったのですがそうなりません。 わかりにくい質問の仕方で申し訳ありません。訂正します。
mather

2019/07/03 07:51

テキストにあるコード(3カラムの完成形)と、自分で試してみたコード(現在提示されているもの)を分けてそれぞれ提示してください。
guest

回答1

0

ベストアンサー

float leftをすると、空きのある一番左上(cont1の横)がスタート位置だと思っていたのですが

直前の要素が float していない場合はその要素(cont2)の位置がスタート位置です。

【float - CSS: カスケーディングスタイルシート | MDN】
https://developer.mozilla.org/ja/docs/Web/CSS/float#How_floated_elements_are_positioned

浮動要素は、包含ブロックか他の浮動要素の辺に触れるまで、左側または右側に移動させられます。

投稿2019/07/12 13:59

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

choco10

2019/07/12 16:54

とてもよくわかりました。参考サイトまでありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問