css塌陷是怎么产生的?怎么解决塌陷?

一省:HTML

8. link和@import的区别?

区别:

  • link是xhtml标签,无兼容性问题,而@import是css2.1提出,低版本浏览器不支持。
  • link标签和页面同时加载,而@import等到页面加载完成后加载。
  • link标签除了css文件外,还可以引入其他资源文件,而@import只能引入css。
  • link标签的权重大于@import的权重。

二省: CSS

8. css塌陷是怎么产生的?怎么解决塌陷?

css塌陷一般分为高度塌陷和外边距塌陷两种。

  1. 高度塌陷:原因是父元素没有设置高度,子元素设置浮动属性之后,父元素的高度为0。如下:
<html lang="en">
<head>
  <style>
    body {
      background: gray;
    }
    .father {
      background: blue;
    }
    .son {
      width: 200px;
      height: 200px;
      background: tomato;
      float: left;
    }
  </style>
</head>
<body>
  <div class="father">
    <div class="son"></div>
  </div>
</body>
</html>

父盒子高度为0

高度塌陷解决方式:

  • 给父元素设置高度
  • 触发BFC(见上篇触发BFC方式)
  • 给父元素加一个有高度且没有浮动的子元素
  • 使用伪元素清除浮动,如下:
.father::after {
  content: '';
  display: block;
  clear: both;
}
  1. 外边距塌陷:外边距塌陷分为相邻元素塌陷和嵌套盒子塌陷。相邻元素塌陷如下:
<html lang="en">
<head>
  <style>
    body {
      background: gray;
    }
    .son {
      width: 200px;
      height: 200px;
      background: tomato;
      margin-bottom: 20px;
    }
    .brother {
      width: 200px;
      height: 200px;
      margin-top: 50px;
      background: skyblue;
    }
  </style>
</head>
<body>
  <div class="father">
    <div class="son"></div>
    <div class="brother"></div>
  </div>
</body>
</html>

上盒子设置margin-bootom:20px;

下盒子设置margin-top:50px;

效果是外边距合并并且以较大的为主。
相邻元素塌陷解决方式:

  • 只给一个盒子设置margin
  • 用padding代替margin实现效果
  • 把其中一个盒子设置为行内块元素

嵌套盒子塌陷如下:

<html lang="en">
<head>
  <style>
    body {
      background: gray;
    }
    .father {
      background: blue;
    }
    .son {
      width: 200px;
      height: 200px;
      background: tomato;
      margin-top: 50px;
    }
  </style>
</head>
<body>
  <div class="father">
    <div class="son"></div>
  </div>
</body>
</html>

子元素设置margin,父元素塌陷

嵌套盒子塌陷解决方式:

  • 触发BFC

三省:JavaScript

8. var、let、const有什么区别?

var、let、const都可以声明变量,var声明的范围是函数作用域,let和const声明的范围是块级作用域。let和const声明的变量不能在声明之前使用,因为它们有暂时性死区,而var可以。for循环时推荐使用let,因为var会导致迭代变量渗透到循环体外部,从而引发问题。

关键字变量提升重复声明重复赋值块级作用域要初始化值
var
let
const
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端每日三省

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值