`

css浮动的学习

 
阅读更多

浮动最初的设计是用来制作环绕文字的。

在现代浏览器下(ie6,7排除啊),浮动内容不会撑起父容器

1:块状元素浮动在IE6,7下面会有双倍margin的bug,display:inline.

2:ie6,7下面同一行元素错位解决办法,全部加浮动

3:ie6,7下li内容浮动产生几px的间隙,解决办法:1:vertical-align:top/middle.2:内容全部浮动

元素浮动后,默认是顶部对齐的。

4:图片间隙问题:1:加display:block,但是这样会对布局有影响,2:vertical-align

5:ie6下,最小高度问题,解决办法:overflow:hidden

6:ie6下面图片空隙产生,解决办法:解决这个BUG的方法也有很多,可以是改变html的排版,或者定义img 为display:block或者定义vertical-align属性值为vertical-align:top | bottom |middle |text-bottom

还可以设置父容器的字体大小为零,font-size:0

7:ie6下面空标签最小高度为19px,一个空div如果高度设置为0到19px,IE6下高度默认始终19PX。

例如:
.c{background-color:#f00;height:0px;/*给定任何小于20px的高度 */}
<div class="c"></div>

如果不让它默认为19PX。而是0PX的话
解决方法有3种:
1.css里面加上overflow:hidden;
2.div里面加上注释, 
<div class="c"><!– –></div>
3.css里面加上line-height:0;然后div里面加上#nbsp;,
<div class="c">&nbsp;</div>(#换成&)

8:IE6,7下li的间隙 在IE6,7下li本身没浮动,但是li内容有浮动的时候,li下边就会产生几px的间隙

解决办法: 1.给li加浮动2.给li加vertical-align:top;

9:清楚浮动:解决办法:1:(.clear{zoom:1},clear:after:{content:"",display:block;clear:both})

                              2:BFC清除浮动BFC的定义

10:计算一定要精确 不要让内容的宽高超出我们设置的宽高

 

在IE6下,内容会撑开设置好的宽高

11:在IE6元素浮动,如果宽度需要内容撑开,就给里边的块元素都加浮动

在IE6,7下元素要通过浮动并在同一行,就给这行元素都加浮动

注意标签嵌套规范,否则和容易出问题

IE6下最小高度问题

在IE6下元素的高度的小于19px的时候,会被当做19px来处理

 

解决办法:overflow:hidden;

1px dotted 在IE6下不支持

解决办法:切背景平铺

在IE6下解决margin传递要触发haslayout

 

在IE6下父级有边框的时候,子元素的margin值消失

 

 

解决办法:触发父级的haslayout

IE6下双边距BUG

 

在IE6,块元素有浮动和和横向的margin值 ,横向的margin值会被放大成两倍

 

 

解决办法: display:inline;

margin-right 一行右侧第一个元素有双边距

 

 

margin-left 一行左侧第一个元素有双边距

在IE6,7下,li本身没浮动,但是li的内容有浮动,li下边就会产生一个间隙

解决办法:

1.给li加浮动

 

2.给li加vertical-align

在IE6,7下,li本身没浮动,但是li的内容有浮动,li下边就会产生一个间隙

解决办法:

1.给li加浮动

2.给li加vertical-align

 

 

当IE6下最小高度问题,和 li的间隙问题共存的时候 给li加浮动

当一行子元素占有的宽度之和和父级的宽度相差超过3px,或者有不满行状态的时候,最后一行子元素的下margin在IE6下就会失效

在IE6下的文字溢出BUG

    

    子元素的宽度和父级的宽度相差小于3px的时候,两个浮动元素中间有注释或者内嵌元素

    

 

    解决办法:用div把注释或者内嵌元素用div包起来

 

当浮动元素和绝对定位元素是并列关系的时候,在IE6下绝对定位元素会消失

解决办法:

 

给定位元素外面包个div

在IE6,7下,子元素有相对定位的话,父级的overflow包不住子元素

 

 

解决办法: 给父级也加相对定位

在IE6下绝对定位元素的父级宽高是奇数的时候,元素的right值和bottom值会有1px的偏差

 

在IE6,7下输入类型的表单控件上下各有1px的间隙

 

解决办法:给input加浮动

 

在IE6,7下输入类型的表单控件加border:none;

 

解决办法: 重置input的背景

 

在IE6,7下输入类型的表单控件输入文字的时候,背景图片会跟着一块移动

 

解决办法: 把背景加给父级

 

位置

PageY=clientY+scrollTop-clientTop

是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。

在创建了 Block Formatting Context 的元素中,其子元素会一个接一个地放置。垂直方向上他们的起点是一个包含块的顶部,两个相邻的元素之间的垂直距离取决于 ‘margin’ 特性。在 Block Formatting Context 中相邻的块级元素的垂直边距会折叠(collapse)。

在 Block Formatting Context 中,每一个元素左外边与包含块的左边相接触(对于从右到左的格式化,右外边接触右边), 即使存在浮动也是如此(尽管一个元素的内容区域会由于浮动而压缩),除非这个元素也创建了一个新的 Block Formatting Context 。

BFC到底是什么?

当涉及到可视化布局的时候,Block Formatting Context提供了一个环境,HTML元素在这个环境中按照一定规则进行布局。一个环境中的元素不会影响到其它环境中的布局。比如浮动元素会形成BFC,浮动元素内部子元素的主要受该浮动元素影响,两个浮动元素之间是互不影响的。这里有点类似一个BFC就是一个独立的行政单位的意思。

怎样才能形成BFC

  • float的值不为none。
  • overflow的值不为visible。
  • display的值为table-cell, table-caption, inline-block中的任何一个。
  • position的值不为relative和static。

BFC的作用

1.不和浮动元素重叠

如果一个浮动元素后面跟着一个非浮动的元素,那么就会产生一个覆盖的现象,很多自适应的两栏布局就是这么做的。比如下图的效果,参考例子

<div style="float:left; border: 2px solid red"> 123</div>
<p style="border: 2px solid blue;display:block;overflow:hidden;*zoom:1">
The quick brown fox jumped over the  4seohunt.com lazy  dog's back.
The quick brown fox jumped over the lazy dog's back.
The quick brown fox jumped over the lazy dog's back.
The quick brown fox jumped over the lazy dog's back.
The quick brown fox jumped over the lazy dog's back.
</p>

2.清除元素内部浮动

只要把父元素设为BFC就可以清理子元素的浮动了,最常见的用法就是在父元素上设置overflow: hidden样式,对于IE6加上zoom:1就可以了(IE Haslayout)。

3.嵌套元素Margin边距折叠问题的解决

按照BFC的定义,只有同属于一个BFC时,两个元素才有可能发生垂直Margin的重叠,这个包括相邻元素,嵌套元素,只要他们之间没有阻挡(例如边框,非空内容,padding等)就会发生margin重叠。

因此要解决margin重叠问题,只要让它们不在同一个BFC就行了,但是对于两个相邻元素来说,意义不大,没有必要给它们加个外壳,但是对于嵌套元素来说就很有必要了,只要把父元素设为BFC就可以了。这样子元素的margin就不会和父元素的margin发生重叠了。

摘自:http://www.w3cmm.com/other/css-bfcblock-formatting-context.html

 

如何清除浮动:http://chenfengming.cn/other/css-clearing-float.html

 http://www.iyunlu.com/demo/enclosing-float-and-clearing-float/index.html

分享到:
评论

相关推荐

    CSS2中文参考手册+CSS浮动

    CSS浮动是网页布局中一个重要的概念,主要用于创建多列布局。当一个元素被设置为浮动(float:left或float:right),它将从当前的流中移出,向左或向右移动,直到碰到边框或者另一个浮动元素。这个特性在早期网页设计...

    CSS浮动详解及其解决方案

    使用场景及目标:适用于各类需要进行灵活左右布局的情况,特别针对希望通过CSS浮动方式构建高效稳定的网页排版的学习与实操。 其他说明:本文档提供了丰富的实例帮助理解概念和技术点,并探讨不同清除浮动方法的技术...

    JS QQ客服左侧或者右侧DIV+CSS浮动

    "JS QQ客服左侧或者右侧DIV+CSS浮动"是一个实现此类功能的解决方案,它能够让QQ客服窗口在页面的左侧或右侧保持固定,随着用户滚动页面而上下移动,始终保持在视线范围内。这种设计既不干扰用户浏览主要内容,又能...

    上百个CSS实例|CSS基础学习|CSS入门基础|CSS样式集合

    【CSS基础学习】是网页设计领域中的重要环节,它是一种用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档样式的样式表语言。CSS(层叠样式表)让网页设计者能够分离内容与表现,使得网页设计更加灵活且易于...

    CSS 浮动布局的练习 Demo,名为 古诗欣赏

    在本文中,我们将深入探讨与"CSS浮动布局"相关的知识点,通过一个名为“古诗欣赏”的练习Demo来学习和理解这一重要概念。这个Demo旨在帮助我们掌握如何利用CSS的浮动特性来实现美观的网页布局。 首先,让我们了解...

    CSS浮动与定位.md

    css知识点,浮动与定位知识点讲解,如有不完整的地方请自行补充,该文档纯属于作者自身学习,巩固知识而写。

    (转载)CSS浮动(二)

    本文将深入探讨CSS浮动,从基础理论到高级应用,旨在帮助读者全面理解这一关键特性。 首先,我们需要理解“浮动”的基本含义。在CSS中,浮动元素会离开其正常文档流,向左或向右移动,直到其边缘碰到包含框或另一个...

    js+css3彩色气泡浮动上升动画特效

    【标题】"js+css3彩色气泡浮动上升动画特效"是通过JavaScript和CSS3技术实现的一种视觉效果,主要用于创建动态、...在实际应用中,这种特效可以被用作网站背景,增加用户体验,也可以作为学习js和css3动画技术的实例。

    css经典学习笔记.zip

    《CSS经典学习笔记》 CSS(Cascading Style Sheets)是网页设计中不可或缺的一部分,它负责定义网页内容的样式和布局。本学习笔记将深入探讨CSS的核心概念、选择器、盒模型、布局方式以及响应式设计等多个方面,...

    html&css;学习14-浮动.html

    html&css; 学习14 的源码 主要内容为浮动,包含三个html

    day06(CSS04-浮动).rar

    标题中的"day06(CSS04-浮动).rar"指示了这是一个关于CSS浮动的教程资料包,属于Web前端开发的学习资源。CSS是层叠样式表(Cascading Style Sheets)的缩写,它是用来描述HTML或XML(包括如SVG、MathML等各种XML...

    CSS基础学习胶片

    【CSS基础学习胶片】 CSS,全称Cascading Style Sheets,中文译为层叠样式表,是网页设计中用于控制网页布局和样式的语言。它与HTML(超文本标记语言)相辅相成,让网页的设计更加丰富多彩,易于维护。本资料集面向...

    jQuery和CSS3炫酷表单浮动标签特效

    **jQuery和CSS3炫酷表单浮动标签特效详解** 在网页设计中,用户交互体验是至关重要的元素之一,其中表单的设计与交互性扮演着重要角色。浮动标签特效(Floating Label)是一种现代化的表单设计模式,它在用户输入时...

    css浮动 float属性详解

    【CSS浮动(float属性)详解】 一、浮动的概念 浮动(float)是CSS布局中的一个重要概念,它使得元素能够脱离正常文档流,向左或向右移动,直至其边框接触到包含框或另一个浮动元素的边框。这个特性最初设计是为了...

    css学习手册

    《CSS学习手册》 在网页设计领域,CSS(Cascading Style Sheets)是不可或缺的一部分,它赋予了HTML或XML文档以样式和布局。本手册旨在深入解析CSS的相关知识,帮助初学者快速上手并掌握其核心概念。 一、CSS基础 ...

    jQuery CSS图片浮动层效果.zip

    《jQuery CSS图片浮动层效果详解》 在网页设计中,图片浮动层效果是一种常见的交互设计手法,它能够吸引用户的注意力,提供丰富的用户体验。本篇文章将深入探讨如何利用jQuery和CSS技术实现图片浮动层效果,包括...

    css学习大全(包括css生成器,各种经典样式,css学习文档)

    这个压缩包文件看起来是一个全面的CSS学习资源集合,包含了CSS生成器、各种经典的CSS样式示例以及CSS的学习文档。接下来,我们将深入探讨这些知识点。 首先,CSS生成器是一个在线工具,它允许用户通过图形用户界面...

    校内网CSS代码学习

    4. **布局技术**:传统上,CSS通过浮动(`float`)和定位(`position`)实现布局。现代CSS引入了Flexbox(弹性盒布局)和Grid(网格布局),提供了更为灵活和强大的布局解决方案。 5. **响应式设计**:随着移动设备...

    div+css 学习资料

    【div+css 学习资料】是一份专为学习网页布局技术div+css设计的资料集合,适合初学者以及希望巩固提升的开发者。Div(Division)是HTML中的一个元素,常用于网页布局,通过CSS(Cascading Style Sheets)进行样式...

Global site tag (gtag.js) - Google Analytics