Як я можу інвертувати колір за допомогою CSS?


87

HTML

<div>
    <p>inverted color</p>
</div>

CSS

div {
    background-color: #f00;
}
p { 
    color: /* how to use inverted color here in relation with div background ? */
}

Чи є спосіб інвертувати pколір за допомогою CSS?

Є color: transparent;чому color: invert;навіть не в CSS3?


2
-webkit-filter: інвертувати (100%);
daniel__

1
Це може бути для вас дуже корисним: net.tutsplus.com/tutorials/html-css-techniques/…
Рон ван дер Хейден

3
У цій скрипті я спробував поєднати 3 підходи: CSS-фільтр для WebKit, SVG-фільтр для Firefox та блискучий фокус, outline-color: invert винайдений Леа Веру для IE. На жаль, Opera (Presto) не зафіксувала область, заповнену контурами overflow, тому вона там не працюватиме. Я сподіваюся, що ця демонстрація все ще може бути корисною для подальших експериментів.
Ілля Стрельцин

Відповіді:


130

Додайте до абзацу той самий колір фону, а потім інвертуйте за допомогою CSS:

div {
    background-color: #f00;
}

p { 
    color: #f00;
    -webkit-filter: invert(100%);
    filter: invert(100%);
}
<div>
    <p>inverted color</p>
</div>


Це інвертує color, але не background. Буває так, що colorвстановлено те саме, що і background-color. Дивіться нижче рішення, яке інвертує фон.
ᆼ ᆺ ᆼ

10

Ось інший підхід із використанням mix-blend-mode: difference, який фактично інвертує будь-який фон, а не лише один колір:

div {
  background-image: linear-gradient(to right, red, yellow, green, cyan, blue, violet);
}
p {
  color: white;
  mix-blend-mode: difference;
}
<div>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscit elit, sed do</p>
</div>


1
+1 mix-blend-mode: differenceробіт , де filter: invert(100%)зазнає невдачі при використанні position: fixed(скажімо модальностей) stackoverflow.com/a/37953806/366332
Ванни тотара

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.