2016-10-29 2 views
-2

У меня возникли проблемы с использованием некоторых относительно простых селекторов CSS с использованием :not. А именно, следующий селектор дает мне ошибку:Невозможно использовать детей с: не псевдоселектором

a:not(.ebook_document *) 

Я пытаюсь получить все <a> элементы, которые не являются потомками элемента с классом ebook_document. Это также не:

a:not(.ebook_document > *) 

Как это:

a:not(.ebook_document, *) 

Ввод селекторы сами по себе, а не в :not разделе работает отлично. Что я сделал не так?

+2

: не только принимает селектор _simple_. Кроме того, https://developer.mozilla.org/en/docs/Web/CSS/:not - _ "Этот селектор применяется только к одному элементу, вы не можете использовать его для исключения всех предков. Например,' body: not (table) a 'будет по-прежнему применяться к ссылкам внутри таблицы, так как будет совпадать с: not() частью селектора." _ То, что вы хотите, невозможно использовать: нет. – CBroe

+0

@CBroe нормально, это отвечает на мой вопрос. Спасибо. – Markasoftware

ответ

3

: не только селектор simple. (На данный момент, CSS 4 расширяется, что к selector list.)

Plus, https://developer.mozilla.org/en/docs/Web/CSS/:not -

This selector only applies to one element; you cannot use it to exclude all ancestors. For instance, body :not(table) a will still apply to links inside of a table, since will match with the :not() part of the selector."

То, что вы хотите, не представляется возможным с помощью: нет.

Вы можете идти только об этом наоборот - формат все «нормальные» ссылки, а затем применить другое форматирование для ссылок внутри целевого элемента (ов) с использованием .ebook_document a { ... }

Так это означает, что вместо того, не прилагая стилей для этих ссылок в первую очередь, вам может потребоваться перезаписать стили, которые вам не нравятся для этих ссылок.

(Или используйте initial/all на самом деле сбросить стили, но поддержка браузера для этого еще не хватает AFAIK.)

+0

Спасибо. То, что я закончил, - это просто найти все элементы '' и проверить их родословную на javascript, так как производительность не имеет значения для того, что я делаю. – Markasoftware

0

Хм, не должен ли это быть: нет (.ebook_document)? Я не тестировал его, но, похоже, это должно ссылаться на теги, которые не имеют тега .ebook_document.

+0

Я хочу, чтобы все теги, которые не являются дочерними элементами .ebook_document, даже если у них нет класса .ebook_document. – Markasoftware