Очевидно, вы не можете установить максимальную ширину img к его исходным размерам, используя только css. Я попытался реализовать его с помощью React.
Я создал общий c компонент изображения реакции:
import React, {useState, useRef, useEffect} from 'react';
import PropTypes from 'prop-types';
import CONSTANTS from "../../CONSTANTS/CONSTANTS";
export const Picture = ({src, alt}) => {
const [dimensions, setDimensions] = useState({});
const {initialWidth, initialHeight} = dimensions;
const imgRef = useRef(null);
const setImageDimensions = () => {
const imgNode = imgRef.current;
const initialWidth = imgNode.naturalWidth;
const initialHeight = imgNode.naturalHeight;
const ratio = initialWidth / initialHeight;
const newDimensions = {initialWidth, initialHeight, ratio};
setDimensions(prev => {
if (_.isEmpty(prev)) {
prev = newDimensions;
}
return prev;
})
};
return <img onLoad={setImageDimensions} style={initialWidth && initialHeight ? {
maxWidth: `${initialWidth}px`,
maxHeight: `${initialHeight}px`
} : {}} src={src} alt={alt ? alt : ''} ref={imgRef}/>
};
Состояние размеров установлено правильно, когда загрузка img завершена , Однако встроенный стиль не применяется. Может ли кто-нибудь помочь мне здесь? Кажется, мне не хватает некоторых базовых c знаний.
Большое спасибо: -)
РЕДАКТИРОВАТЬ: у меня изначально был "initalHeight" вместо "initialHeight". Код это сейчас, работает. Однако, как указывает @Stevetro: проверка стиля НЕ нужна.