Для визуального редактора как раз таки через наследование делается. Вот писал для этих целей небольшой фреймворк https://github.com/AndreyMyagkov/Typography А на счет остального - вы не поняли смысла БЭМ - это плоское дерево элементов, для избегания наследования. Для того, что бы любой элемент можно было переместить в другой блок или поменять ему тег, ну и для правки всего и вся исключительно через CSS.
Я так и понял откуда дует ветерок. Гугл много чего советует не очень хорошего. Нужно придерживаться разумного подхода. Шрифт должен быть подгружен до его объявления в css, у вас наоборот.
Есть еще грубые, но быстрые алгоритмы. Можно обсчитать через точку или через строчку, потом интерполировать. Вариантов много. Как на самом деле - никто не скажет.
Предположим вам нужно встраивать свой js код на другие сайты, например пишете слайдер для сайта и он должен уметь прокручивать в право, в лево, останавливаться, запускаться, включать произвольный слайд. Где гарантия что на другом сайте не окажется таких же функций, скажем rotateLeft/rotateRight/stop/start/show и тп?
А что, если нужно иметь много слайдеров на странице? А так обернули в паттерн модуля - решили эти проблемы.
Никита Данилов: мне кажется usemap и адаптив не получится, т.к. ему нужны координаты в пикселях. Ссылки надо сделать ссылками, пустыми блоками поверх фона, а их размер и позиции высчитывать или скриптом или через vh и vw
theWaR_13: странно, что не работал padding. Margin может не работать, если срабатывает правило margin collapse. Проценты отсчитываются от родителя, родителю нужно прописать размеры в явном виде, т.е. 500px или 100%.