Но есть загвоздка. А если подробнее:
Как сделать блок с равными сторонами, в котором явно задается только одна сторона?
Например, ширина 300px, высота автоматически 300px.
Задачка на знание css, с которой я не справился, но понимаю, что решение на поверхности.
Вы должны знать что вертикальные внутренние (внешние тоже) отступы (padding-top, padding-bottom), если они заданы в процентах, рассчитываются от ширины родительского блока. Зная это, можно быстро сообразить, что 100% отступ будет равен 100% ширины. А это квадрат. Таким образом решение задачи может быть следующим: