1. Высоту списку задавать не нужно. В верстке не принято задавать высоту элементам с контентом. Просто потому что мы никогда не знаем сколько его там будет на самом деле.
2. За отступы между элементами отвечает margin. Или gap в сетках на флексах и гридах.
3. Остальное можно сказать, только смотря в ваш код.
Научитесь делать песочницы с кодом, например, на codepen.io
те полностью отображаться без обрезки и умеситься в div блок.
Пропорции нас не волнуют, правильно я понимаю? Стали круги овалами и черт с ними, так? И пальцы немного раздуло.
Я к чему: это всё банальная геометрия.
Если она вам не нравится, то рисуйте свою картинку под каждый размер окна. Столько, сколько нужно, чтобы нравилось.
pet1987, ну уж при contain изображение нигде не обрезается, тут уж не грешите. При contain оно как раз таки полностью видно без искажения пропорций.
Но ок, ваши страдания понятны.
Что сделать следующим ходом? Нарисуйте, а как оно должно выглядеть?
Вот берете ширину на которой вас не устраивает текущее положение дел и рисуете как должно быть.
Где хотите, в фигме, фотошопе, на бумажке.
Breeze1, так зачем вы пишете, что отступ должен зависеть и от размера кнопок? Определитесь сначала.
margin в процентах считается от ширины родителя. Но вы делаете родителя по контенту. Итого, кнопки всегда будут выпадать из родителя на размер суммы отступов.
2. За отступы между элементами отвечает margin. Или gap в сетках на флексах и гридах.
3. Остальное можно сказать, только смотря в ваш код.
Научитесь делать песочницы с кодом, например, на codepen.io