Можете ли вы применять правила CSS в CSS, если div не существует?

Возможно ли это с помощью CSS?

Примените это правило, если .div1 не существует:

.div2{
  property: value;  
}

как

<div class="div1">
...
</div>

<div class="div2">
 <!-- it exists, so do nothing -->
</div>

и

<div class="div2">
 <!-- it doesn't exist, apply the css -->
</div>

Ответ 1

Если вы знаете стили "без стилей" div, вы можете использовать селектор sss для css для его стилизации одним способом, если он следует .div1, и "простой" способ, если он не делает - т.е.

.div2 {
    /* styled however you want */
}
.div1 + .div2 {
    /* 'plain' styling */
}

Посмотрите скрипту. Попробуйте удалить div1, чтобы увидеть div2, как это было бы стиле без div1

Ответ 2

Существует или не существует? Ваш вопрос меня смущает:)


Применить стиль к .div2, если .div1 существует:

Вариант 1: .div2 следует непосредственно после .div1

.div1 + .div2 {
  property: value;
}

Вариант 2: .div2 следует за .div1 как родной брат:

.div1 ~ .div2 {
  property: value;
}

Стиль .div2 без .div1:

Это немного взломать, но вы можете сделать обратное. Стиль .div2 обычно, а затем переопределить стиль с помощью селекторов выше.

Если .div1 не существует, .div2 получает нормальный стиль.

.div2 {
  background: #fff;
}

.div1 + .div2 {
  background: #f00; /* override */
}

/* or */

.div1 ~ .div2 {
  background: #f00; /* override */
}

Ответ 3

НЕТ

Только с CSS условия if, которые проверяют доступность элемента, невозможно. Вы должны использовать JavaScript, (рекомендуется jQuery).

Примечания. С помощью CSS вы можете проверить некоторые условия элемента, например, проверить, имеет ли элемент атрибут (например, input[type=text]), или проверяет, является ли элемент первым элементом списка (например, p:first-child), и т.д. Но вы не можете проверить что-либо из элементов элемента-элемента элемента или предков. Также вы не можете проверить отрицательные условия в большинстве случаев.

Ответ 4

Нет, это невозможно. Но вы можете создать класс "div3" и в вашем коде определить, существует ли DIV1 и в этом случае применять класс "div3" вместо "div2"

Ответ 5

Вообще говоря, нет, вы не можете этого сделать.

Но вы можете "взломать" его с помощью селекторов CSS, я имею в виду:

  • + .something селектор
  • ~ .something селектор

Я бы использовал второй селектор, который является селектором "общего родного брата".

Учитывая HTML, который вы опубликовали, вы можете применить стиль к классу .div2, а затем reset, используя селектор .div1 ~ .div2.

Так что-то вроде этого:

.div1 {
  color: red;
}

.div2 {
  color: blue;
}

.div1 ~ .div2 {
  color: black;
}

Таким образом, с первым фрагментом HTML div2 будет черным, а второй фрагмент будет синим.