Найдите, имеет ли класс границу в css

#css #border

#css #граница

Вопрос:

Найдите, имеет ли класс границу только в css, используя селектор атрибутов или любым другим способом.Если у него ее нет, то примените границу.Намерение не состоит в том, чтобы возвращаться ни к одному из jquery. Возможно ли этого достичь?


Отредактировано, чтобы включить ответ от @nag (OP):

В IE8 нет border for select . Итак, я пытаюсь выполнить сброс css следующим образом:

 select, input[type="file"], textarea {
    border: solid 1px #7F9DB9;
 }
  

Проблема в том, что он переопределяет любой ранее существовавший стиль из-за специфики. Я пытался использовать фильтр выражений, но с DocType в IE8, похоже, это не работает.

Комментарии:

1. @ попробуйте сделать это с помощью !важно, если css по умолчанию не имеет такого же знака

Ответ №1:

В CSS нет концепции или реализации if/else операторов, поэтому это невозможно только в CSS.

Однако, если вы определяете border для элемента, а затем позже переопределяете это border , второй оператор переопределит первый (предполагая столь же специфичный селектор), поэтому я не уверен, почему вам нужно применять a border только в том случае, border если у элемента еще нет, а не определено:

 div {
    border: none; /* removes the border */
}

/* other stuff */

div {
    border: 1px solid #f90; /* defines the border */
}
  

Аналогично:

 div {
    border: 5px solid #0f0; /* defines the border */
}

/* other stuff */

div {
    border: 1px solid #f90; /* re-defines the border */
}
  

Если вы сможете определить свой вариант использования, возможно, это поможет вам в дальнейшем.


Отредактировано для рассмотрения дополнительной информации в вопросе:

В IE8 нет границы для выбора. Итак, я пытаюсь выполнить сброс css следующим образом:

 select, input[type="file"], textarea {
    border: solid 1px #7F9DB9;
}
  

Проблема в том, что он переопределяет любой ранее существовавший стиль из-за специфики. Я пытался использовать фильтр выражений, но с DocType в IE8, похоже, это не работает.

Если проблема заключается в специфичности, то единственные варианты, которые у вас есть, — это либо увеличить специфичность селектора, который вы хотите применить, в идеале использовать id или несколько id элементов в вашем селекторе ( id элемента ancestor подойдет), поскольку это наиболее специфичный доступный селектор.

Или вы можете уменьшить специфичность селектора, который вы хотите переопределить.

Стоит отметить, что select элемент сложно надежно стилизовать, поскольку он часто отображается базовой операционной системой, а не самим браузером, для обеспечения единообразия в этой операционной системе.

Ответ №2:

У вас есть три альтернативы:

  1. Используйте JavaScript — в нем есть логика, поэтому вы можете проверить, есть ли у него граница или нет, а затем что-то сделать с результатом. Вы можете использовать библиотеку, такую как jQuery или MooTools, чтобы упростить задачу.
  2. Сделайте этот селектор более конкретным, чтобы он применялся только к тем элементам, к которым вы этого хотите.
  3. Сделайте другие ваши селекторы более конкретными с помощью классов, идентификаторов или вложенных селекторов (например form textarea ).