前端笔记饥人谷技术博客

css 浮动

2018-03-10  本文已影响10人  好奇男孩

1.浮动

浮动元素的特征:

浮动对其他元素的影响

a.对父容器的影响:造成父元素的塌陷

浮动元素脱离文档流向左或者向右移动,直到边框碰到父元素的边缘,它无法撑开其父元素.

b.对其他浮动元素的影响:

浮动元素都向某个方向移动,直到其边框碰到其他元素的边框,如果包含框太窄,无法容纳多个浮动元素,那么其浮动元素向下移动,直到拥有足够的空间,如果浮动元素的高度不同,那么它们向下移动时可能被其他浮动元素卡住。

c.对普通元素的影响:

d.对文字的影响:

浮动元素旁边的文字框被缩短,从而给浮动元素留出空间,文字框围绕浮动元素。

e.对子元素的影响:

当一个元素浮动时,在没有清除浮动的情况下,它无法撑开其父元素,但它可以让自己的浮动子元素撑开它自身,并且在没有定义具体宽度情况下,使自身的宽度从100%变为自适应(浮动元素display:block)

清除浮动:

清除浮动指的是运用clear属性去解决浮动父容器高度塌陷的问题,clear属性规定元素的哪一侧不允许其他浮动元素。
···
<style>
body{
border: 1px solid brown;
}
.container{
border: 1px solid grey;
margin: 50px 30px;
width: 1000px;
background-color: pink;
}
.box1{
float: left;
width: 200px;
height: 30px;
background-color: #f00;
}
.box2{
float: left;
width: 200px;
height: 40px;
background-color: #0f0;
}
.box3{
float: left;
width: 200px;
height: 50px;
background-color: #00f;
}
</style>
</head>
<body>
<div class="container">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="clear">1</div>
</div>
</body>
</html>
···

9.png

方法一:添加新的元素 、应用 clear:both;

清除浮动方法2:BFC(Block Format Content)清理浮动,BFC可以阻止垂直外边距折叠、不会重叠浮动元素、可以包含浮动。因此清理浮动在BFC的语境下就是“包含浮动”,也即让父容器形成BFC就可以。

        .clear{
            clear: both;
        }
    </style>
10.png

方法二:使用伪元素::after(推荐使用)

   .container ::after{
            content:"";
            display: block;
            clear: both;
        }
11.png

方法三:形成BFC块级排版上下文;

用于对块级元素排版,默认情况下只有根元素(body)一个块级上下文,但是如果一个块级元素 设置了float:left,overflow:hidden或position:absolute样式,就会为这个块级元素生成一个独立的块圾上下文。就像在window全局作用域内,声明了一个function就会生成 一个独立的作用域一样,新开僻的BFC像是开僻了一个新的小宇宙,使这个块圾元素内部的排版完全独立隔绝。
2.独立的块级上下文可以包裹浮动流,全部浮动子元素也不会引起容器高度塌陷,也就是说包含块会把浮动元素的高度也计算在内,顺便达到了清除浮动的目的。
···
.container{
overflow: hidden;
}
···


12.png
注意:BFC可以包含浮动,但是使用BFC清除浮动可能有副作用,

比如使用float的时候会使父容器长度缩短,而且还有个重要缺陷——父容器float解决了其塌陷问题,那么父容器的父容器怎么办?
overflow属性会影响滚动条和绝对定位的元素;
position会改变元素的定位方式。
所有如果使用BFC清除浮动,还要考虑修复其可能产生的副作用。

要点

上一篇 下一篇

猜你喜欢

热点阅读