Суть БЭМ не только в таком именовании, но и в том, что вы можете в любой момент взять любой блок, в любом сочетании и перенести в другое место и все будет работать. Никаких конфликтов, никаких коллизий имен, никаких зависимостей от областей видимости. В этом его сила.
Ну а избыточность описания легко исправляется инструментами сборки, которые сами соберут все эти длинные имена.
То что вы предлагаете, конечно тоже имеет право на существование. Используйте в своих проектах, если вам это подходит.
position: absolute - имеет свою область применения и говорить что это плохо, это все равно что сказать "прыгать это плохо, а просто стоять хорошо". В какие-то моменты прыгать надо.
Тут проблема в другом, в какой-то момент разработка сайта без интерактива и без бекенда упрется в барьер сложности. Например невозможно сделать каталог продукции из 100.000 наименований без бекенда.
1. Уберите пробелы в именах ID. Пробелы не разрешены
2. Все прекрасно работает: https://jsfiddle.net/IonDen/8m2sjafm/, разумеется block-3 будет теперь вне потока.
Если вас все устраивает в чем проблема? И с чего вы взяли что это затратно для браузера?) На мелких проектах вы никогда не упретесь в потолок производительности.
1. Вам нужно ввести переменную previous_point
2. При каждом наведении, сохранять в нее текущую позицию
3. Дальше вам нужно усложнить условия, что-то вроде:
$(".right").on("hover", function () {
if (previous_point === "bottom") {
arrow.css({ transform: 'rotate(290deg)' }); // цифра от балды
} else {
arrow.css({ transform: 'rotate(180deg)' });
}
});
1. У вас текстура корявая, нужно сделать плавно переходящую
2. Нельзя делать позиционирование фона в процентах здесь. Это работает по другому. 50% - значит центр, 100% значит правый край, а не то что вы могли подумать.
Код разбивают на файлы для удобства разработки. В общем итоге сборщик все равно потом склеит все в один файл.
1. То что вы схлопнули не нужные участки кода средствами IDE - это не идеальное и очень ограниченное решение.
В большом проекте структура кода может иметь больше чем 1 уровень вложенности, и реализовать такую структуру, скрывая лишние элементы нельзя.
2. Переключаться между файлами удобнее, ведь даже одна фича может быть разбита на несколько файлов. Код будет чище, не нужно будет постоянно скроллить вверх-вниз на неизвестное расстояние. На другую вкладку можно переключаться быстро хоткеями.