выделение всех элементов, стилизованных с помощью градиента CSS

0

Я ищу способ, используя только современный css, выбирать все элементы, которые имеют фоновое изображение, которое использует любой градиент, а затем перезаписывает это значение с помощью "none". По сути, мне нужно стереть все фоновые градиенты. Это то, что у меня есть до сих пор, но, похоже, это не работает:

*[background-image*="gradient"]{
  background-image: none !important;
}

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

  • 1
    [] для атрибутов, поэтому вам нужно использовать [style*=] но этот afaik будет работать только со встроенными стилями (только для градиентов ели, установленных с помощью style attr). Кроме того, предполагая, что существует способ запроса по применяемому в настоящее время свойству css, ваше правило больше не будет соответствовать в тот момент, когда вы установили background режим равным none , поэтому градиент появится снова, затем правило снова будет соответствовать, .... Так что у вас будет либо мерцание, либо бесконечный цикл.
Теги:
css-selectors

2 ответа

1
Лучший ответ

Вы не можете решить эту проблему с помощью HTML и CSS.

Вы можете использовать Javascript для проверки background-image каждого элемента в DOM. С огромным DOM это может стать медленным, но похоже, что у вас нет другого выбора.

  • 0
    Зачем проверять каждый элемент? Конечно, вы можете проверить только значение background-image элементов, которые на самом деле имеют атрибут background-image?
  • 1
    @ adamwong246 Но вы не можете написать селектор CSS для этого. Вы должны просмотреть все из них. Все они будут иметь набор background-image - хотя большинство из них будет по умолчанию, none .
0

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

*[class*='gradient'] {
    background-image: none;
}
  • 0
    Ответы всегда направлены на вопрос. Никогда не нужно начинать ответ с имени участника вопроса.
  • 0
    Нет, я не могу изменить любой HTML. (Я пишу расширение Chrome, которое добавляет дополнительные CSS в таблицу стилей агента пользователя.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню