忍者ブログ

からすまる日誌

20191106_pm01 float(フロート)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

20191106_pm01 float(フロート)

floatを使うときは幅を決めてねという話
  
さて、div「あ」のブロックと「い」と「う」とあって、
「あ」と「い」を横に並べて
その下に「う」を置きたい。
3つのdivはwrapというdivで包んである。
 
親よりも大きくなった時下に落ちること:
カラム落ちという。
 
.divにすると親のdivにもかかってしまう。
 
さてfloatすると浮いているので、あいたところに「う」が入り込もうとする。
実際Elementsで確認すると、「う」の領域は「あ」「い」にかぶっているのがわかる。
ここで面白いのは、webは勝手に情報を落としたりしないので、『領域はかぶって確保した』『ただし文字をその下のレイヤーに置いたら見えないし文字だけはかぶらないようにした』という挙動になる。
 

vwという単位もあるよ。ブラウザサイズの50%とかも指定できる。最近できた。
 
.left{
background-color : #F77;
float : left;
width : 50vw;
}
 

floatは浮いているので、親要素に対しても次の要素にも影響を与えてしまう。
そういうわけで、floatの影響を受けたくないところでクリアする必要がある。
  
.bottom{
background-color : #77F;
clear : both;/*もうfloat終わりにしてくださいよ*/
}
 
  
--->float.css
  
@charset="UTF-8";
 
.wrap{
background-color : #cc6;
width : 500px;
}
 
.left{
background-color : #F77;
float : left;
width : 200px;
}
.right{
background-color : #7F7;
/*float : right;*/
/*width : 50%;*/
/*rightでもいいんだけどbottomをclearのほうがよろしい*/
}
.bottom{
background-color : #77F;
clear : both;/*もうfloat終わりにしてくださいよ*/
}
 

さてさっきのnav.cssに戻るが、
li{
background-color: #CCC;
width : 100px;
float : right;
}
 
→liにclear.bothを入れる場所がない。
そのあと<main>とかがあったとして、そこに記述してもそこはよその家なのでうまくいかない。
 
どうするか
→1.親要素の<ul>におまじないをかける
ul{
background-color : #EEE;
overflow : hidden;
}
 

 
子要素の中でclear.both(クリア・ボス)るか、
親要素でoverflow : hidden;(オーバーフロー・ヒドゥン)にするかは
「floatしない要素が、子要素の最後にあるかどうか」にかかっている。
あればfloatしない子要素でクリアボス、なければ親要素でオーバーフローヒドゥン。
 
ちなみにfloat:right;を解除したいときは
clear:right;
とかもある。
bothは両方。
 

overflow : hidden;
基本的にWEBは情報を見せるもの。縦幅が指定してあっても文字数がオーバーしていたらその下にはみ出て表示されるのが普通。
それを敢えて、「はみだしたのは隠してください」というのがこの命令。
float専用の命令ではない。
 

 
2.clearfix
クリアフィックスというのを使う手もある。
これも裏技的な。

テキストを画像にまわりこみさせたいときは、このfloatを使うしかないのでがんばって使えるようにしよう。
PR

コメント

ブログ内検索

カレンダー

04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31