Dowiedzieliśmy się, że ograniczeniem użycia do wstawienia fragmentu SVG jest to, że nie można pisać złożonych selektorów CSS, które mają tam wpływ. Na przykład:
Ta granica Shadow DOM zapobiega selektorom, takim jak
/* nope */ .parent .child ( )
od pracy. Być może kiedyś otrzymamy działający selektor CSS do penetracji granicy Shadow DOM, ale w chwili pisania tego jeszcze nie ma.
Nadal możesz ustawić wypełnienie na rodzicu, a to spadnie kaskadowo w dół, ale to daje tylko jeden kolor (pamiętaj, aby nie ustawiać
fill
atrybutu prezentacji na tych kształtach!).
Fabrice Weinberg wymyślił jednak zgrabną technikę uzyskiwania dwóch kolorów, wykorzystując currentColor
słowo kluczowe w CSS.
Ustaw właściwość CSS wypełnienia dla dowolnych kształtów na currentColor:
.shape-1, .shape-2 ( fill: currentColor; )
W ten sposób, kiedy ustawisz właściwość color na rodzicu , to również będzie przechodzić. Nie zrobi niczego sam z siebie (chyba że
tam masz), ale
currentColor
jest oparty na nim, color
więc możesz go użyć do innych rzeczy.
svg.variation-1 ( fill: red; color: orange; ) svg.variation-2 ( fill: green; color: lightblue; )
Próbny:
Zobacz logo Pen CodePen jako Inline SVG autorstwa Chrisa Coyiera (@chriscoyier) na CodePen.