- [ CSS入门 ]

十九,浮动:float属性

2020-12-23  本文已影响0人  好多可乐

float属性设置:
1,left--元素向左浮动
2,right--元素向右浮动
3,none--默认值。元素不浮动。
总结:
给谁添加了float,就将谁脱标,后面的内容会顶上来显示。
如果顶上去以后,脱标的内容没有改变位置,就会出现后者被前者(拖标内容)覆盖的情况。
如果没有改变位置,就出现该在的地方。

1,float的崩溃
当父元素没有设置高度的情况下,将子元素设置为浮动(float)父一级的块级元素高度
发生破坏(又称为破坏,崩塌)
div-->在没有设置高度和宽度的情况下:
高度为:div内内容的高度
宽度:为父一级的宽度

2,float的包裹性
包裹性:当div设置浮动后 宽度会自适应其内容的宽度。
块级元素默认宽度就是父级元素的宽度,div设置为float 产生包裹特性
行级元素都会出现块级元素包裹多出(基准线)
解决:
1)将img转换为块级元素 vertical-align:bottom
2)垂直对齐方式:底部对齐;行级元素转块级元素

<html>
<head>
   <style type="text/css">
    div{
        background-color: yellow;
        float: left;
    }
    img{
        vertical-align: bottom;
    }
   </style>
</head>
<body>
   <div>
    <img src="image/3.jpg"/>
   </div>
</body>
</html>

3,使用float进行图文混排
float的设计初衷-->实现图文混排(环绕方式),文字和矩形区域,能够进行环绕排列
随着技术进入-->例如用于商品列表并排显示

<html>
<head>
   <style type="text/css">
    div{
        background-color: yellow;
        float: left;
    }
    img{
        vertical-align: bottom;
    }
    p{
        text-align: justify;
        line-height: 20px;
    }
   </style>
</head>
<body>
   <div>
    <img src="image/3.jpg"/>
   </div>
   <p>
    包裹性:当div设置浮动后 宽度会自适应其内容的宽度。
块级元素默认宽度就是父级元素的宽度,div设置为float 产生包裹特性
行级元素都会出现块级元素包裹多出(基准线)
解决:
1)将img转换为块级元素 vertical-align:botom
2)垂直对齐方式:底部对齐;行级元素转块级元素  
   </p>
</body>
</html>
<html>
<head>
   <style type="text/css">
    div{
        background-color: white;
        float: left;
    }
    img{
        vertical-align: bottom;
        float: left;
    }
    p{
        text-align: justify;
        line-height: 20px;
    }
   </style>
</head>
<body>
   <div>
    <img src="image/3.jpg"/>
    <p>
    包裹性:当div设置浮动后 宽度会自适应其内容的宽度。
块级元素默认宽度就是父级元素的宽度,div设置为float 产生包裹特性
行级元素都会出现块级元素包裹多出(基准线)
解决:
1)将img转换为块级元素 vertical-align:botom
2)垂直对齐方式:底部对齐;行级元素转块级元素  
   </p>
   </div>
   
</body>
</html>

4,float清除浮动
一,需要清除浮动的原因:
1,为了父元素不会出现“高度崩塌”
2,如果强制规定了外层容器的尺寸,则显得就不那么灵活了,高度就就不能自动适应了
(以后的数据,大多都是从后台获取的,这样内容的多少和版本就会不一致)
3,从某个元素开始我们不再需要浮动效果了。
方法一:
清除浮动代码-->clear: both(right and left);-->表示清除元素之前的浮动,如果本元素之后还有浮动,是不受这段清除浮动代码的影响的。
clear: left-->清除左浮动
clear:right-->清除右浮动
方法二:
额外添加一个清除浮动的div,防止清除div的代码

clearDiv{clear: both;}

上边距-->top: 10px; position: relative;(设置边距时注意定位)
方法三:(目前一些大型网站流行的方法,当网站内容很多时,可以防止出现一个些意料外的问题)
::after-->伪元素

clearDiv::after{

    content: "";-->冒号里为空,因为需要clearDiv中有点内容,但 
                             不在浏览器中展示
     visibility: hidden;-->将内容进行隐藏(防止一些误操作导致 
                                      clearDiv中出现额外的内容而导致洁面变 
                                       形)
      height: 0px;-->将行高恢复到默认。
      display;  block;-->块状显示,将content 转换成跨级元素
      clear: both;

}
专门针对IE浏览器清除浮动的方法:

clearDiv{ zoom: 1; }

zoom-->ie浏览器专用的,作用-->使页面里的对象可以重新加载、重新计算。从而起到重新渲染的效果。
可以非常有效的解决ie浏览器的一些bug、例如 外边距的重叠、浮动不能清除等。

上一篇下一篇

猜你喜欢

热点阅读