浮动的使用

浮动最早出现的时候不是为了做整个页面布局的,他是为了实现一种效果,叫文字环绕。后来因为浮动的属性特殊,用来做横向布局使用。所以学习完浮动后,我们遇到横向布局,可以直接用浮动实现。

浮动这个属性未来一定会被弹性盒子完全替代。

选择器 {
  float: left;
}

浮动支持以下属性

  • left 左浮动 从左边开始 横向排列 贴左侧 更常用
  • right 右浮动 从右边开始 横向排列 贴右边
  • none 不浮动

脱离文档流

正常的布局文档流是从上到下的,当我们给一个元素浮动,然后在正常的文档流中,相当于这个元素消失了。

  • 块元素 不怕 会出现在浮动元素的下方
  • 行内元素(文字)沿着浮动元素排列 (浮动元素无法盖着行内元素)

多个元素同时浮动

如果多个元素同时浮动,那么元素们会在另外一个空间中进行有序的布局,排列方式从最开始的从上到下,变成了从左到右。

浮动后的特点

元素变成块元素

不管是什么元素,只要浮动,都支持设置宽高和margin padding等属性。

导致父元素高度塌陷

当一个父元素内部所有的子元素都浮动时,父元素会没有高度。

如何解决?

给父元素添加浮动

只适合特定布局

定高法

这种方法只适合确定的单行元素,未来不可能出现换行的情况

清除浮动

clear属性用来清除浮动。

clear有left(左浮元素无法覆盖)、right(右浮动元素无法覆盖)、both(左右浮动元素)

原理,给父元素内部最后添加空标签,设置样式

.clear {
  
  height: 0;
  clear: both;
}

这个方法需要在html中添加空标签,不是一个好的办法。

结合伪元素 + clear解决问题(完美写法)

原理理解最好,不理解没关系。

去下面的补充知识中随便找一个网站的clearfix代码,复制到自己的网站css中。然后布局时遇到子元素全部浮动的情况,就给父元素添加一个clearfix即可。

浮动元素换行

如果说我们的浮动元素没有多余空间,则会换到下一行排列。

浮动元素前面的块元素会阻止元素继续浮动

在我们浮动时,如果前面有块元素,则元素会阻止覆盖前面的块元素。

补充

伪元素

这个东西是通过css在页面渲染的时候,给对应的标签上添加的一个假的元素。不像真的元素一样,是HTML标签。这个元素可以通过css设置属性 ,并且其内容也需要通过css设置。

选择器::after {
  content: "";
}

选择器::before {
  content: "";
}

这样的伪元素的写法,类似与给父元素标签中添加了span标签,填入对应的内容

<div class="box">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
</div>
.box::after {
   content: "内容";
}

相当于直接,在html结构的最下面,添加了一个span标签

<div class="box">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <span>内容</span>
</div>

after是添加在对应元素闭合标签之前的,before是添加在开始标签之后的。

伪元素默认是行内元素

各个网站的clearfix

小米

.clearfix:after,.clearfix:before {
  content: " ";
  display: table
}

.clearfix:after {
  clear: both
}

京东

.clearfix:after {
  /* 让元素不可见但是占据位置 */
  visibility: hidden;
  clear: both;
  display: block;
  content: ".";
  height: 0
}

.clearfix {
  *zoom:1
}

淘宝

.clearfix {
  *zoom:1
}

.clearfix:after,.clearfix:before {
  content: " ";
  display: table
}

.clearfix:after {
  height: 0;
  line-height: 0;
  visibility: hidden;
  clear: both
}

伪元素用两个:: 和一个:效果都一样,在CSS3中,为了让用户区分伪元素和伪类的写法,所以定义伪元素要用两个冒号。一个冒号兼容性更好,两个冒号更符合标准。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值