BFC
BFC的全称是Block Formatting Content, BFC里面的盒模型,如果是行内元素则会并排排列,如果是块状元素则独占一行,垂直放置。 这个概念是在BFC区域内的元素无论如何布局,都不会影响到外面的元素。
触发BFC的方式有:
- 根元素,即
<html> - 浮动元素:
float值为left、right overflow值不为visible,即为auto、scroll、hiddendisplay值为inline-block、table-cell、table-caption、table、inline-table、flex、inline-flex、grid、inline-grid- 绝对定位元素:
position值为absolute、fixed
什么情况不是BFC呢?
- 父元素没有设置padding或border,同时,子元素设置了margin,导致子元素的margin超出父元素,影响到其他父元素以外区域。
- 当子元素设置了浮动,导致父元素高度坍塌,这时候加上
overflow: hidden,触发BFC则可以使高度不坍塌
js动画和css动画区别
CSS动画
- 在渲染进程中执行,不会影响js中运行的脚本,导致卡顿
- 运行过程控制弱,不能绑定事件控制回调函数
- 如果需要实现复杂动画,会导致代码笨重
JS动画
- 可以给动画添加暂停、开始等控制时间
- js大多数没有兼容性问题
- 有些动画效果只能js实现
last-of-type 和 last-of-child的区别
last-of-type 和 last-child 是 CSS 选择器中的两个伪类,用于选择元素中的最后一个元素。它们之间的区别在于选择的范围不同。
last-of-type选择器:- 该选择器选择同一父级下的最后一个具有相同元素类型(标签名)的元素。
- 它不考虑元素的位置或顺序,只关注元素的类型。
- 如果元素是其父级中唯一的一个该类型元素,则会被选中。
示例:
<div>
<p>第一个段落</p>
<span>一个 span 元素</span>
<p>最后一个段落</p> <!-- 被选中 -->
</div>
p:last-of-type {
color: red;
}
上述代码中,<p> 元素中的最后一个段落会被选中并设置颜色为红色。
last-child选择器:- 该选择器选择同一父级下的最后一个子元素,无论这个子元素的类型是什么。
- 它考虑元素的位置和顺序,而不仅仅是元素的类型。
示例:
<div>
<p>第一个段落</p>
<span>一个 span 元素</span>
<p>另一个段落</p>
<p>最后一个段落</p> <!-- 被选中 -->
</div>
div p:last-child {
color: blue;
}
上述代码中,<div> 元素中的最后一个子元素 <p> 会被选中并设置颜色为蓝色。
总结:
last-of-type选择器选择同一父级下的最后一个具有相同元素类型的元素。last-child选择器选择同一父级下的最后一个子元素,无论其类型是什么。
导入样式时,使用link和@import的区别?
- link的权重高于@import
- link是html标签,会被同时加载,而@import引用的css等到页面被加载完后再加载
@import的样式在加载解析的过程中会阻塞其他文件的加载
transition和transform的区别
- transtion是过渡属性: 语法:transition: CSS属性,花费时间,效果曲线(默认ease),延迟时间(默认0)
- transform是转换属性:
- transform: translate(120px, 50%):位移
- transform: scale(2, 0.5):缩放
- transform: rotate(0.5turn):旋转
- transform: skew(30deg, 20deg):倾斜
移动端适配的配置:meta
为了处理移动端,页面头部必须有meta声明viewport
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no”>
属性对应如下:
- width=device-width: 是自适应手机屏幕的尺寸宽度
- maximum-scale:是缩放比例的最大值
- initial-scale:是缩放的初始化
- user-scalable:是用户的可以缩放的操作