效果图
JS
import { useRef } from 'react';
import ballBg from '@/assets/ballNav/ballBg.png'
import centerNg from '@/assets/ballNav/centerNg.png'
import title from '@/assets/ballNav/title.png'
import pu from '@/assets/common/pu.png'
const boxStyle = {
height: '400px',
border: '1px solid pink',
overflowY: 'scroll',
}
const imageBoxStyle = {
width: '500px',
height: '500px',
margin: '20px auto',
}
const index = () =>
{
const images = []
const refs = []
const threshold = [0.01]
let data = [ballBg, centerNg, title, pu]
for (let i = 0; i < data.length; i++)
{
const ref = useRef()
refs.push(ref)
images.push(
<div style={imageBoxStyle} key={i}>
<img width={'100%'} ref={ref} data-src={data[i]} />
</div>
)
}
const io = new IntersectionObserver((entries) =>
{
entries.forEach((item) =>
{
if (item.intersectionRatio <= 0) return
const { target } = item
target.src = target.dataset.src
})
}, {
threshold,
});
const onload = () =>
{
refs.forEach((item) =>
{
console.log({ item });
io.observe(item.current)
})
}
return (
<div style={boxStyle}>
{images}
<img onError={onload} src="" />
</div>
);
};
export default index