float布局

float的特性:

  1. 元素‘浮动’

  2. 脱离文档流

  3. 但不脱离文本流

 float 对自身影响:

  1. 形成“块”(BFC),可设置宽高

  2. 位置尽量靠上

  3. 位置尽量靠左(右)

 float 对兄弟影响:

  1. 一般上面贴非float元素

  2. 旁边贴float元素

  3. 不影响其它块级元素位置

  4. 影响其它块级元素内部文本(3/4点即:脱离文档流,不脱离文本流)

 float 对父级元素影响:

  1. 从布局上“消失”

   2. 高度塌陷

  解决高度塌陷方法:

    i. overflow:auto/hidden

    ii. 伪元素

      .self-float::after{

        content:‘‘;
        display: block;
        clear: both;
        visibility:hidden;
        height:0;
      }

float两栏布局

三栏布局

  一般情况是:左右固定宽度,中间自适应。常用的布局方式有:

  方法1. float布局

    原理:左右两栏浮动后,脱离文档流,后面的元素受浮动影响,中间栏自动插入到左右两栏的中间,利用margin值控制两边的间距即可。

    所以将中间栏放在最后,否则右侧会沉在中间栏的下侧    

1 <!--float自身浮动-->
2         <div class="self-float">
3             <div class="left">左侧固定宽度</div>
4             <div class="right">右侧固定宽度</div>
5             <div class="middle">中间宽度自适应</div>
6         </div>
 1 *{
 2     margin: 0;
 3     padding: 0;
 4 }
 5 .self-float{
 6     padding: 20px;
 7     background-color: gray;
 8 }
 9 .left{
10     width: 200px;
11     height: 100px;
12     float: left;
13     background-color: pink;
14 }
15 .right{
16     width: 200px;
17     height: 100px;
18     float: right;
19     background-color: skyblue;
20 }
21 .middle{
22     height: 100px;
23     margin: 0 220px;
24     background-color: yellow;
25 }

  

  注意:

  1. margin: 0 220px;

   middle样式如果不设置 margin-left & margin-right这2个属性,内容较多的时候会出现如下情况

  

  2.使用float时,为了不影响其他元素的显示,需要清除浮动,例如使用伪元素的方式:

1 .self-float::after{
2     content:‘‘;
3     display: block;
4     clear: both;
5 }

  方法2. absolute定位

    分2种:

    第1种 原理:左右栏使用absolute定位后会脱离文档流;后面的中间栏会自然流动到它们上面,中间栏通过左右margin值撑开距离。

    这种方式仍将中间栏放在最后,否则中间栏也要进行绝对定位 

1 <div class="absolu-layout">
2             <div class="left">左侧绝对定位</div>
3             <div class="right">右侧绝对定位</div>
4             <div class="middle">中间栏通过左右margin距离来适应宽度</div>
5         </div>
 1 *{
 2     margin: 0;
 3     padding: 0;
 4 }
 5 .absolu-layout{
 6     padding: 20px;
 7     position: relative;
 8     background-color: gray;
 9 }
10 .left{
11     width: 200px;
12     height: 100px;
13     position: absolute;
14     left: 20px;
15     background-color: pink;
16 }
17 .right{
18     width: 200px;
19     height: 100px;
20     position: absolute;
21     right: 20px;
22     background-color: blue;
23 }
24 .middle{
25     height: 100px;
26     margin: 0 220px;
27     background-color: yellow;
28 }

  

  第二种原理:左右中三栏都进行绝对定位(全部脱离文档流),中间栏通过left和right来进行定位。这时左中右栏在html中顺序可以是任意的,没有先后之分

1 <div class="absolu-layout">
2             <div class="left">左侧绝对定位</div>
3             <div class="middle">中间栏通过left和right来进行定位</div>
4             <div class="right">右侧绝对定位</div>
5         </div>
 1 *{
 2     margin: 0;
 3     padding: 0;
 4 }
 5 .absolu-layout{
 6     padding: 20px;
 7     position: relative;
 8     background-color: gray;
 9 }
10 .left{
11     width: 200px;
12     height: 100px;
13     position: absolute;
14     left: 20px;
15     background-color: pink;
16 }
17 .right{
18     width: 200px;
19     height: 100px;
20     position: absolute;
21     right: 20px;
22     background-color: blue;
23 }
24 .middle{
25     height: 100px;
26     left:240px;
27     right:240px;
28     position: absolute;
29     background-color: yellow;
30 }

