Skip to content

Latest commit

 

History

History
54 lines (35 loc) · 2 KB

Resize Observer API.md

File metadata and controls

54 lines (35 loc) · 2 KB

Resize Observer API

Resize Observer API 提供了一种高性能的机制,通过该机制,代码可以监视元素的大小更改,并且每次大小更改时都会向观察者传递通知。

Resize Observer API 支持情况

Resize Observer API 支持情况

响应迅速的 Web 应用程序会根据视口大小调整其内容。这通常是通过 CSS 和媒体查询来实现的。当 CSS 能力不够时,我们会使用 JavaScript。Javascript DOM 操作通过侦听 window.resize 事件与视口大小保持同步。

现代的 Web 应用程序通过一系列组件构成,这些组件也需要响应。以往的方法(CSS 媒体查询,JS window.resize,以及其他 Hack)无法跟踪组件的大小。

随着响应式 Web 应用的普及,对响应式组件的需求也会随之增长。ResizeObserver 的出现正是为组件提供响应大小变化的方式。

示例:调整图像大小

下面是一个使用 ResizeObserver 在调整图像大小的示例。

const hasSupport = () => (window.ResizeObserver ? true : false)
const range = document.getElementById('range')
const img = document.getElementById('img')
const text = document.getElementById('resize-value')

function init() {
  if (hasSupport()) {
    let resizeObserver = new ResizeObserver(() => {})

    resizeObserver.observe(img)
  }

  return '不支持 Resize Observer API'
}

function resize(e) {
  const value = e.target.value

  img.style.width = `${value}%`
  text.textContent = `${value}%`
}

range.addEventListener('input', (e) => {
  resize(e)
})

init()

示例地址

更多资料