Гуглите выражение
css padding hack — это как раз то, как сделать высоту блока пропорциональной ширине блока. Вот
песочница, я сделал блок с текстом в 2 раза меньше, чем его ширина. Еще для красоты нужно сделать внизу блока градиентную от белого к прозрачному подложку, чтобы текст, который не влезает в блок, красиво пропадал. Ну и еще нужно будет играться с max-width или max-height, иначе проценты всегда будут растягивать блок по высоте.