Поскольку вертикальные отступы, заданные в процентах, рассчитываются из ширины элемента, мы можем сделать div всегда иметь определенное соотношение сторон.
Если мы установим padding-top:50%; height:0
,высота div всегда будет равна половине его ширины.И чтобы текст появлялся внутри такого контейнера, вам нужно сделать его position:relative
, поместить в него еще один div и расположить его на расстоянии 10 пикселей от всех четырех сторон (отступы, которые вы установили первыми).
См. мой форк вашего кода .