如何理解css中的float

最近一段时间一直在为一个即将上线的新站进行一些前端开发。自然,对CSS的使用是必不可少的了。我们在CSS中很多时候会用到浮动来布局。常见的有float:left或者float:right。简单点来说,

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

最近一段时间一直在为一个即将上线的新站进行一些前端开发。自然,对CSS的使用是必不可少的了。我们在CSS 中很多时候会用到浮动来布局。常见的有 float:left 或者 float:right 。简单点来说,前者是左浮动(往左侧向前边的非浮动元素飘,全是飘得元素的话,就按照流式来浮动从左到右,放不下则换行),后者是右浮(往右飘)动。

 

上述这就是我们对于CSS中的浮动的最初步的认识了。下面我就对float进行了一些简单的研究。

有几点需要注意:

 

1、 浮动元素会被自动设置成块级元素,相当于给元素设置了 display:block (块级元素能设置宽和高,而行内元素则不可以)。

2、 浮动元素后边的非浮动元素显示问题。

3、 多个浮动方向一致的元素使用流式排列,此时要注意浮动元素的高度。

4 、子元素全为浮动元素的元素高度自适应问题。 

 

定义为float以后,将自动变为块级元素

块级元素和行内元素区别:

简单的来说,块级元素独占一行,可以设置宽高以及边距;行内元素不会独占一行,设置宽高行距等不会起效。

常见的块级元素有: h1~h6  p  div  ul  table 

常见的行内元素有: span  a  input  select 等。

浮动元素后的非浮动元素问题

测试代码:
    <div style="width: 500px; height: 500px; border: 1px solid blue; background-color: blue;">
      <div style="float: left; width: 200px; height: 200px; border: 1px solid Aqua; margin: 10px 0pt 0pt 10px; background-color: green;">
        浮动DIV
      </div>
      <div style="background-color: red; border: 1px solid green; width: 300px; height: 150px;">
        跟在浮动元素(块元素)后边的DIV
      </div>
      <span style="background-color: red; border: 1px solid green; margin: 0pt 0pt 0pt -50px;">
        跟在浮动元素(行内元素)后边的span
      </span>
    </div>
结果:

如何理解css中的float


结果如上图所示。
紧跟在浮动 div 后边的 div 背景以及边框被压在了底下,内容却没有;而 span 整体都在浮动 div 之上显示。  但是,并非在所有情况下都是这样。这里我们不得不考虑一下浏览器的兼容性问题,尤其是在天朝IE6依旧泛滥的大形势之下 :)
上述代码在IE6下面展现时:浮动元素没有压在非浮动

div之上,反而把span压住了。 
http://www.cnblogs.com/roucheng/

多个并列,同向,浮动的元素的高度不一致问题

多个同方向浮动元素若是高度不一致的话,很可能会得到意外的效果,跟你想要的布局差别很大。

多个同方向浮动元素一般是按照流式布局,一行满了则自动换行。理论效果类似于下图:

如何理解css中的float 

 

 

上述情况往往就是我们所期望得到的结果。

但是,通常我们的结果也会是这样:

 

如何理解css中的float

 

很多时候,在我们不经意间就会出现类似意外。

排列到元素 7 的时候,一行已经显示不下了,所以要换行,但此处换行并不是从行头开始,而是从元素 5 那开始,因为元素 5 比元素 6 高很多导致。

子元素全为浮动元素高度自适应问题

由于元素浮动后脱离了文档流,所以父元素是无法根据元素来自适应的。

此问题最常用的办法由两种:

第一种就是在所有浮动元素后加:

< div   style =” clear :both ;height :0px ;“></ div >

 

 

第二种办法,使用万能 clear 

       .clearfix:after

          {

              visibility :  hidden ;

              display :  block ;

              font-size :  0 ;

              content :  “.” ;

              clear :  both ;

              height :  0 ;

          }

          *   html   .clearfix

          {

              zoom :  1 ;

          }

          *:first-child   +   html   .clearfix

          {

              zoom :  1 ;

          }

然后在你需要自适应的元素上加上 class=” clearfix  即可 。

 

关于浮动的情况还有很多方便需要介绍,留到下篇在详述吧 :)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120727.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【数据结构与算法】深入浅出递归和迭代的通用转换思想[通俗易懂]

    【数据结构与算法】深入浅出递归和迭代的通用转换思想[通俗易懂]递归和递归的深入浅出一般来说,能用迭代的地方就不要用递归!理论上讲,所有的递归和迭代之间都能相互转换!(一)何为迭代?首先我们来看下面这段简单的代码:intsum(intn){intsum=0;for(inti=1;i<=n;i++)sum+=n;//求解1~n的和returnsum;}从上述例子中,从1一直加到n,每一次的和都

    2022年6月5日
    34
  • ORM学员管理系统

    1.使用MySQL自己创建一个数据库,以下例为例2.在项目的settings.py文件中进行数据库链接信息3.在项目下的__init__文件中写入以下命令4.在项目下的models.py文件中创

    2022年3月29日
    36
  • ip addr add配置ip_ip helper-address

    ip addr add配置ip_ip helper-addressbroadcastADDRESS—-协议广播地址,可以简写成brd,此外可以简单的在后面加上”+”表示广播地址由协议地址加主机位全置1组成,”-“则表示主机位全置0。例如你的配置:ipaddradd127.0.0.1/8devlobrd+则表示广播地址为127.255.255.255,网络地址(前8位)为127,主机地址(后面的24位)全为1,加起来为广播地址。扩展:ipad…

    2022年7月27日
    283
  • 简单页面+java后台+数据库,实现从页面对数据库的增删改查

    简单页面+java后台+数据库,实现从页面对数据库的增删改查在实现简单网页上对数据内容进行增删改查,需要用到三个部分,分别是jsp网页部分+java后台部分+数据库表我用一个新闻的例子来实现,首先编写java后台程序java后台程序:我们用三层的模式进行设计:分别是servlet,service,dao层,并且建立个实体包用来打包数据库和后台要用到的属性截个图首先是写功能写的顺序分别是从servlet,service,dao层…

    2022年5月22日
    34
  • listagg oracle10_HLOOKUP函数

    listagg oracle10_HLOOKUP函数LISTAGG函数介绍listagg函数是Oracle11.2推出的新特性。其主要功能类似于wmsys.wm_concat函数,即将数据分组后,把指定列的数据再通过指定符号合并。LISTAGG使用listagg函数有两个参数: 1、要合并的列名 2、自定义连接符号☆LISTAGG函数既是分析函数,也是聚合函数所以,它有两种用法: 1、分析函数…

    2022年9月7日
    2
  • vs2015安装失败,必需的组件失败_博图显示下位组件错误

    vs2015安装失败,必需的组件失败_博图显示下位组件错误VS2008安装失败,组件安装失败的解决办法之前安装过VS2008,二次安装时,提示组件安装失败![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324112031241.png?x-oss-process=image/w解决办法:win10系统,设置》应用,卸载所有跟VS2008相关的组件,组件就是上面报错的左边那些,卸载完成后重新安装就可以了。其他问题,点装载VS2008的ISO的时候报错:文件正在使用,装载失败解决办法:检查SQLserver

    2022年9月7日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号