@lagudal

Как то можно оптимизировать такие less-конструкции?

К примеру, есть довольно сильно вложенное дерево dom, и так как довольно часто имена классов повторяются на разных уровнях вложенности то нет особой возможности сократить селекторы.
Вот как должен выглядеть css для общего селектора.
.ammenu-menu-wrapper.-desktop .ammenu-main-container .ammenu-items .ammenu-item.-main.-full .ammenu-submenu .ammenu-categories-container.ammenu-categories .ammenu-item.-child .ammenu-wrapper .ammenu-link.-level1 {
  content: '';
  width: 100%;
  height: 150px;
  background-size: 120px 120px !important;
  background-repeat: no-repeat !important;
  display: block;
  padding-top: 120px;
}

И кроме того, есть индивидуальные селекторы, которые необходимо выделить, у каждого свой background.
Например,
.ammenu-menu-wrapper.-desktop .ammenu-main-container .ammenu-items .ammenu-item.-main.-full:nth-child(1) .ammenu-submenu .ammenu-categories-container.ammenu-categories .ammenu-item.-child:nth-child(1) .ammenu-wrapper .ammenu-link.-level1 {
  background-image: url(/pub/media/wysiwyg/pp-shop/pp-mega-menue/mm_jahresplaketten.png);
}

И таких будет штук 25-30, первый nth-child от 1 до 8, и второй- от 1 максимум до 7.
Отличие только background.
И вот все это должно быть в less.
Каким образом все это должно выглядеть?
Ну если для общего селектора записать как положено
spoiler
.ammenu-menu-wrapper {
  &.-desktop {
    .ammenu-main-container {
      .ammenu-items {
        .ammenu-item {
          &.-main {
            &.-full {
              .ammenu-submenu {
                .ammenu-categories-container {
                  &.ammenu-categories {
                    .ammenu-item {
                      &.-child {
                        .ammenu-wrapper {
                          .ammenu-link {
                            &.-level1 {
                              content: '';
                              width: 100%;
                              height: 150px;
                              background-size: 120px 120px !important;
                              background-repeat: no-repeat !important;
                              display: block;
                              padding-top: 120px;
                              overflow: visible;
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

То что делать для конкретных? Ну не писать же 30 раз
spoiler
.ammenu-menu-wrapper {
  &.-desktop {
    .ammenu-main-container {
      .ammenu-items {
        .ammenu-item {
          &.-main {
            &.-full {
              &:nth-child(1) {
                .ammenu-submenu {
                  .ammenu-categories-container {
                    &.ammenu-categories {
                      .ammenu-item {
                        &.-child {
                          &:nth-child(1) {
                            .ammenu-wrapper {
                              .ammenu-link {
                                &.-level1 {
                                  background-image: url(/pub/media/wysiwyg/pp-shop/pp-mega-menue/mm_jahresplaketten.png);
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

Есть какой то способ, позволяющий лаконично все это описать?
Или забить и записать все в css ситнаксисе, да не мучаться?
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 2
Aetae
@Aetae
Тлен
Ответ: ограничиться максимум двойной вложенностью.

Никакого смысла делать паровозы нет. А если есть - у вас проблемы с архитектурой.
Почитайте про БЭМ. Не обязательно ей следовать, но для понимания таких вопросов - полезно.
Ответ написан
IonDen
@IonDen
JavaScript developer. IonDen.com
1. Нельзя делать столь сильно вложенные конструкции. Это не читабельно и это невозможно поддерживать.
2. Если несколько элементов используют одни и те же стили - они должны иметь общий класс, не нужно дублировать стили.
3. Используйте БЭМ. Там максимальная вложенность ограничена и это заставит вас по другому проектировать код
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы