link和@import的区别?css塌陷是怎么产生的? var、let、const有什么区别?

简介: var、let、const都可以声明变量,var声明的范围是函数作用域,let和const声明的范围是块级作用域。let和const声明的变量不能在声明之前使用,因为它们有暂时性死区,而var可以。

一省: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 | ❎ | ❎ | ❎ | ✅ | ✅ |

相关文章
|
3月前
|
前端开发 JavaScript C++
揭秘Web前端CSS引入秘籍:Link vs @import,你的选择决定页面加载速度,你选对了吗?
【8月更文挑战第26天】本文探讨了Web前端开发中CSS的引用方法,主要包括行内样式、内部样式表及外部样式表三种形式。重点对比了外部样式表中的`&lt;link&gt;`和`@import`两种引入方式。`&lt;link&gt;`作为HTML元素,在页面加载初期就开始加载样式资源,支持并行加载,对提高页面加载速度有益。而`@import`作为一种CSS规则,仅能在CSS文件中使用,其引入的样式表会在页面完成加载后才开始加载,可能导致渲染延迟且不支持并行加载。因此,在多数情况下,推荐采用`&lt;link&gt;`方式引入外部样式表,以确保更佳的性能表现和浏览器兼容性。
106 2
|
18天前
|
前端开发 Ruby
CSS 预编语言的区别
【10月更文挑战第24天】Sass、Less 和 Stylus 等 CSS 预编语言在语法特点、功能特性、性能表现、社区和生态系统等方面存在着不同之处。在选择使用哪种预编语言时,需要综合考虑项目需求、团队技术偏好、个人习惯等因素。你可以根据具体情况进行评估和选择,以充分发挥这些语言的优势,提高前端开发的效率和质量。
|
18天前
|
前端开发 开发者 UED
设备像素、css像素、设备独立像素、dpr、ppi之间的区别
【10月更文挑战第24天】在实际应用中,这些概念相互关联,共同影响着网页在不同设备上的显示表现。开发者需要了解它们之间的区别和关系,以便更好地进行网页设计和优化,确保在各种设备上都能提供良好的用户体验。
|
5月前
|
编解码 前端开发 UED
解密CSS单位:px、em、vh的区别与应用
解密CSS单位:px、em、vh的区别与应用
60 1
WK
|
2月前
|
存储 移动开发 前端开发
HTML5和CSS5有什么区别
HTML5和CSS5在网页设计中扮演不同角色。HTML5是超文本标记语言的第五版,通过新特性如实时更新、跨平台运行及更好的安全性等,定义网页内容和结构。尽管常说CSS5,实际最新的CSS版本包含多个模块如CSS Grid和Flexbox,主要用于控制网页布局和样式,提供强大的选择器、动画支持和响应式设计,与HTML5相辅相成,共同构建现代网页的基础架构。
WK
47 3
|
1月前
|
前端开发 JavaScript
css的引入方式和区别
css的引入方式和区别
34 0
|
2月前
|
前端开发
为什么最好把 CSS 的 link 标签放在 head 标签之间?
为什么最好把 CSS 的 link 标签放在 head 标签之间?
|
4月前
|
前端开发 JavaScript API
深入理解css中的link 和 @import
【7月更文挑战第3天】CSS中的link与@import有显著差异。link是HTML标签,用于并行加载CSS,支持动态插入,用途广泛,如加载图标。@import是CSS语法,加载顺序在页面解析后,不支持动态引入,但可在CSS中导入多个样式表。link在性能和兼容性上优于@import。优选link,@import适用于多文件组织样式。
105 1
深入理解css中的link 和 @import
|
3月前
|
Java Spring 数据库
怎样动动手指就能实现数据操作?Spring Data JPA背后的魔法揭秘
【8月更文挑战第31天】在Java开发中,数据库交互至关重要。传统的JDBC操作繁琐且难维护,而Spring Data JPA作为集成JPA的数据访问层解决方案,提供了CRUD等通用操作接口,显著减少代码量。通过继承`JpaRepository`,开发者能轻松实现数据的增删改查,甚至复杂查询和分页也不再困难。本文将通过示例详细介绍如何利用Spring Data JPA简化数据访问层的开发,提升代码质量和可维护性。
42 0
|
3月前
|
前端开发
css中px和em的区别
css中px和em的区别
60 0