Arhn - архитектура программирования

Sass и комбинированный дочерний селектор

Я только что открыл для себя Sass, и мне это очень понравилось.

На своем веб-сайте я использую древовидное меню навигации, оформленное с использованием дочерний комбинатор (E > F).

Есть ли способ переписать этот код с помощью более простого (или лучшего) синтаксиса в Sass?

#foo > ul > li > ul > li > a {
  color: red;
}
08.09.2011

  • Я думаю, что с помощью более простых / лучших средств OP таким образом, чтобы использовать пробелы для обозначения иерархии 09.01.2019

Ответы:


1

Без комбинированного дочернего селектора вы, вероятно, сделали бы что-то подобное:

foo {
  bar {
    baz {
      color: red;
    }
  }
}

Если вы хотите воспроизвести тот же синтаксис с >, вы можете сделать следующее:

foo {
  > bar {
    > baz {
      color: red;
    }
  }
}

Это компилируется в это:

foo > bar > baz {
  color: red;
}

Или в sass:

foo
  > bar
    > baz
      color: red
08.09.2011
  • Это просто продлит его жизнь, не так ли? 08.09.2011
  • Я думал, что это то, что хочет OP 08.09.2011
  • хорошо, спасибо. кстати, как заявил BoltClock, длиннее (и как-то уродливее для меня). Похоже, мне придется остаться со своим старым стилем. 08.09.2011
  • вам нужно определить более приятный синтаксис;) 08.09.2011

  • 2

    Для того единственного правила, которое у вас есть, нет более короткого способа сделать это. Дочерний комбинатор одинаков в CSS и в Sass / SCSS, и ему нет альтернативы.

    Однако, если у вас было несколько таких правил:

    #foo > ul > li > ul > li > a:nth-child(3n+1) {
        color: red;
    }
    
    #foo > ul > li > ul > li > a:nth-child(3n+2) {
        color: green;
    }
    
    #foo > ul > li > ul > li > a:nth-child(3n+3) {
        color: blue;
    }
    

    Вы можете сжать их до одного из следующих:

    /* Sass */
    #foo > ul > li > ul > li
        > a:nth-child(3n+1)
            color: red
        > a:nth-child(3n+2)
            color: green
        > a:nth-child(3n+3)
            color: blue
    
    /* SCSS */
    #foo > ul > li > ul > li {
        > a:nth-child(3n+1) { color: red; }
        > a:nth-child(3n+2) { color: green; }
        > a:nth-child(3n+3) { color: blue; }
    }
    
    08.09.2011
  • Значит, для комбинированного дочернего селектора нет преобразования ... может быть, какие-нибудь альтернативы ему? 08.09.2011
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..