CSS浮动简明小结

1. span元素在默认情况下忽略 width 和 height,除非设置其 display 属性为 block 或 inline-block。这是因为只有块级元素和行内块级元素才能够有自己的宽高

<body>
  <span id="haha">这是一个行内元素</span>
</body>
​
​#haha{
  200px;
  height:80px;
  background-color:pink;
   display:inline-block;
}

2. 在将 span 元素设置成块级元素后如何居中显示文本? 设置 line-height 属性为 height 的值,并设置 text-align 为 center。

<body>
  <span id="haha">这是一个行内元素</span>
</body>
​​
#haha{
  200px;
  height:80px;
  background-color:pink;
  display:inline-block;
  line-height:80px;
  text-align:center;
}

3. 不要在 p 元素中嵌套 div。 这会导致外层的 p 元素会被拆分成两个同级的 p 元素,并且原先内嵌的 div 会被提升到拆分后的两个 p 元素中间。

<div>
  <p>
    这是p标签的文本
    <div>这里是div的文本</div>
  </p>
</div>

如上的源码会导致生成如下图所示的结果:

  p 标签应该用来存放文本而不是用于布局。

4. 浮动布局。

假设有如下的代码:

<div>
  <div class="box">第一个盒子</div>
  <div class="box">第二个盒子</div>
  <div class="box">第三个盒子</div>
</div>
​
​.box{
  90px;
  height:80px;
  background-color:purple;
  color:#fff;
  text-align:center;
  line-height:80px;
  margin:2px;
}

这三个带 box 类属性的 div 会从上到下依次排开,因为 div 是块级元素会独占一行:

为了让这三个 div 横向上依次排开,需要对它们进行浮动布局,即让它们“飘起来”。注意,飘起来后只有两个方向,向左浮动和向右浮动。使用“float:left|right”可以达到漂浮的目的

.box{
  90px;
  height:80px;
  background-color:purple;
  color:#fff;
  text-align:center;
  line-height:80px;
  margin:2px;
  float:left;
}

5. 行内元素的浮动布局。

对行内元素使用浮动布局,会使得其转变为行内块级元素

<div>
  <span class="box">第一个盒子</span>
  <span class="box">第二个盒子</span>
  <span class="box">第三个盒子</span>
</div>
​
​
.box{
  90px;
  height:80px;
  background-color:purple;
  color:#fff;
  text-align:center;
  line-height:80px;
  margin:2px;
  float:left;
}

6. 清除浮动:清除浮动就是给飞出去的元素填坑,好让后面的元素不顶过来

<div>
  <div class="box fl">第一个盒子</div>
  <div class="box fl">第二个盒子</div>
  <div class="box fl">第三个盒子</div>
  <div class="box">第四个盒子</div>
</div>

.box{
  90px;
  height:80px;
  background-color:purple;
  color:#fff;
  text-align:center;
  line-height:80px;
  margin:2px;
}
​​
.fl{float:left;}
.fr{float:right;}

如上所示的代码,如果不清除浮动的话,第四个盒子是看不见的。清除浮动的方法有两种。

(1)在浮动定位的最后一个元素后面添加一个空元素(如 div ),并对其应用样式“clear:both”即可。

<div>
  <div class="box fl">第一个盒子</div>
  <div class="box fl">第二个盒子</div>
  <div class="box fl">第三个盒子</div>
  <div style="clear:both"></div>
​  <div class="box">第四个盒子</div>
</div>

(2)【推荐】使用伪类。

/* 清除浮动 */
.clearfix:before, .clearfix:after{content:" "; display:table;}
.clearfix:after{clear:both;}

给需要清除浮动的那个元素添加上 clearfix 的 class 即可,例如在本例中,需要给三个盒子外面套一层 div,加上 clearfix 的class,就可以了。

<div class="clearfix">
  <div class="box fl">第一个盒子</div>
  <div class="box fl">第二个盒子</div>
  <div class="box fl">第三个盒子</div>
</div>
<div class="box">第四个盒子</div>

原文地址:https://www.cnblogs.com/itfky/p/13730334.html