Skip to content

响应式布局

现在最为人所知的响应式布局方案是通过css的@media指令实现的.

媒体查询有很大的缺陷, 就是他只能基于屏幕去响应, 而无法基于布局容器本身去实现.

如何在容器中实现

答案是通过js Web API实现.

浏览器中提供了一个构造函数ResizeObserver. 该api能够对指定的dom进行监听, 监听其size大小的变化, 一旦变化即可做出其他操作.

ts
const observer = new ResizeObserver((entries) => {
  // do sth
})

observer.observe(document.getElementById('container'))

新的CSS特性

@container是一项新的css特性, 他可以实现和上述js中同样的效果, 并且功能更加清大, 效果更好, 实现起来更加方便, 缺点是兼容性相对较差.

css
@container layout (width < 400px) {
  /* 样式 */
}

.container {
  container-name: layout;
  container-type: inline-size;
}

MIT Licensed