首页 web前端 css教程 详细分析css float 属性以及position:absolute 的区别_基础教程

详细分析css float 属性以及position:absolute 的区别_基础教程

May 16, 2016 pm 12:03 PM
float

1.float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。div一个典型的块级元素,会单独占据一行。

先看看最基本的块级元素如何排列的。html代码,以下样式都是基于此。

复制代码 代码如下:


       

        框框1
       

       

        框框2
       

       

        框框3
       


css代码:

复制代码 代码如下:

.boxBg{
    margin: 0 auto;
    width:500px;
    height:200px;
    border:2px solid #ccc
    }
    .box1{
    width:100px;
    height:50px;
    background-color:red
    }
    .box2{
    width:100px;
    height:50px;
    background-color:blue
    }
    .box3{
    width:100px;
    height:50px;
    background-color:green
    }

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

由于div是块级元素,所以框会以纵向形式排列。在实际操作中往往需要将框横向排列。有两种方式可以实现。第一种将display:inlin-block;

复制代码 代码如下:

.boxBg{
    margin: 0 auto;
    width:500px;
    height:200px;
    border:2px solid #ccc
    }
    .box1{
    width:100px;
    height:50px;
    background-color:red;
    display:inline-block
    }
    .box2{
    width:100px;
    height:50px;
    background-color:blue;
    display:inline-block
    }
    .box3{
    width:100px;
    height:50px;
    background-color:green;
    display:inline-block
    }

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

至于中间的缝隙,追溯到本质原因是元素之间的空白符引起的,所以在父元素设置fone-size的大小,可以调节空白缝隙的大小。

复制代码 代码如下:

.boxBg{
    margin: 0 auto;
    width:500px;
    height:200px;
    border:2px solid #ccc;
    font-size:34px;
}

将font-size:34px之后,那么缝隙会变宽。

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

同理,要去掉缝隙,那么需要将font-size:0;

复制代码 代码如下:

.boxBg{
    margin: 0 auto;
    width:500px;
    height:200px;
    border:2px solid #ccc;
    font-size:0
}

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

如此便实现了想要的布局,框里边的文字也跟着消失了,同样也证明文字的大小影响缝隙。只需要在子元素里重新设置就可以了。当然今天的重点并不是这个。同样的效果float:left;也可以轻松实现。

复制代码 代码如下:


执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

元素添加 float之后,此浮动元素会在其碰到父级元素边框或者另一个浮动元素边框,紧邻其后显示。例如下边的例子,在浮动元素总宽度大于父级元素时,换行,换行的时候遇到前一个float并在其后显示

复制代码 代码如下:


执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

如果使用inline-block,结果会是怎样呢?

复制代码 代码如下:


执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

此时框3是另起一行而不是跟在框1之后,(1,2之间的缝隙这里就不说了) 这也是一个使用inline-block和float的判断,如果模块宽度不一样使用float排版可能会导致跟预想结果不一样,所以在宽高不变的情况下使用float是极好的,如果不一致的话需要看具体的布局,使用恰当的属性。

以下贴代码,只贴修改的部分,其他不变,结构不变。

如果去掉box3的float:left会是什么结果?按照理解,浮动元素不占据空间,也就是框框3会无视框框1,框框2直接紧邻父元素的边框显示,也就是框框1会盖住框框3?那结果呢?

复制代码 代码如下:

.box3{
    width:100px;
    height:50px;
    background-color:green;
}

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

为何框3的文字会出现在下边而不是被框1覆盖?接着看代码,看图

复制代码 代码如下:

.box3{
    height:50px;
    background-color:green;
}

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

看出不一样了没?是的。box3没有定义width;去掉了width,不定义宽度的情况下默认宽度就是父元素的宽度,也就是说此时width:500px;浮动元素覆盖非浮动元素,也就是框3前边200px的宽度被浮动元素覆盖了,之所以文字没有被覆盖而且文字被浮动元素挤在200px之后的位置,原因呢?

  浮动元素不会占据块的空间,所以框三就是100%的父容器宽度 500px,但是浮动元素会占据另外的空间,也就是行框空间,通俗的讲就是文本所占的空间。

这也是图片float之后,文本会自动环绕图片的原因。浮动元素不占据块级空间,但会影响块级元素之内的文字以及内联元素。

如此的话如果想要三个框宽度一样,那么只需要将框三width:300px;

复制代码 代码如下:

.box3{
    width:300px;
    height:50px;
    background-color:green;
}

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

到这里基本的浮动说完了,那就要说说问题了,浮动虽然好用,但是也会在实际中出现很多问题。例如:

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

很常见的问题,正常情况下。应该灰色的背景会跟框一样高,可事实总是不会尽如人意 :)

这种情况产生的原因,都知道是因为浮动造成的,是的,是浮动,很多地方有说浮动元素会脱离普通流,所以普通元素可以当浮动元素不存在,所以这里就不会撑开背景了,但是认真看的同学,一定会记得上边有提到浮动元素不会影响块框,但是会影响行框,也就是文字或内联元素,不管是块级元素还是内联元素都属于普通流,如果浮动元素脱离普通流又为何会影响行框?其实我觉得不必要纠结于这些概念性的东西。按照我的理解浮动元素就是跟块级元素不在一个水平空间,跟文字内联元素在一个空间,所以这里边框就相当于在背景之上,所以不会影响背景元素,平常所说的清除浮动,并不是说把浮动元素的float属性去掉,而是清除其周围的浮动元素,使其自身周围没有浮动元素,所以如果想让框三到第二行,不能在框2里边用clear:right;而是需要在框3里边使用clear:left;

复制代码 代码如下:

.box3{
    float:left;
    width:100px;
    height:50px;
    background-color:green;
    clear:left
    }

