Есть ли селектор CSS для элементов без атрибута? - PullRequest
48 голосов
/ 23 августа 2011

Я понимаю, что правила CSS могут быть нацелены на элементы, заданные значениями атрибутов, например ::10000

input[type="text"] {}

Могу ли я создать правило для элементов, которые опускают определенный атрибут? Например, можно ли нацеливать элементы без href или элементы, которые не указывают тип?

Ответы [ 5 ]

78 голосов
/ 23 августа 2011

Вы можете следовать этому шаблону:

a:not([href])
input:not([type])

Селектор атрибута используется для выбора элементов с указанным атрибутом.

:not поддерживается во всех современных браузерах и IE9 +, если вам нужна поддержка IE8 или ниже, вам не повезло.

1 голос
/ 26 июня 2019

Единственное решение, которое работало для меня, заключалось в том, чтобы поместить a:link { } в мой код.

я тоже пробовал

a:not([href]) input:not([href=""]) input:not([href~=""])

Но для файла .scss с несколькими тегами a, используемыми в качестве стандартных блоков кода (не моя идея), это было единственное решение.

1 голос
/ 23 августа 2011

Вы всегда можете установить другой стиль для a и href

Проверьте это: http://jsfiddle.net/uy2sj/

1 голос
/ 23 августа 2011

Для ссылок вы можете просто использовать:

a { color: red; }
a:link { color: green; }

скрипка: http://jsfiddle.net/ZHTXS/ нет необходимости в JavaScript.

Для атрибутов формы используйте шаблон неатрибутов, указанный выше input:not([type]), и если вам нужно поддерживать более старые версии IE, я, вероятно, добавлю класс и использую таблицу стилей, специфичную для IE, связанную с условными комментариями.

0 голосов
/ 23 августа 2011

Простой ответ на этот вопрос.

Нет.

Вы можете сделать это с помощью JavaScript, если хотите, чтобы я предоставил это решение?

Однако CSS Hack

(Однако, есть "хакерский" способ, которым я простозадумано для CSS) ..

Возьмите этот сценарий ... вы хотите, чтобы любые теги <a>, у которых нет href, были окрашены в красный цвет.

Например, вы можете предположить, что ваши атрибуты будут содержать только следующие атрибуты:

  • alt
  • title
  • href
  • target etc

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

a {
 color: red;
}

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

Таким образом, вы получите

a[href] {
  color: blue;
}

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

Исходный вопрос:

Могу ли я создать правило для элементов, в которых отсутствует определенный атрибут?

А нет, вы не можете!Не существует кросс-браузера, способ нацеливание / выбор элементов, которые пропускают атрибут с помощью CSS.Поэтому я чувствую, что предложенное мною решение является взломом, потому что оно идет вразрез с тем, чтобы добиться того, что задал вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...