css浮动、浮动存在的问题、清除浮动

浮动

  • 作用:用来解决图片和文字排版问题
  • 原理:浮动的框向左或右移动 直到它的边缘碰到包含框或另一个浮动框为止
  • 特点
  1. 脱离文档流

  2. 浮动元素会自动生成一个块级框 而不论其本身是何种元素

  3. 浮动会使行内元素转化为块元素 其宽高属性起作用

  4. fixed,absolute和float同样是脱离文档流但是前者不影响其他元素的正常布局,但float会影响其他元素布局,其他元素会围绕float元素

浮动存在的问题以及如何清除浮动

对父元素造成的影响

若父级元素没有设置高度 则父级元素高度无法被撑开,

内边距和外边距的值不能正确表达

影响与父元素同级的元素布局

①  对父级设置合适的高度值 但需要提前计算好内容高度 不适用于高度不固定的父标

②  给父级元素加overflow: hidden样式   触发BFC方式,实现清除浮动

  • 原理:普通流根据内容高度裁切隐藏 如果高度未设置,会先对内容全部高度进行计算,包括浮动的高度,达到清除浮动
  • 缺点 :如果设置了外边距为负值会导致元素会被裁剪掉

③  在父元素同级的下一个元素,若为块级元素直接添加clear属性,否则新加一个style="clear:both;"空标签

④  代替创建一个新标签的解决方法     使利用伪元素::after对伪元素设置clear属性

.parent::after{

  content:" "; // 必须要设置content,不设置的话,该伪元素无效,如果不需要伪元素有内容,可以设置content: ""。

  height:0; //height必须设置为0 否则会导致元素比实际高 也可不设置 默认就是0

   display:block; // clear只对块级元素有效 且 :after伪元素的默认类型是内联元素

   clear:both; // 清除浮动

}

对同级元素的影响

与浮动元素同级的元素会跟在其后 围绕浮动元素 影响正常布局

利用clear属性的三种方式 已有标签(块级元素) 新的空标签(块级元素)  伪元素::after

①如果浮动元素刚好有一块级元素(行内、行内块设置无效),对该元素设置style="clear:both;",可以不用创建新的标签

②如果无则可以在浮动元素后添加一style="clear:both;"空标签 ,但浪费了一个空标签 复用性差

③利用伪元素::after的特性搭配clear属性清除浮动

如果在父元素后使用style="clear:both;",在父元素内float元素同级的元素布局仍受浮动的影响,即设置clear后的元素不再受浮动元素的影响,所以尽量在浮动元素后进行清新浮动

 

发布了32 篇原创文章 · 获赞 1 · 访问量 2931

猜你喜欢

转载自blog.csdn.net/yyk5928/article/details/89857546