执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程

ok!理解了这个,下来再说说如何使背景和框等高,第一种:最直接的办法就是直接设置背景高度和框相等就Ok了,当然这个不是重点,下面来说说清除浮动。首先先看看例子:

复制代码 代码如下:





     
    .boxBg{
    margin: 0 auto;
    position:relative;
    lebar:500px;
 px pepejal ;
    background-color:#ccd;
    }
    .box1{
    float:left;
    lebar:100px;
    tinggi:50px;
 : merah latar belakang ;
    }
    .kotak2{
    apung:kiri;
    lebar:100px;
    tinggi:50px;
    warna latar:biru;
    kotak {
    float:kiri;
    lebar:100px;
    tinggi:50px;
    warna latar:hijau;
    }
    .jelas{
       px lebar >    ketinggian:50px;
    }



   
    ; div class="box1">
        框框1
       

       

                                                  gt;

        框框3
        

       





执行结果:


🎜以是跟背景一样,因此背景被撑开了。其实是用清除浮动的原理跟这个是一样的,也是想办法撑开背景;以上去掉clear的宽,高,加上clear属性

详细分析css float 属性以及position:absolute 的区别_基础教程

复制代码

代码如下:

执行结果:




这个可能还看不清楚,给clear框里边加几个字试试看
执行结果:

详细分析css float 属性以及position:absolute 的区别_基础教程因为clear用了clear:left综上所述,clear左边不能有浮动元素,所以它必须以它必须倦社起中中文到图上的结果,其实还是用一个元素撑开的背景。当然还有其他方法实现,这里主要是讲清楚浮动就好了:)

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

float最大值为多少 float最大值为多少 Oct 11, 2023 pm 05:54 PM

float最大值:1、在C语言中,float最大值是3.40282347e+38,根据IEEE 754标准,float类型的最大指数为127,尾数的位数为23,通过这种方式,最大浮点数为3.40282347e+38;2、在Java语言中,float最大值是3.4028235E+38;3、在Python语言中,float最大值是1.7976931348623157e+308。

float精度能到多少 float精度能到多少 Oct 17, 2023 pm 03:13 PM

float精度能到6到9位小数。根据IEEE754标准,float类型可以表示的有效数字位数为大约6到9位。需要注意的是,这只是理论上的最大精度,实际使用中由于浮点数的舍入误差,float类型的精度往往会更低。在计算机中进行浮点数运算时,由于浮点数的精度限制,可能会出现精度损失的情况。为了提高浮点数的精度,可以使用更高精度的数据类型,如double或者long double。

数据库float长度有哪些 数据库float长度有哪些 Oct 10, 2023 pm 03:57 PM

常见的数据库float长度有:1、MySQL中的float类型长度,可以是4个字节或8个字节;2、Oracle中的float类型长度,可以是4个字节或8个字节;3、SQL Server中的float类型长度,固定为8个字节;4、PostgreSQL中的float类型长度,可以是4个字节或8个字节等等。

float32字节包括哪些 float32字节包括哪些 Oct 10, 2023 pm 04:07 PM

float32字节包括符号位、指数位和尾数位,用于表示32位浮点数。详细介绍:1、符号位(1位),用来表示数字的正负,0表示正数,1表示负数;2、指数位(8位),用来表示浮点数的指数部分,通过指数位,可以调整浮点数的大小范围;3、尾数位(23位),用来表示浮点数的尾数部分,尾数位存储了浮点数的小数部分。符号位决定了浮点数的正负,指数位和尾数位共同决定了浮点数的大小和精度。

c语言中float什么意思 c语言中float什么意思 Oct 12, 2023 pm 02:30 PM

C语言中的float是一种数据类型,用于表示单精度浮点数,浮点数是一种用科学计数法表示的实数,可以表示非常大或非常小的数值。float类型的变量可以存储小数点后6位有效数字的数值,在C语言中,使用float类型可以进行浮点数的运算和存储,其变量可以用于表示小数、分数、科学计数法等需要精确表示的实数,与整数类型不同,浮点数可以表示小数点后的数字,并且可以进行小数的四则运算。

float布局会引起哪些问题 float布局会引起哪些问题 Oct 10, 2023 pm 03:31 PM

float布局会引起有清除浮动问题、元素重叠问题、文字环绕问题和响应式布局问题等。详细介绍:1、清除浮动问题,当使用float布局时,浮动元素会脱离文档流,这可能导致父容器无法正确地包裹浮动元素,这种情况下,父容器的高度会塌陷,导致布局混乱;2、元素重叠问题,当多个元素使用float布局时,它们可能会发生重叠的情况,这是因为浮动元素不再占据正常的文档流位置等等。

float属性取值有哪些 float属性取值有哪些 Oct 10, 2023 pm 02:03 PM

float属性取值有left、right、none、inherit、clearinline-start和inline-end。详细介绍:1、left,元素向左浮动,即元素会尽可能地靠近容器的左边,其他元素会围绕在其右侧;2、right,元素向右浮动,即元素会尽可能地靠近容器的右边,其他元素会围绕在其左侧;3、none默认值,元素不浮动,会按照正常的文档流排列等等。

float和double有什么区别 float和double有什么区别 Oct 11, 2023 pm 05:38 PM

float和double区别主要在于精度、存储和计算速度、范围以及在编程语言中的使用。详细介绍:1、精度不同,Float是单精度浮点数,占用4个字节(32位),而double是双精度浮点数,占用8个字节(64位);2、存储和计算速度不同,double占用的空间更大,需要更多的存储空间来存储数值,在需要高性能和速度的应用程序中,使用float类型可能会更加高效;3、范围不同等等。

See all articles