原文地址:https://www.cnblogs.com/smile01011/p/12189046.html

时间: 2024-11-06 21:11:06

float布局的相关文章

转:CSS布局:Float布局过程与老生常谈的三栏布局

使用CSS布局网页,那是前端的基本功了,什么两栏布局,三栏布局,那也是前端面试的基本题了.一般来说,可以使用CSSposition属性进行布局,或者使用CSSfloat属性布局.前者适合布局首页,因为首页上的内容往往可以完全控制.后者适合布局模板,模板中填充的内容你没法控制——比如,在编辑wordpress模板时,你肯定没法考虑每篇博文的长度.这篇博文,就是总结一下怎样使用CSS中的float属性进行布局,其实网上有很多讨论这个话题的文章了,但我觉得都没说到点子上.那就来老生常谈一次吧,CSS之

line-block代替float布局;

line-block代替float布局: 我们先看看float的一些特性(特征) 当我们改变浏览器的大小会出现这样的效果: 或则这样: 有时候,我们希望,以第一排最高的元素为换行基准时,我们就可以使用display:inline-block属性了滴呀 效果图 不能发现上图中有一个bug,那就是每个元素之间都有空白,解决方法:已经在我们另外一篇博客中记录了 这样的布局算是完成了,接下来,我们看如何实现两端对齐的效果滴啊

前端学习随笔:float布局问题------float元素是否脱离了文档流

问题: 今天学习2016-03-13,我知道float的原始作用为实现文字的环绕效果,但是老师说:对元素设置float属性后,该元素依然处于标准文档流中,同时浮动会 引起父元素的高度塌陷问题(怎么解决,目前不知道).但是,紧随其后的块元素会无视设置float属性的元素,但是后面元素的文本依然会为float元素让出位置,环绕于周围.既然后元素没有按照标准文档流单独占一行,我是不是可以理解为浮动的元素脱离了文档流??前后矛盾了. 解答:回答这个问题之前,首先解释一下什么叫脱离文档流! css中脱离文

CSS之bfc -- float布局

一.bfc布局 以下的代码加了子元素的上边距,为什么没有发生变化? <div class="wrapper"> <div class="content"></div> </div> * { padding: 0; margin: 0; } .wrapper{ position: relative; margin-left:100px; margin-top:100px; width: 100px; height: 10

css float 布局

.clearfix:after { content: ''; display: table; clear: both; } .clearfix { *zoom: 1; }

HTML学习笔记4——浮动布局float

本文犯了一个错误,就是:需要把 id=xx换成id=”xx“,由于不想再贴一遍代码,故在此说明,更正一下: 再加一个内容:<style></style>中不可以加注释? 只定义子div的高和宽时,父div会被”撑大“: 一.浮动布局,写于<style>   ~   </style>标签中: 语法: float:left: float:right: 二.清除浮动布局,在需要完全显示的那个div的在<style>   </style>控制

css4种布局技巧-float

我所知的常用的布局技巧有四种,原来的三种(1.float布局  2.position布局 3.table布局)以及现在css3新增的flex布局.这四种布局各有优劣 block与inline属性比较 display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元素即使设置了宽度,仍然是独占一行. block元素可以设置margin和padding属性. dis

float详解、圣杯布局

一.开始 虽然现在有了flex弹性盒子模型,很多布局效果都可以通过flex盒子来实现,但由于flex盒子模型的兼容性不容乐观 ie至少要10才能支持flex,所以还是很有必要学习float流式布局的 二.实例 正常的块级元素的布局是这样的:(文字代表元素的float属性) 对于float布局要记住: 1.如果浮动元素的上一个元素也是浮动,那么该元素会与上一个元素排列在同一行,如果行宽不够,后面的元素会被挤到下一行 2.如果浮动元素的上一个元素不是浮动,那么该元素仍然处于上一个元素的下方,根据浮动

网页布局——float浮动布局

我的主要参考资料是[Object object]的文章 float 布局应该是目前各大网站用的最多的一种布局方式了,但是也特别复杂,这里详细讲一下 首先,什么是浮动? 浮动元素是脱离文档流的,但不脱离文本流,这是什么意思呢,用过 word 的应该知道有一种图片环绕的方式是文字环绕吧,就是这种效果. 那么它有什么特点呢 对自身的影响 float 元素可以形成块,如 span 元素.可以让行内元素也拥有宽和高,因为块级元素具有宽高 浮动元素的位置尽量靠上 尽量靠左(float:left)或右(flo