浮动布局float(随意通俗篇)

在写了flex布局这篇文章后,我就特别想写一下float的使用,也想写一下较新的display:grid。grid以后突然想写了再写。先来一篇大话版float布局。


1、css布局得5种形式:

1、默认文档流方式:以默认的HTML元素的结构的顺序显示

2、浮动布局方式:通过HTML元素的float属性显示

3、定位布局方式:通过设置HTML元素的position属性显示

4、flex布局方式:使布局简单、自适应(响应式)

5、grid布局方式:类似flex布局,甚至比flex更简单,不过对浏览器的兼容性更差

2、什么是float?

浮动是将该块元素从原来的文档流模式中分离出来,它后面的对象,就视它不存在,从而占领它的位置。

常用的布局效果,例如,在一行中,显示几个块元素,就全部元素都用float(用flex或者grid就来得非常简单)。

注意:

        1、浮动到的位置是它的父元素的位置,如:在li标签中使用float,则浮动到的位置是ul的位置;

        2、在IE6下,当父元素中的子元素的高度超过了父元素的高度,则子元素会把父元素的高度撑大到子元素的高度。

float属性的属性值:

       1、none  //不浮动

       2、left  //元素向左浮动,而后面的内容流向对象的右侧

       3、right  //对象向右浮动,而后面的内容流向对象的左侧

3、清除浮动clear

当元素有浮动属性时,会对其父元素或后面的元素产生影响,会出现布局错乱现象,可以通过清除浮动的方式来解决浮动元素的影响。

对父元素的影响:

     1、当子元素浮动时,父元素不再具有独占一行的能力,后面的元素会跑上来和它重叠,所以它下面的元素必须要加清除浮动clear:both;

     2、当子元素都是float时,父元素的高度就不能自动适应子元素的高度而自动增减高度来适应,从而导致父元素的内容消失。

解决方案:

    1、直接在最下面加入一个空的子元素块(<div style='clear:both'></div>)

    2、在父元素中设置overflow:hidden;

          css中溢出的使用overflow:设置当对象的内容超过其指定的高度及宽度时,进行管理值:

          overflow:visible;  //默认值,不剪切内容,也不添加滚动条

          overflow:auto; //在必须时,对象内容才会被剪切或者显示滚动条

          overflow:hidden;  //不显示超过对象尺寸的内容

          overflow:scroll;  //总是显示滚动条

    3、用伪类after,在问题6中解析(最下面)

实质作用原理:

  1、当(元素A)clear:left时,会把前面的(B元素)属性float:left,视为存在(即B元素的独立行起作用),元素A只能在元素B的下一行,不能浮到B的位置(重合)

  2、当(元素A)clear:right时,会把前面B元素属性float:right,视为存在(即B元素的独立行起作用),元素A只能在元素B的下一行

  3、只有clear:left对应float:left; clear:right对应float:right一一对应时,才起作用,否则都不起清除作用

  4、当clear:both时,就是不管float:(left||right),清除都起作用

clear属性的4个属性值:none、left、right、both


对float浮动的领悟:

         float有三个值:none、left、right(不浮动、向左浮动、向右浮动);使用浮动时,整个元素块就会脱离文档流,也会脱离出该元素的父元素包含的范围,成为独立元素块,但该元素块不会影响它前面的元素块,但会影响它的父元素和父元素后面的兄弟元素、该元素下面的兄弟元素。

        解决问题的本质是:把float的元素块控制在父元素的内部,使浮动效果只在父元素内。有两种方法:

       1、父元素使用overflow:hidden、auto、scroll。 原理是:对父元素的子元素进行计算,判断是否有超出父元素的大小,这样就会促使对float元素计算在内,使float元素块被控制在父元素内,不会脱离父元素的范围,依然是父元素的一部分。这样就只是在父元素内float,父元素外依然是正常流分布。

       2、在float元素的下一个兄弟元素内使用clear:both;是该兄弟元素认为float元素依然存在正常文档流中,这样也起到和上面1相同的作用。

      目的:让float元素块控制在父元素的范围内,成为父元素的一部分,只在父元素内部起到浮动作用。不会脱离父元素的包围范围内。


4、解决原来在同一行上的块元素,因为浏览器窗口的大小改变,而改变位置(flex和grid就不会)

原来的样子:


原来的样子

窗口改变后的样子:


窗口改变后的样子

解决方案:只需要加一个大的块元素把两个块元素包含在一起


5、解决块元素的水平居中的方法(div水平居中)

直接加: margin:0 auto;(外边距margin:左右自动auto),但必须给该元素加必要的宽度width;

注意:当出现浮动float时,通过margin:0 auto;就不起作用了

如:{

       margin:0 auto; //水平居中就不起作用了

       float:left;

}

6、块元素的定位:position

设置对象的定位方式

属性值:

1、static :静态定位,页面中的每一个对象的默认值。

2、absolute:绝对定位,将对象从文档流中分离出来,通过设置left、right、top、bottom四个方向相对于父级对象进行绝对定位。如果不存在这样的父对象,则依据body对象。如:{ position:absolute;  top:100px;   left:100px;}

注意:

    父元素加定位属性,一般使用position:relative; 否则子元素不认父元素,认上层带有position:relative的元素为父元素,除非子元素只用position:absolute;不用到left、right、top、bottom属性

3、relative:相对定位,原来对象不从文档流中分离,通过设置left、right、top、bottom四个方向相对自身位置进行定位,但定位到新位置后就是从原来文档流分离出来(新位置分离,原位置还占领着)

7、利用伪类对象after方法:必须要有content:""属性,用在父元素中

      定义一个类,使用伪对象after,控制浮动元素的影响,清除浮动代码如下:

.clearFix:after{

         clear:both;

         display:block;

         visibility:hidden;

         height:0;

         line-height:0;

         content:"";

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容