总结
1. ResizeObserver
2. MutationObserver
3. IntersectionObserver
4. PerformanceObserver
5. ReportingObserver
使用方式
1. ResizeObserver
const observer = new ResizeObserver(entries => {
entries.forEach(entry => {
console.log('元素尺寸:', entry.contentRect);
});
});
observer.observe(element);
observer.disconnect();
2.MutationObserver
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
console.log('变化类型:', mutation.type);
});
});
observer.observe(element, {
attributes: true,
childList: true,
subtree: true
});
observer.disconnect();
3. IntersectionObserver
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('元素进入视口');
}
});
}, {
threshold: 0.5,
rootMargin: '0px'
});
observer.observe(element);
observer.disconnect();
4. PerformanceObserver
const observer = new PerformanceObserver(list => {
list.getEntries().forEach(entry => {
console.log('性能指标:', entry);
});
});
observer.observe({ entryTypes: ['measure'] });
observer.disconnect();
5. ReportingObserver
const observer = new ReportingObserver(reports => {
reports.forEach(report => {
console.log('报告:', report);
});
});
observer.observe();
observer.disconnect();
通用使用模式
- 创建实例:new Observer(callback)
- 配置选项:大多数 API 支持配置对象
- 开始观察:observe(target)
- 停止观察:disconnect()