Rumah > Soal Jawab > teks badan
Saya mengimport kedua-dua imej ( IMG
和 IMG2
)。 IMG 假设在视口宽度小于 600px 时显示,而如果视口宽度大于或等于 600px,则显示另一张。所以我添加了一个函数来检查视口宽度,然后它返回这两个图像之一,但问题是它只返回我放入函数中的第一个图像,即 IMG
. Walaupun lebar port pandangan menjadi lebih besar daripada 600px, ia masih menunjukkan IMG dan bukannya IMG2. Nota: Saya boleh menyelesaikan masalah ini dengan hanya menggunakan pertanyaan media dan menetapkan paparan kepada Tiada, tetapi saya mahu tahu bagaimana untuk menyelesaikan masalah ini menggunakan React
Pautan ke semua kod saya dalam Github: https://github.com/Issamath/PerfumeProduct.com
import IMG from '../../assets/image-product-mobile.jpg' import IMG2 from '../../assets/image-product-desktop.jpg' const ProductImage = () => { function displayImage(){ let vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); console.log(vw); if(vw < 600) { console.log(vw + "is smaller than 600"); return (<img src={IMG} alt="" />); } else { console.log(vw + "is bigger than 600"); return (<img src={IMG2} alt="" />); } } return ( <div className='container-img'> {displayImage()} </div> ) } export default ProductImage
.container-img img { height: 15rem; width: 100%; background: white; border-radius: 0.8rem 0.8rem 0 0; } .container-img { } /* -----------------for bigger phones------------------- */ @media screen and (min-width: 390px) { .container-img img { height: 20rem; } }
P粉4019012662024-04-03 10:46:34
Untuk melakukan ini dengan React, anda perlu melampirkan pada acara mengubah saiz dokumen.
Di bawah ialah contoh mudah menukar teks dan warna latar belakang pada saiz semula.
const {useEffect, useState} = React; const getWidth = () => document.documentElement.clientWidth; const ResizeCheck = () => { const [width, setWidth] = useState(getWidth()); useEffect(() => { const resize = () => setWidth(getWidth()); window.addEventListener('resize', resize); return () => window.removeEventListener('resize', resize); }, []); return{ width >= 600 ?; } const root = ReactDOM.createRoot(document.querySelector('#mount')); root.render(Greater than equal to 600:Less than 600});
sssccc sssccc