#css #reactjs #next.js
Вопрос:
При использовании Next.js компонент изображения, документы утверждают, что: «При заполнении изображение растягивается как по ширине, так и по высоте до размеров родительского элемента, обычно в паре с подгонкой объекта».
Однако это совсем не то, что он делает. То, что он на самом деле делает, — это заполняет изображение, чтобы оно занимало весь экран в фиксированном положении, которое не учитывает прокрутку. Я пробовал когда-либо одно object-fit
возможное значение для img
стиля, и ничто не делает его таким, чтобы компонент заполнял родительский элемент так, как это должно быть. Проблема, безусловно, связана с тем фактом, что Image
компонент завернут в div
форму, которая не может быть оформлена в приложении React.
Чтобы воспроизвести, создайте новый следующий проект и поместите изображение в общую папку. Сделай это:
export default function Home() {
return (
<div>
<div style={{width: '100px', height: '100px'}}>
<Image src={"/i.png"} layout='fill'/>
</div>
</div>
)
}
Изображение займет весь экран. Вы можете попробовать стилизовать Image
компонент, может быть, я чего-то не понимаю.
Кто-нибудь знает, как это исправить или почему это происходит? Эта функция просто полностью сломана?
Ответ №1:
Обертывающий div должен иметь position: relative
:
export default function Home() {
return (
<div>
<div style={{width: '100px', height: '100px', position: 'relative'}}>
<Image src={"/i.png"} layout='fill'/>
</div>
</div>
)
}
Это следствие того, как position: absolute
работает. Содержащийся в нем блок будет ближайшим элементом-предком, имеющим любое значение позиции, кроме static
(начального значения).
Комментарии:
1. спасибо, я этого не видел, очевидное решение. Возьми мой голос, я сейчас пойду спать…
Ответ №2:
Вам нужно использовать position: relative
для родительского элемента.