Jak zmienić kolor w svg. Zewnętrzne pliki stylizacji dla SVG wstawiane za pomocą

CSS staje się z każdym dniem coraz potężniejszy i pojawia się wiele nowych funkcji, dzięki którym można tworzyć interfejsy użytkownika dużo łatwiej. I to jest świetne!

Jedną z takich funkcji CSS są filtry. Spróbujmy użyć filtrów do pracy Obrazy SVG mi.

Filtry CSS

Na początek przyjrzyjmy się filtrom. Obejmują one następujące funkcje:

  • plama()
  • jasność()
  • kontrast()
  • cień()
  • skala szarości()
  • odcień-obrót()
  • odwracać()
  • nieprzezroczystość()
  • nasycić()
  • sepia()

Filtry CSS to najprostszy sposób na wdrożenie podstawowych transformacji w sposób wydajny w przeglądarce.

Jeśli chcesz zobaczyć jak działa każdy filtr, polecamy odwiedzić stronę: cssfilters.co.

Edycja tła SVG

Uwielbiam używać formatu SVG (skalowalna grafika wektorowa) w Internecie. SVG to świetny format obrazu do wykorzystania w Internecie. Po dodaniu pliku SVG do strony masz dostęp do wszystkich jego elementów i właściwości. Umożliwia to dodawanie animacji, zmianę kolorów i dynamiczne dodawanie informacji. SVG doskonale nadaje się również do ikon.

SVG jest często używany jako obrazy tła. W w tym przypadku Tracisz kontrolę nad elementami obrazu. Nie można teraz zmieniać kolorów ani właściwości, ponieważ plik SVG staje się zwykłym obrazem. Ale z pomocą Filtry CSS możesz rozwiązać ten problem.

Regulacja jasności

Pierwszą rzeczą, na którą natrafiłem pracując z ikonami, była konieczność przyciemnienia białej ikony na jasnym tle. Aby uniknąć tworzenia nowej ciemnej ikony, użyłem filtr: jasność().

Wartość jasności większa niż 1 powoduje, że element jest jaśniejszy, mniejsza niż 1 powoduje, że element jest ciemniejszy.

Ikony z kolorem #000 Lub rbg(0, 0, 0) nie zostanie wyjaśnione. Muszą mieć inny kolor.

Regulacja koloru

Przyjrzeliśmy się, jak zmienić jasność ikony. Co jednak w sytuacji, gdy chcemy zmienić kolor ikony? W tym przypadku pomoże nam filtr sepia, odcień-obrót, jasność I nasycenie stworzyć dowolny kolor, jaki chcemy.

Z bieli możesz stworzyć na przykład niebieski, cyjan i różowy.

