1) Если говорить об изображении, как обычно пишут верстку, если контент динамический, картинки в такие блоки вставляются любых размеров?
Для контентных:
Делают обертку, задают ей пропорции. Например, через aspect-ratio.
Картинке задают object-fit, object-position.
Если есть варианты для ретины и варианты в разных форматах (webp, avif), то используют теги picture и source.
Для фоновых:
background-size, background-position
Если картинки подготовлены, то супер. Если тяп-ляп, то и выйдет соответственно.
если блоки начинают адаптивно перескакивать, допустим flex: wrap или медиа запрос
С помощью transition.
Но сначала нужно ответить на вопрос: много вы видели пользователей, которые сидят и таскают браузер за край во время просмотра сайта?
Замените на что-то типа 90deg, red 0 1px, transparent 1px; и сделайте повторяющимся. Т.е. чтобы палка была по краю градиента без calc. Либо наоборот, справа, как удобнее.
Стиль рассчитывается динамически скриптом.
Т.е. переопределить его можно с помощью !important либо тоже скриптом.
Но, возможно, вашу проблему сможет решить свойство transform.
Дополню, что он не просто убирает display, а конкретно его дописывает через атрибут style. На тот, который был до none, т.е. в данном случае на inline.
Для контентных:
Делают обертку, задают ей пропорции. Например, через aspect-ratio.
Картинке задают object-fit, object-position.
Если есть варианты для ретины и варианты в разных форматах (webp, avif), то используют теги picture и source.
Для фоновых:
background-size, background-position
Если картинки подготовлены, то супер. Если тяп-ляп, то и выйдет соответственно.
С помощью transition.
Но сначала нужно ответить на вопрос: много вы видели пользователей, которые сидят и таскают браузер за край во время просмотра сайта?