CSS инверторный файл в Chrome
Я имею
BODY
{
-webkit-filter: invert(100%);
-moz-filter: invert(100%);
-ms-filter: invert(100%);
-o-filter: invert(100%);
filter: invert(100%);
}
а также
.jpg
{
-webkit-filter: invert(0%) !important;
-moz-filter: invert(0%) !important;
-ms-filter: invert(0%) !important;
-o-filter: invert(0%) !important;
filter: invert(0%) !important;
}
Это работает в MIE. Chrome настаивает также на инвертировании изображений с помощью класса jpg.
Какие-либо предложения?
2 ответа
Из понимания эффектов фильтра CSS:
Когда браузер загружает веб-страницу, ему нужно применить стили, выполнить макет, а затем отобразить страницу, чтобы было на что посмотреть. Фильтры включаются после всех этих шагов и непосредственно перед копированием страницы на экран. Что они делают, это делают снимок отрендеренной страницы в виде растрового изображения, затем выполняют некоторые графические операции над пикселями в снимке и затем рисуют результат поверх исходного изображения страницы.
Вы применяете фильтр к body
и фильтр применяется ко всему элементу в виде сплющенного изображения, а не к каждому дочернему элементу в отдельности, поэтому вы не можете переопределить фильтр для дочернего элемента, как вы пытаетесь это сделать.
Что вы можете сделать в вашем случае это применить invert(100%)
к селектору, который вы хотите показать как неинвертированный, потому что изображение с двойным инвертированием снова становится нормальным.
Ошибка в первом утверждении. Чтобы исправить это используйте следующее
*
{
-webkit-filter: invert(100%);
-moz-filter: invert(100%);
-ms-filter: invert(100%);
-o-filter: invert(100%);
filter: invert(100%);
}
.jpg
{
-webkit-filter: invert(0%) !important;
-moz-filter: invert(0%) !important;
-ms-filter: invert(0%) !important;
-o-filter: invert(0%) !important;
filter: invert(0%) !important;
}