Colorize-różowy ( filtr: jasność(0,5) sepia(1) odcień-obrót(-70 stopni) nasycenie(5); .colorize-navy ( filtr: jasność(0,2) sepia(1) odcień-obrót(180 stopni) nasycenie(5 ); .colorize-blue (filtr: jasność(0,5) sepia(1) odcień-obrót(140 stopni) nasycenie(6); )

Zgodność

W chwili pisania tego tekstu filtry są obsługiwane przez następujące przeglądarki:

Zamiast wniosków

Nigdy nie zapominaj o swoich użytkownikach. Póki co filtry nie sprawdzają się wszędzie. Dlatego nie używaj białych ikon filtrów na białym tle, ponieważ niektórzy użytkownicy po prostu nic nie zobaczą. Nie zapomnij także o alternatywnym tekście obrazów.


Oryginalny artykuł: link Autor artykułu: Alex. Kategoria:
Data publikacji: 01.04.2018

SVG to format grafiki wektorowej. Jego nazwa dosłownie oznacza „skalowalny”. Grafika wektorowa"(Skalowalna Grafika wektorowa). Krótko mówiąc, właśnie w tym pracujesz Adobe Illustratorze. SVG można łatwo używać w Internecie, ale najpierw trzeba wiele zrozumieć.

Dlaczego w ogóle potrzebujesz SVG?

  • Małe rozmiary plików, doskonała kompresja;
  • Skalowanie do dowolnego rozmiaru, bez utraty jakości (z wyjątkiem bardzo małych rozmiarów);
  • Dobrze wygląda na siatkówce;
  • Szeroki wachlarz możliwości, jakie dają filtry i interaktywność.

Stwórzmy obraz SVG, z którym będziemy dalej pracować

Utwórz niestandardowy rysunek w programie Adobe Illustrator. Tutaj na przykład ptak kiwi na owalu.

Należy pamiętać, że obraz jest ostro przycięty na krawędziach obrazu. Płótno w SVG odgrywa nie mniejszą rolę niż w PNG czy JPG.

Adobe Illustrator może zapisywać jako SVG.

Podczas zapisywania pojawi się kolejne okno dialogowe z ustawieniami. Szczerze mówiąc, nie wiem o nich zbyt wiele. Istnieje cały samouczek dotyczący profili SVG. Jestem całkiem zadowolony z SVG 1.1.

Warto w tym miejscu zaznaczyć, że masz możliwość kliknięcia OK i zapisania pliku lub kliknięcia przycisku „Kod SVG...”, który otworzy okno TextEdit (przez co najmniej na komputerze Mac) z kodem SVG.

Obie opcje mogą być przydatne.

W Illustratorze Obszar roboczy wynosił 612 pikseli ✕ 502 pikseli.

Są to wymiary, jakie będzie miał obraz na stronie, jeśli nie zostaną one szczegółowo określone. Jego wymiary można zmienić, ustawiając atrybuty szerokości lub wysokości na img , podobnie jak PNG lub JPG. Oto przykład:

Obsługa przeglądarki

Jedna opcja: sprawdź wsparcie przez Modernizr i zamień src dla obrazu:

if (!Modernizr.svg) ( $(.logo img" ).attr("src" , "images/logo.png" ); )

David Bushell ma bardzo prostą alternatywę, jeśli nie masz nic przeciwko JavaScriptowi w swoich znacznikach:

"this.onerror=null; this.src="image.png"">

W przypadku tej metody wstawiania SVG można zastosować następujące techniki degradacji:

<svg > ... svg > <div class="fallback" >div >

I znowu używamy Modernizr:

.logo-fallback (wyświetlanie: brak; /* Upewnij się, że rozmiar odpowiada rozmiarowi SVG */) .no-svg .logo-fallback ( obraz tła : url (logo.png); )

Dodanie SVG do strony za pomocą tagu

Jeśli z jakiegoś powodu nie podoba Ci się opcja wstawiania SVG bezpośrednio do dokumentu (ma to nadal kilka wad, na przykład buforowanie jest prawie niemożliwe), możesz podłączyć plik SVG za pomocą i zachować możliwość kontrolowania swoich części za pomocą CSS.

<typ obiektu ="image/svg+xml" dane ="kiwi.svg" klasa ="logo" > Logo Kiwi obiekt >

Jeśli nie jest to obsługiwane, zaimplementujmy degradację przy użyciu klasy dodanej przez Modernizr:

.no-svg .logo (szerokość: 200 pikseli; wysokość: 164 pikseli; obraz tła: url (kiwi.png); )

Takie podejście nie powoduje problemów z buforowaniem i jest obsługiwane przez przeglądarki lepsza, niż inni. Ale jeśli używasz zewnętrznego pliku ze stylami lub

Używanie pseudoklas

Używanie pseudoklas takich jak:hover jest możliwe w SVG, nawet w połączeniu z właściwością przejścia CSS3.

Implementując ten przykład, najechanie elementami przenoszącymi przykładową klasę spowoduje zmianę koloru z czerwonego na niebieski. Aby to działało poprawnie, upewnij się, że plik SVG nie jest wstawiony jako plik Img. Lepiej wybierz Osadź lub Iframe:

Korzystanie z Img pomoże w prawidłowym wyświetlaniu SVG. Jednak efekty najechania kursorem i przejścia zostaną zignorowane. Oprócz przejścia moglibyśmy użyć transformacji, umożliwiając w ten sposób skalowanie lub obracanie elementów.

Używając CSS3, nie zapomnij dodać przedrostków dostawców, które chcesz zachować maksymalna ilość nowoczesne przeglądarki. Chociaż przeglądarki Chrome i Firefox nie mają problemów z bezbłędnym renderowaniem, Internet Explorera odmówią pokazania Twoich dzieł nawet w większości Ostatnia wersja, podczas gdy jest w stanie doskonale pokazać te właściwości CSS3, gdy jest używany w HTML.

Zapytania o media i SVG

Jeśli chcesz dostosować swój plik SVG tak, aby mógł zmieniać rozmiary, po prostu użyj bezpośrednio w nim zapytań o media:

Ten przykład gwarantuje, że elementy klasy example nie zostaną pokazane, gdy widoczna szerokość spadnie poniżej 800 pikseli. Pamiętaj, że nie decyduje o tym szerokość dokumentu, ale szerokość elementu zawierającego Twój plik SVG.

W tym przykładzie elementy przykładowej klasy nie zostaną pokazane, ponieważ określona szerokość wynosi tylko 500 pikseli. Zapytania o media w SVG są również przydatne do optymalizacji grafiki do druku.

Przygotowanie SVG do wykorzystania w Internecie jest bardzo prostym procesem, nie bardziej skomplikowanym niż eksportowanie plików JPEG lub PNG. Użyj dowolnego edytora graficznego, który znasz (Illustrator, Sketch, Inkscape [bezpłatny] itp. [lub nawet Photoshop, jeśli używasz warstw kształtów]) w rozmiarze obrazu, którego planujesz użyć. Zwykle pracuję w Illustratorze, więc wyjaśnię niektóre sposoby przygotowywania plików w tym programie, ale generalnie dotyczą one każdego programu. Możesz przekonwertować tekst na krzywe, ponieważ czcionka najprawdopodobniej będzie wyświetlana niepoprawnie, chyba że planujesz nadać jej styl czcionką internetową używaną na stronie (co jest możliwe!). Nie jest również dobrym pomysłem konwertowanie wszystkich obiektów na pojedyncze kształty, zwłaszcza jeśli na stronie znajdują się obrysy, którymi trzeba będzie manipulować, zwłaszcza że konwersja obiektów często nie zmniejsza rozmiaru pliku. Wszelkie nazwy przypisane do grup lub warstw zostaną dodane do pliku SVG jako identyfikator elementu. Jest to dość wygodne do stylizacji, ale zwiększy całkowity rozmiar plik.

Przed eksportem należy sprawdzić, czy wszystkie obrazy znajdują się w siatce pikseli całkowitych (tzn. nie mają na przykład wymiarów 23,3 x 86,8 pikseli). W przeciwnym razie najprawdopodobniej obraz nie będzie wystarczająco wyraźny i jego część zostanie obcięta. W programie Illustrator można to zrobić w następujący sposób: Obiekt > Obszary robocze > Dopasuj do granic kompozycji. Następnie kliknij Zapisz jako i wybierz SVG i pozostaw ustawienia domyślne. Możemy tutaj dokonać niewielkiej optymalizacji, ale naprawdę nie jest ona tego warta, ponieważ później będziemy używać różnych technik ulepszania, więc na razie nie będziemy tracić czasu na te poprawki.

Sztuczki zmniejszania rozmiaru plików.

(Zobacz optymalizację)

Osiągnąć najmniejszy rozmiar SVG, logiczne byłoby usunięcie z niego wszystkiego, co niepotrzebne. Najbardziej znany i przydatny program(przynajmniej tak myślę) do przetwarzania SVG jest to SVGO. Ona usuwa wszystko wymagany kod. Ale! Zachowaj ostrożność podczas korzystania z tego programu, jeśli planujesz manipulować SVG za pomocą CSS/JS, ponieważ może to za bardzo oczyścić kod, utrudniając przyszłe zmiany. Kolejnym udogodnieniem SVGO jest to, że można go włączyć w proces automatycznego budowania projektu, ale można też z niego skorzystać graficzny interfejs użytkownika Jeśli chcesz.

Bardziej szczegółowe zrozumienie z prawidłowe usunięcie wszystko, co niepotrzebne, możemy zrobić coś innego edytor graficzny. Najpierw musisz upewnić się, że używasz jak najmniejszej liczby ścieżek/kształtów, a także punktów na tych ścieżkach. Można łączyć i upraszczać wszystko, co da się uprościć, oraz usuwać wszystkie niepotrzebne punkty. Illustrator ma wtyczkę VectorScribe z Inteligentne narzędzie Usuń narzędzie Pędzel, które pomoże Ci usunąć punkty i nadal wyjść ogólny kształt To samo.

Wstępna optymalizacja

Narzędzie Smart Remove Brush Tool usunęło punkty

Następnie powiększymy obraz. W programie Illustrator warto włączyć opcję Widok > Podgląd pikseli i sprawdzić położenie konturów. Umieszczenie konturów na siatce zajmie trochę czasu, ale wysiłek się opłaci i zaowocuje czystszym renderingiem (najlepiej zwrócić na to uwagę wcześniej).

Punkty poza siatką

Wyrównać do siatki

Jeśli do wyrównania są dwa lub więcej obiektów, warto usunąć wszystkie niepotrzebne nałożenia. Czasami, nawet jeśli kontury są dokładnie wyrównane, może być widoczna cienka biała linia. Aby temu zapobiec, możesz lekko nakładać się na obiekty w miejscach, w których się pokrywają. Ważne: w SVG indeks Z ma określoną kolejność, która zależy od obiektu znajdującego się poniżej, dlatego warto umieścić obiekt na górze Dolna część plik w kodzie.

I wreszcie, coś, o czym zwykle się zapomina, to włączenie kompresji gzip plików SVG w Twojej witrynie w pliku .htaccess.

Dodaj Typ image/svg+xml svg svgz AddOutputFilterByType DEFLATE "image/svg+xml" \ "text/css" \ "text/html" \ "text/javascript" ... itd

Jako przykład skuteczności tej techniki wezmę oryginalne logo Breaking Borders i zoptymalizuję je w ten sposób: zwiększ rozmiar do takiego, jaki powinien; Uporządkuję kontury; Usunę jak najwięcej punktów; przesuwaj punkty o liczbę pikseli całkowitych; Przesunę wszystkie nakładające się obszary i wyślę je do SVGO.

Oryginał: 1.413b

Po optymalizacji: 409b

W rezultacie rozmiar pliku stał się o ~71% mniejszy (i ~83% mniejszy po skompresowaniu)

SVG to nowy standard grafiki wektorowej w przeglądarce. Edytory wektorów takie jak Adobe Illustrator umożliwiają bezpośrednie zapisywanie grafiki w tym formacie, a nowoczesne przeglądarki wyświetlają SVG bez problemów.

Ponieważ obrazy SVG składają się ze znaczników, można je tworzyć i konserwować przy użyciu ulubionych Edytor tekstu, tak samo jak w przypadku HTML. Co więcej, możliwe jest nawet stylizowanie SVG za pomocą CSS, chociaż musisz zapoznać się z różnicami między Stylizacja SVG i HTML-a.

Atrybuty SVG i właściwości CSS

Granica pomiędzy HTML i CSS jest wyraźna. HTML odpowiada za treść i strukturę, CSS za wyświetlanie. W SVG ta granica jest delikatnie mówiąc zamazana. To jest główny powód pola tekstowe a kształty są zwykle kontrolowane za pomocą atrybutów elementów, a nie CSS:

W tym przykładzie rysujemy prostokąt wypełniony atrybutem fill. Kolor i szerokość zewnętrznej krawędzi prostokąta są określone przez atrybuty obrysu i szerokości obrysu. Ale możesz także stylizować prostokąt w ten sposób, używając CSS:

Po prostu użyliśmy atrybutów takich jak Właściwości CSS. Chociaż nie działa to w przypadku wszystkich atrybutów. Nie można w ten sposób ustawić wartości położenia oraz szerokości i wysokości. Użyjemy po prostu atrybutu y oraz szerokości i wysokości.

Podobnie jak w HTML, możemy pracować z klasami lub identyfikatorami dowolnego elementu. W ten sposób zdefiniowalibyśmy reprezentację zbioru Element SVG ov poprzez stylizowaną klasę.

Ponieważ SVG nie rozróżnia regionów head i body, arkusze stylów i sama treść mają wspólny element SVG, który jest porównywalny z elementem HTML.

Używanie pseudoklas

SVG pozwala na użycie pseudoklas, takich jak:hover, nawet w połączeniu z właściwością przejścia CSS3.

Po zaimplementowaniu tego przykładu zobaczymy, że kiedy najedziemy kursorem na element z ustawioną dla niego przykładową klasą, kolor wypełnienia zmieni się z czerwonego na niebieski. Aby to działało poprawnie, nie osadzaj SVG using znacznik img. Lepiej użyj osadzania lub ramki iframe:

Podczas korzystania z tagu img sam plik SVG będzie wyświetlany poprawnie. Ale efekt najechania i przejścia będą ignorowane. Oprócz właściwości przejścia możemy również użyć transform . W takim przypadku elementy zostaną przeskalowane lub obrócone.

Korzystając z CSS3, pamiętaj o dodaniu prefiksów dostawców, aby zapewnić jak najwięcej wsparcia. więcej nowoczesne przeglądarki. Podczas gdy przeglądarki Chrome i Firefox bezbłędnie radzą sobie z renderowaniem, Internet Explorer odmawia wyświetlenia Twojego dzieła, chociaż jest w stanie doskonale pokazać właściwości CSS3, jeśli zastosujesz je do HTML.

Zapytania o media i SVG

Jeśli chcesz dostosować plik SVG do określonych rozdzielczości, po prostu użyj zapytań o media bezpośrednio w nim:

W tym przykładzie elementy, które mają określoną klasę przykładową, nie zostaną pokazane, gdy widoczna szerokość ekranu spadnie poniżej 800 pikseli. Uważaj, nie chodzi tu o szerokość dokumentu, ale o szerokość elementu nośnego SVG.