实现响应式布局

响应式:页面根据用户设备环境(系统平台、屏幕尺寸、屏幕定向等)自动进行相应的响应和调整 实现:

  • 弹性布局(flex、grid)
  • 媒体查询
  • 相对单位(rem、百分比、vw/vh)

隐藏页面元素

  • display: none
  • visibility: hidden
  • opacity: 0
  • position: absolute 移到显示范围外(不推荐)
  • 宽高改为 0(不推荐)
display: nonevisibility: hiddenopacity: 0
页面中不存在存在存在
绑定事件不触发不触发触发
回流不会不会
重绘如果是 transition 时走独立合成层,不会重绘

视差滚动

多层背景以不同的速度移动,形成立体的运动效果

实现

background-attachment: fixed 让背景固定,不会随着元素的内容移动

padding-top 和 margin-top 的百分比相对于什么

相对于父元素的 width

原因:我们认为,正常流中的大多数元素都会足够高以包含其后代元素(包括外边距),如果一个元素的上下外边距是父元素的 height 的百分数,就可能导致一个无限循环,父元素的 height 会增加,以适应后代元素上下外边距的增加,而相应的,上下外边距因为父元素 height 的增加也会增加,无限循环。

一个比较经典的应用场景:移动端图片展示,盒子设高度为 0,宽度为 100%,padding-top 设置为 100%,这样这个盒子的高度始终会和盒子的宽度一样,之后里面的图片尺寸按照 1:1 设计,宽高都设置为 100% 就可以完美显示了。