Një artikull i thelluar mbi stilimin e përmbajtjes në një element SVG
Grafikat në formatin SVG përdoren veçanërisht shpesh për krijimin e ikonave dhe një nga teknikat më të zakonshme për këtë janë spritet SVG duke përdorur përdorimin e SVG për të instancuar ikonat në vendin e duhur dokument.
Instantimi i ikonave ose çdo përmbajtje tjetër SVG në një element
Por para se të fillojmë, le të hedhim një vështrim të shpejtë në strukturën bazë dhe grupimin e elementeve në SVG, duke kaluar gradualisht në
Një turne i shpejtë i strukturës, grupimit dhe referencës së elementeve SVG në SVG
SVG përfshin 4 elementë bazë për përcaktimin, strukturimin dhe referimin e përmbajtjes SVG në një dokument. Këta elementë lejojnë ripërdorimin e imazheve, duke e mbajtur kodin të lexueshëm dhe të mirëmbajtur. Për shkak të natyrës së SVG, disa nga këta elementë kanë funksionalitet të ngjashëm me komandat përkatëse në redaktuesit e imazhit.
4 elementet kryesore të grupimit dhe lidhjes në SVG janë
Elementi
Grupimi i elementeve është i dobishëm kur dëshironi të aplikoni një stil për të gjithë elementët në një grup, dhe gjithashtu kur dëshironi të animoni të gjithë elementët në një grup duke ruajtur marrëdhënien midis tyre.
Elementi
Elementi
Elementi
Elementi
Për të përdorur një element, duhet të kaloni një lidhje në atë element, identifikuesi është atributi xlink: href dhe poziciononi atë duke specifikuar atributet x dhe y. Ju mund të aplikoni stile në një element
Por cila është përmbajtja
Përpara se t'u përgjigjemi këtyre pyetjeve, dhe duke pasur parasysh se ne ishim vetëm një paraqitje e shkurtër e strukturës dhe grupimit të SVG-ve, ia vlen të përmendim disa artikuj që do t'ju lejojnë të mësoni më shumë rreth këtyre elementeve, si dhe atributit viewBox në një element.
- Strukturimi, grupimi dhe referencat në SVG - Elementet g, përdorimi, përkufizimet dhe simbolet
- Kuptimi i sistemit të koordinatave SVG (Pjesa 1): Viewport, viewBox dhe PreserveAspectRatio
SVG dhe hije DOM
Kur referoni një element me
Në ekran shfaqet një ikonë, përmbajtja e së cilës përcaktohet brenda
Por elementi
Përgjigja është në hije DOM(për disa arsye e lidh gjithmonë me Batman, nuk e di pse).
Çfarë është Shadow DOM?
DOM hije është identike me DOM-in e rregullt, përveç se në vend që të jenë pjesë e pemës kryesore të dokumentit, nyjet DOM hije i referohen një pjese të dokumentit që është paralel me dokumentin kryesor, por jo i aksesueshëm për skriptet dhe stilet e tij. Kjo u jep autorëve aftësinë për të krijuar komponentët modularë duke përmbledhur skriptet dhe stilet. Nëse keni përdorur ndonjëherë elementin e videos ose hyrjen e diapazonit në HTML5 dhe nuk e kuptoni se nga vijnë kontrollet ose rrëshqitësi i luajtësit të videos, atëherë përgjigjja është e njëjtë - DOM hije.
Në rastin e elementit SVG
Pra, përmbajtja është
Me fjalë të tjera, përmbajtja është aty, por është e padukshme. Njësoj si përmbajtja e rregullt DOM, por jo e aksesueshme nga mjetet e nivelit të lartë si përzgjedhësit CSS dhe JavaScript, të kopjuara në një copë dokumenti të lidhur me
Tani, nëse jeni një projektues, mund të jeni duke menduar, "OK, e kuptoj, por a ka ndonjë mënyrë për të inspektuar këtë nëndokument dhe për të parë përmbajtjen e tij." Përgjigja është po, ju mund të shikoni përmbajtjen e DOM hije duke përdorur mjetet e zhvillimit në Chrome (në Firefox në ky moment ky funksion nuk është i disponueshëm). Por së pari, duhet të aktivizoni inspektorin hije DOM në skedën e Përgjithshme të panelit të cilësimeve. Kjo përshkruhet në detaje.
Pasi të keni aktivizuar inspektimin e DOM-it në hije në veglat e zhvilluesit, mund të shihni elementë të klonuar në kutinë e veglave, ashtu si elementët e rregullt DOM. Imazhi i mëposhtëm tregon një shembull të një elementi
Duke përdorur mjete Zhvilluesi i Chrome, mund të inspektoni përmbajtjen e elementit të përdorimit brenda DOM-it të hijes (“# shadow-root”, rreshti është gri. Kjo pamje e ekranit inspekton logon e Codrops nga shembulli që do të shikojmë në seksionin tjetër.
Duke parë kodin e inspektuar, mund të shihni se DOM-i i hijes është shumë i ngjashëm me DOM-in e rregullt, me përjashtim të mënyrës se si trajtohet nga CSS dhe JavaScript e dokumentit kryesor. Ka edhe dallime të tjera midis tyre, të cilat nuk do t'i trajtojmë në këtë artikull për shkak të vëllimit të tyre, kështu që nëse doni të dini më shumë, ju rekomandoj artikujt e mëposhtëm:
- Shadow DOM 101 (përkthyer nga Frontender.info)
- Hyrje në Shadow DOM (Video)
Duke pasur parasysh përvojën time të kufizuar me DOM-in hije, unë e shoh atë si një DOM të rregullt që duhet të trajtohet ndryshe për sa i përket aksesit të CSS dhe JavaScript në elementët e tij. Kjo është ajo që ka rëndësi për ne kur punojmë me SVG: Si të ndikojmë në përmbajtje
Siç u tha, përmbajtja e DOM hije nuk është e disponueshme për CSS, ndryshe nga DOM i rregullt. Pra, si ta stilojmë atë? Ne nuk mund të përdorim një shteg pasardhës si kjo:
Përdorni linjën # e rrugës (goditja: # 009966;)
Sepse ne nuk kemi akses në DOM hije duke përdorur përzgjedhës të rregullt CSS.
Ndoshta, siç bëj unë, ju prisni që atributet e prezantimit të kenë specifikën më të lartë të çdo rregulli stili. Në fund të fundit, zakonisht stilet e jashtme rishkruhen nga deklarata të brendshme, dhe ato, nga ana tjetër, rishkruhen nga stilet e atributeve inline - ato kanë specifikën maksimale, dhe, në përputhje me rrethanat, përparësi ndaj stileve të tjera. Ndërsa kjo pritshmëri ka kuptim, mekanizmi aktual është i ndryshëm.
Në fakt, atributet e prezantimit konsiderohen "fletë stili autorizimi" të nivelit të ulët dhe mbishkruhen nga pjesa tjetër e deklaratave të stilit: stilet e jashtme, të brendshme dhe të brendshme. Forca e tyre e vetme është përparësia e tyre mbi stilet e trashëguara. Dhe kjo eshte e gjitha.
Tani që e kemi kuptuar, le të kthehemi te elementi ynë
Ne e dimë se nuk mund të vendosim stile brenda
Por ne gjithashtu e dimë se si me elementin
Pra, së pari le të përpiqemi të ndryshojmë ngjyrën e mbushjes së elementit brenda
Megjithatë, kjo ngre disa pyetje:
- Ngjyra e mbushjes do të trashëgohet të gjithë pasardhësit element
, edhe ato që nuk dëshironi t'i stiloni (por nëse brenda ju keni vetëm një artikull, atëherë ky problem nuk do të jetë). - Nëse keni eksportuar SVG nga një redaktues grafik, ose për ndonjë arsye tjetër nuk mund të modifikoni kodin SVG, atëherë do të përfundoni duke punuar me SVG që tashmë ka atribute të prezantimit të aplikuara (përveç nëse e anashkaloni në mënyrë eksplicite këtë kur eksportoni në formatin SVG) dhe vlerat . nga këto atribute do të kenë përparësi ndaj atyre të trashëguara
.
Dhe edhe nëse mund të modifikoni kodin SVG dhe mund t'i heqni qafe ato, ju rekomandoj shumë të mos e bëni këtë duke arsyet e mëposhtme:
- Heqja e atributeve për hir të vendosjes së veçorive të caktuara më vonë do të rivendosë vlerat e këtyre vetive në vlerat e tyre të paracaktuara, të cilat, si rregull, janë mbushja e zezë dhe goditja (siç zbatohet për ngjyrat).
- Duke rivendosur vlerat, ju e detyroni veten të stiloni të gjithë grupin e vetive.
- Atributet e prezantimit që janë vendosur fillimisht janë një kthim i mrekullueshëm në rast se hasni probleme me stilet e jashtme. Nëse CSS nuk ngarkohet, ikonat tuaja do të duken akoma të shkëlqyera.
Pra, ne i kemi këto atribute, por në të njëjtën kohë duam të dizajnojmë shembuj të ndryshëm ikonash në mënyra të ndryshme.
Kjo bëhet duke detyruar atributet e prezantimit të trashëgojnë stilet e specifikuara nga
Le të fillojmë me shembuj të thjeshtë dhe gradualisht kalojmë në ato komplekse.
Rishkrimi i vlerave të atributeve të prezantimit me CSS
Atributet e prezantimit anashkalohen nga çdo deklaratë stili. Ne mund ta përdorim këtë në mënyrë që atributi i prezantimit të marrë vlerën e trashëguar nga stilet.
Kjo është thjesht për shkak të çelësit Fjala CSS trashëgon. Hidhini një sy shembulli tjetër- një ikonë akulloreje e vizatuar me një skicë, ngjyrën e së cilës duam ta ndryshojmë në raste të ndryshme. Ikona e krijuar nga Erin Agnoli e Projektit Emëror.
Përmbajtja e ikonës (shtegut) tonë të akullores përcaktohet brenda elementit
Ne shfaqim shembuj të shumtë të ikonës duke përdorur
Ne vendosim gjerësinë dhe lartësinë e ikonave duke përdorur CSS. Unë jam duke përdorur të njëjtat dimensione si viewBox, por ato nuk duhet të jenë identike. Megjithatë, për të shmangur hapësirën e tepërt të bardhë brenda SVG, sigurohuni që të mbani raportin e pamjes.
Ikona (gjerësia: 100 px; lartësia: 125 px;)
Me këtë kod, ne morëm daljen e mëposhtme:
Vini re se falë kufijve të zinj të shtuar rreth SVG-ve tona, ju mund të shihni kufijtë e secilit, duke përfshirë atë të parën, në të cilin përmbajtja nuk jepet. Mbani mend: dokumenti SVG në të cilin keni përcaktuar simbolin do të shfaqet në faqe, por jo përmbajtje... Për ta parandaluar këtë, përdorni veçorinë e ekranit: asnjë në SVG-në e parë. Nëse nuk e fshihni SVG me përkufizimet e ikonave, ai do të shfaqet në ekran edhe nëse nuk i caktoni dimensionet - do të marrë 300 me 150 piksele të paracaktuar (kjo është vlera e paracaktuar për elementët e pazëvendësueshëm në CSS) dhe do të merrni një bllok bosh që nuk ju nevojitet në ekran ...
Tani le të përpiqemi të ndryshojmë ngjyrën e mbushjes për çdo shembull të ikonës:
Use.ic-1 (mbush: skyblu;) use.ic-2 (mbush: # FDC646;)
Ngjyra e mbushjes së ikonave ende nuk ndryshon, pasi ngjyra e trashëguar mbishkruhet me atributin fill = "# 000" në elementin e rrugës. Për të parandaluar që kjo të ndodhë, ne duhet të detyrojmë rrugën për të trashëguar ngjyrën:
Shtegu Svg (mbush: trashëgo;)
Voila! ngjyrat, dhënë elementeve
Tani kjo teknikë funksionon pasi kemi detyruar përmbajtjen
Dekorimi i përmbajtjes duke përdorur të gjithë pronën CSS
Disa kohë më parë, kur punoni në një ikonë të aktivizuar me
Nëse hasni në një detyrë të ngjashme, ndoshta vendosni se do të marrë shumë kohë nëse bëni gjithçka në CSS:
Shtegu # myPath (mbush: trashëgo; goditje: trashëgo; gjerësia e goditjes: trashëgo; transformimi: trashëgo; / * ... * /)
Pasi të keni ekzaminuar këtë fragment, do të vini re një model, që do të thotë se do të kishte kuptim të kombinoni të gjitha vetitë e specifikuara në një dhe ta vendosni atë trashëgojnë vlerën.
Për fat të mirë, do të na ndihmojë Vetia CSS të gjitha. Referenca ime CSS përmend përdorimin e të gjitha tipareve për stilimin SVG, por ia vlen të studiojmë njohuritë tona.
Duke përdorur të gjitha pronat ne mund ta bëjmë këtë:
Shtegu # MyPath (të gjitha: trashëgojnë;)
Kjo funksionon mirë në të gjithë shfletuesit që mbështesin të gjithë, megjithatë duhet të merren parasysh sa vijon pikë e rëndësishme: Kjo deklaratë i thotë elementit të trashëgojë fjalë për fjalë të gjitha vetitë e prindit të tij, duke përfshirë ato që nuk dëshironi të vendosni në element. Prandaj, nëse nuk dëshironi që të gjitha pronat CSS të stilohen, kjo nuk do të funksionojë për ju - kjo është zgjidhja e fundit dhe është e përshtatshme vetëm pjesërisht kur keni një element të pa stiluar dhe kontroll të plotë mbi vetitë e tij në CSS. Nëse përdorni këtë deklaratë dhe nuk përcaktoni vlera për të gjitha vetitë CSS, ato do të kalojnë derisa të gjejnë një vlerë për të trashëguar, në shumicën e rasteve këto janë stile të paracaktuar të shfletuesit.
Vini re se kjo vlen vetëm për atributet që mund të vendosen duke përdorur CSS, jo atributet që mund të vendosen vetëm në SVG. Nëse atributi mund të vendoset duke përdorur CSS, ai do të trashëgojë stilet, përndryshe jo.
Aftësia për të aktivizuar trashëgiminë e atributeve të prezantimit të të gjitha stileve
Përdorimi i ndryshores CSS CurrentColor për të stiluar përmbajtjen
Përdorimi i variablit CSS aktualColor në lidhje me teknikën e përshkruar më sipër ju lejon të përcaktoni dy ngjyra për një element, në vend të një. Fabrice Weinberg shkroi për këtë një vit më parë.
Ideja është që të aplikoni njëkohësisht në
Le të themi se duam ta stilojmë këtë logo minimaliste të Codrops duke përdorur 2 ngjyra - një për pjesën e përparme dhe një për pjesën e pasme.
Së pari, le të fillojmë me kodin për këtë imazh: ne kemi një simbol që përmban një përshkrim të ikonës dhe tre shembuj
Nëse vendosim ngjyrën e mbushjes në element
Pra, në vend të përcaktimit të një ngjyre mbushjeje dhe kaskadimit të saj mënyra e zakonshme, do të përdorim variablin aktualColor në mënyrë që njolla më e vogël e planit të parë të ketë një ngjyrë të ndryshme dhe do ta vendosim këtë vlerë me vetitë e ngjyrave.
Së pari, duhet të fusim CurrentColor ku duam të aplikojmë këtë ngjyrë - ky do të jetë vendi në shënimin ku përcaktohet ikona, domethënë brenda
Pastaj duhet të heqim atributin e mbushjes së prezantimit nga blobi i dytë dhe ta lëmë atë të trashëgojë ngjyrën e mbushjes nga elementi.
Nëse do të përdornim fjalën kyçe trashëgim për të detyruar atributet e prezantimit të trashëgojnë vlerat nga
Tani duke përdorur vetitë e mbushjes dhe ngjyrës në
Codrops-1 (mbushje: # 4BC0A5; ngjyra: # A4DFD1;). Codrops-2 (mbushje: # 0099CC; ngjyra: # 7FCBE5;). Codrops-3 (mbushje: # 5F5EC0; ngjyra: #AEAFDD;)
Çdo element
Pra, ajo që ndodhi është vlera aktuale e ngjyrës e rrjedhur në stilet e përmbajtjes së elementit
Këtu është një demonstrim me kodin e përdorur:
Kjo teknikë me dy ngjyra është e shkëlqyeshme për logot me dy ngjyra. Në artikullin e tij, Fabrice krijoi tre versione të ndryshme të logos Sass duke ndryshuar ngjyrën e tekstit në lidhje me sfondin.
Fjala kyçe CurrentColor është e vetmja variabël CSS e disponueshme për momentin. Megjithatë, nëse do të kishim më shumë variabla, mund t'i përdornim për të plotësuar më shumë më shumë vlerat në përmbajtje
E ardhmja: stilimi i përmbajtjes duke përdorur variablat CSS
Kodi i robotit përmban të gjitha ngjyrat e tij përbërëse:
Tani, ne nuk do të përdorim variablat CSS si vlera të atributeve plotësuese për secilën skicë. Në vend të kësaj, ne do t'i përdorim ato si ngjyra mbushjeje duke përdorur veçorinë mbushëse CSS, duke i mbajtur të gjitha atributet e mbushjes në vend. Këto atribute do të përdoren si rezervë për shfletuesit që nuk mbështesin variablat CSS - imazhi do të duket si ishte nëse variablat CSS nuk funksionojnë.
Me shtuar kodi i variablave do të jetë si më poshtë:
Meqenëse etiketat e stilit inline mbishkruajnë atributet e prezantimit, shfletuesit që mbështesin variablat CSS do t'i përdorin ato variabla për të vendosur ngjyrën e mbushjes. Dhe shfletuesit që nuk i mbështesin do të përdorin atributin mbushje.
Pastaj duhet të vendosim vlera për variablat në CSS. Por së pari, instantoni imazhin me
Pas kësaj, ne do të vendosim vlerat e variablave për përdorim në mënyrë që ato të mund të kalojnë në përmbajtjen e tij. Ngjyrat që zgjidhni do të krijojnë skema e ngjyrave Foto. Meqenëse roboti ynë përdor tre ngjyra kryesore, ne do t'i emërtojmë ato primare, dytësore dhe terciare.
# robot-1 (--ngjyra-primare: # 0099CC; --ngjyra-sekondare: # FFDF34; ---ngjyra-terciare: # 333;)
Ju ende mund të përdorni vetitë e mbushjes dhe ngjyrës me këto variabla, por mund të bëni pa to fare. Pra, me ngjyrat e vendosura në variablat tona, roboti duket kështu:
Mund të përdorni sa më shumë kopje të imazhit që dëshironi dhe për secilën prej tyre të specifikoni një grup ngjyrash të ndryshme duke krijuar tema të ndryshme... Kjo është pjesërisht e dobishme kur dëshironi të stiloni logon tuaj. menyra te ndryshme në varësi të kontekstit dhe në raste të tjera të ngjashme.
Siç u përmend, shfletuesit që nuk mbështesin variablat CSS përdorin atributet e dhëna të prezantimit si kthim, ndërsa shfletuesit që nuk mbështesin Variablat CSS përdorni ato për të plotësuar veçorinë fill dhe për të rishkruar atributet. Por çfarë ndodh nëse shfletuesi mbështet variablat CSS, por keni harruar t'i vendosni këto variabla në stilet tuaja, ose keni vendosur një vlerë të gabuar?
Për robotin tonë hipster, ne vendosëm tre variabla dhe vetëm disa nga fragmentet e tij nuk varen prej tyre - në fund të fundit, ai u zhvillua fillimisht për temat e mundshme. Prandaj, nëse e ekzekutoni këtë kod në një shfletues me mbështetje për variablat CSS dhe hiqni të gjitha deklaratat me këto variabla, do të merrni rezultatin e mëposhtëm:
Nëse vlerat e variablave nuk janë vendosur ose nuk janë të sakta, shfletuesi do të përdorë ngjyrën e tij të paracaktuar, e cila zakonisht është e zezë për mbushje dhe goditje në SVG.
Ju mund të punoni rreth kësaj duke vendosur një ngjyrë të ndryshme si një alternativë për shfletuesit mbështetës. Sintaksa për variablat CSS ju lejon ta bëni këtë: në vend që të kaloni funksionin var () emrin e ndryshores si argument, ju kaloni dy argumente të ndara me presje - emrin e ndryshores dhe kthimin, në këtë rast do të jetë vlera për atributin e prezantimit.
Pra, tani kodi i robotit tonë duket si ky:
Dhe është e gjitha. Nëse një variabël nuk është vendosur në një vlerë, shfletuesi do të ketë gjithmonë një ngjyrë kthimi në magazinë. E mrekullueshme.
Duke përdorur këtë teknikë, ju mund ta shfaqni këtë robot kudo në faqe me
Mund të eksperimentoni me demonstrimin, të krijoni sa më shumë kopje të robotit që dëshironi dhe ta ngjyrosni atë në çdo ngjyrë - thjesht mos harroni të përdorni një shfletues me mbështetje për variablat CSS:
Nëse e shikoni këtë demonstrim në një shfletues me mbështetje për variablat CSS, atëherë, ndër të tjera, do të shihni një version blu dhe të verdhë të robotit, siç specifikuam në variablat CSS. Përndryshe, do të shihni tre robotë identikë me një ngjyrë kthimi.
Duke përmbledhur
Ishte një artikull i madh.
Përdorimi i fuqisë së kaskadës CSS për të stiluar përmbajtjen
Personalisht, më pëlqen shumë kombinimi i variablave CSS dhe SVG. Më pëlqen funksionaliteti i tyre i përbashkët, veçanërisht në drejtim të krijimit të një mekanizmi kthimi.
Mund të gjejmë gjithashtu mënyra të tjera për të stiluar përmbajtjen.
Puna me përmbajtje SVG të ripërdorshme është një nga temat e ndërlikuara të SVG, ka të bëjë me sjelljen dhe vendndodhjen e kodit të klonuar. Kjo ngre shumë pyetje të lidhura që mund të bëhen temë e artikujve të veçantë.
Mbështetja e Grafikës Vektoriale të shkallëzuar (SVG) është e shkëlqyer në të gjitha shfletues modern Formati i imazhit shfaqet në kontekste të mahnitshme në shumë faqe të ndryshme të internetit. Por pavarësisht se është standardi për gati dy dekada, SVG mbetet një format disi i ri për disa stilistë dhe zhvillues, duke i lënë ata të hutuar se si duhet të përdoret në një faqe. Këtu janë disa arsye pse duhet të përdorni SVG:
Madhësia e vogël e skedarit
SVG-të tipike të dizajnuara mirë janë shumë më të vogla se PNG-të ekuivalente, që do të thotë se faqet që i përdorin ato ngarkohen më shpejt për përdoruesit.
Shkallëzueshmëria
Meqenëse SVG është ndërtuar nga formula matematikore, jo nga piksele fikse grafika bitmap Imazhet SVG mund të përshkallëzohen lart e poshtë pa humbje të cilësisë, duke i bërë ato ideale për faqet moderne të përgjegjshme.
Ndërvepron me DOM
SVG nganjëherë referohet si "vizatim me shënim": çdo element në imazhin SVG ndërvepron me DOM, që do të thotë se CSS dhe JavaScript mund të manipulojnë pjesë të dokumentit SVG. Ndryshe nga grafika bitmap, çdo formë individuale në SVG mund të ketë identifikuesin ose klasën e vet.
Lehtë për tu modifikuar dhe përshtatur
Cilësia e komponentëve SVG do të thotë që dokumentet SVG të formuara mirë mund të modifikohen lehtësisht në çdo redaktues teksti pa pasur nevojë për programe të specializuara kërkohet për bitmaps. Dhe meqenëse SVG ndërvepron me DOM-in, elementët e tij mund të modifikohen duke përdorur CSS. Formati SVG është i shkëlqyeshëm për të shfaqur:
-
ilustrime dhe vizatime
logot
Mjetet SVG
Ndërsa mund të krijoni një dokument SVG duke përdorur ndonjë redaktori i tekstit, programet e ilustrimit të vektorit si Adobe Illustrator ose Inkscape janë zakonisht zgjedhja më e mirë(megjithëse duhet theksuar se aplikacione të tjera duke përfshirë programet 3D si Blender dhe aplikacionet e serverit, mund të eksportojë SVG).
Çfarëdo që përdorni, duhet të jeni të vetëdijshëm se krijimi i SVG-ve nga aplikacionet lë ende shumë për të dëshiruar ndonjëherë: dokumenti që rezulton shpesh rikodohet dhe ndonjëherë formatohet dobët. Skedari svg mund të bëhet më i vogël, më kompakt duke e përpunuar me një optimizues si SVGOMG. Ndonjëherë kalimi i dokumentit të gabuar svg përmes validatorit W3C mund t'ju ndihmojë të identifikoni problemet.
Integrimi SVG
Ekzistojnë tre mënyra kryesore që SVG mund të përdoret drejtpërdrejt në një faqe interneti:
Meqenëse SVG bazohet në XML, ai mund të integrohet drejtpërdrejt në kodin në faqen tuaj. Kodi SVG redukton vonesën dhe kohën e përgjithshme të ngarkimit për faqen tuaj.
si bitmap, skedari SVG mund të referohet me etiketë ose nëpërmjet CSS si imazh sfondi. Kjo është shpesh Menyra me e mire përveç nëse SVG-të kanë nevojë për vëmendjen individuale të CSS dhe JavaScript.
Futet si
Адаптивный SVG
Как я уже упоминал, отдельные компоненты SVG могут быть помечены идентификатором или классом, что означает, что им можно манипулировать в рамках медиа-запросов. Это означает, что вы можете использовать различные функции SVG-иллюстраций при разных размерах экранов, создавая возможности для адаптивных логотипов или иллюстрации, которые показывают большую или маленькую детализацию, когда окно просмотра сжимается и расширяется..., что полностью подходит для отзывчивого дизайна, который заключается в том, чтобы показать посетителям сайта соответствующий контент на соответствующем уровне детализации, на том устройстве с которого они просматривают в данный момент сайт.
Вот несколько примеров адаптивных логотипов:
Интерактивные SVG
SVG идеально подходят для отображения реальных форм, это означает, что они отлично подходят для интерактивных карт:
Узоры
Есть два особенно недооцененных аспекта SVG:
Подготовка SVG для использования в вебе это очень простой процесс, не сложнее экспорта JPEG или PNG . Используйте любой привычный для вас графический редактор (Illustrator, Sketch, Inkscape [бесплатен], и тому подобное [или даже Photoshop, если вы используете слои с формами]) с тем размером изображения, который вы планируете использовать. Обычно я работаю в Иллюстраторе, поэтому я объясню некоторые способы подготовки файлов в этой программе, но вообще они применимы и для любой другой программы. Вам, возможно, стоит перевести текст в кривые, поскольку шрифт, скорее всего, будет неправильно отображаться, если, конечно, вы не планируете стилизовать их с помощью веб-шрифта, используемого на странице (что возможно!). Не стоит также превращать все объекты в единые формы, особенно если у вас есть обводка, которой необходимо будет управлять на странице, тем более преобразование объектов зачастую не уменьшает размер файла. Любые имена, присвоенные группам или слоям, будут добавлены к SVG как ID элемента. Это довольно удобно для стилизации, но немного увеличит общий размер файла.
Перед тем как сделать экспорт, необходимо проверить, все ли изображения находятся в целочисленной пиксельной сетке (то есть, например не 23.3px × 86.8px ). В противном случае скорее всего изображению не будет хватать чёткости и часть изображения обрежется. В Иллюстраторе это можно сделать следующим образом: Object > Artboards > Fit to Artwork Bounds . Затем жмём save as и выбираем SVG , и оставляем настройки по умолчанию. Здесь можно сделать небольшую оптимизацию, но на самом деле не стоит, так как далее мы будем применять разные улучшающие приёмы, поэтому сейчас мы не будем тратить впустую время на эти настройки.
Приёмы для уменьшения размеров файла.
(Смотрите по оптимизации)
Чтобы добиться наименьшего размера SVG , логично будет удалить из него всё лишнее. Наиболее известная и полезная программа (по крайней мере я так думаю) для обработки SVG это SVGO . Она удаляет весь не нужный код. Но! Будьте внимательны используя эту программу, если планируете управлять SVG при помощи CSS / JS , так как она может слишком сильно почистить код, что затруднит дальнейшие изменения. Удобство SVGO ещё и в том, что её можно включить в процесс автоматической сборки проекта, но можно также использовать GUI если хочется.
Разбираясь подробнее с правильным удалением всего ненужного, мы можем сделать ещё кое-что в графическом редакторе. Сперва нужно убедиться, что используется настолько мало контуров/форм, насколько это возможно, так же как и точек на этих контурах. Можно объединять и упрощать всё, что поддаётся упрощению, и удалить все ненужные точки. В Иллюстраторе есть плагин VectorScribe с инструментом Smart Remove Brush Tool , который поможет удалить точки и при этом оставить общую форму той же.
Предварительная оптимизация
Smart Remove Brush Tool удалил точки
Дальше будем увеличивать изображение. В Иллюстраторе удобно включить просмотр с пиксельной сеткой View > Pixel Preview и проверить, как располагаются контуры. Чтобы разместить контуры по сетке, потребуется немного времени, но эти усилия окупятся и позволят добиться более чёткого рендеринга (лучше обратить на это внимание заранее).
Точки вне сетки
Выравнивание по сетке
Если есть два и более объекта для выравнивания, то стоит удалить все ненужные перекрытия. Иногда даже если контуры тщательно выровнены, может быть видна тонкая белая линия. Чтобы предотвратить такое, можно немного наложить объекты друг на друга в местах перекрытия. Важно: в SVG z-index имеет определённый порядок, который зависит от объекта, находящегося снизу, поэтому стоит поместить верхний объект в нижнюю часть файла в коде.
И, наконец, последнее, но немаловажное, то, о чём обычно забывают - это активировать gzip сжатие SVG на вашем сайте в.htaccess файле.
AddType image/svg+xml svg svgz
В качестве примера того, насколько эффективна эта техника, я воспользуюсь оригинальным логотипом Breaking Borders и оптимизирую его таким образом: увеличиваю размер до того, каким он должен быть; приведу в порядок контуры; удалю максимально возможное количество точек; передвину точки на целочисленные пиксели; сдвину все области перекрытий и отправлю это всё в SVGO .
Оригинал: 1,413b
После оптимизации: 409b
В итоге размер файла стал меньше на ~71% (и на ~83% при сжатии)
Подготовил: Евгений Рыжков Дата публикации: 27.08.2010
Последнее обновление: 17.11.2010
Задача
Отобразить SVG-изображение на HTML-странице.
Существует несколько способов это сделать, но не все из них кроссбраузерны.
SVG через iframe
Наличие фрейма для многих уже ставит крест на данном способе. Нынче есть более совершенные способы решения данной задачи. К тому же в таком виде не получится реализовать прозрачные изображения (фрейм имеет фон), а так же нет доступа из внешних скриптов к элементам рисунка.
SVG через object
Ne kemi: kod të pastër të vlefshëm, tekst alternativ, ku mund t'i jepni përdoruesit udhëzime se çfarë të bëjë nëse ai nuk e sheh foton (për shembull, dërgoni në faqen e internetit shfletues normal ose jepni një lidhje me një shtojcë, instalimi i së cilës do ta ndihmojë atë). Ky ngulitje mbështet transparencën në imazhin SVG (megjithëse në IE ka një problem: zonat transparente do të mbushen me të bardhë). Kundër: nuk ka asnjë mënyrë për të ndikuar imazhet nga skriptet e jashtme (nga HTML), vetëm ato që janë në vetë skedarin SVG.
Metoda është e mirë për imazhet e sfondit ose ndonjë fotografi statike.
SVG nëpërmjet embed
Kjo metodë supozohet se lejon që skriptet në HTML të ndërveprojnë me përmbajtjen e skedarit SVG (Unë nuk kam qenë në gjendje ta arrij këtë ende). Për IE ka atribut wmode (
Kjo metodë është shumë e popullarizuar tani.
SVG në kodin HTML
- duhet t'i kushtoni vëmendje hapësirës së emrave të përdorur: xmlns: svg = "http://www.w3.org/2000/svg">;
- dokumenti duhet të jetë saktësisht në formatin xhtml (në vend - ky është një skedar me shtesën .xhtml)
- Përputhshmëria e ndër-shfletuesve me këtë metodë është e keqe. Përgjigja e IE është veçanërisht e keqe;
- Kodi html bëhet në mënyrë joreale të çrregullt.
Është më mirë të mos e përdorni këtë metodë tani.
Shënimi
IE duke përfshirë versionin 8 nuk e mbështet SVG. Në atë koha e Microsoft promovoi në mënyrë aktive formatin e tij - VML. Prandaj, do të duhet të ndërhyni me këtë shfletues në mënyrë që të shihni imazhin SVG edhe atje (më shumë për këtë në artikujt vijues).
E ardhme e ndritur
Me sa duket, në të ardhmen e afërt, formati SVG do të hyjë plotësisht në jetën e zhvilluesve të uebit. Në konfirmim të kësaj, ju tashmë mund të gjeni përshkrime tani mënyra interesante duke futur SVG. Zhvilluesit e shfletuesve thonë se versionet e reja të krijimeve të tyre do të mbështesin disa ose të gjitha mënyrat e mëposhtme për të integruar SVG.
SVG është një format grafike vektoriale. Fjalë për fjalë emri i tij do të thotë i shkallëzuar Grafika vektoriale"(Grafika vektoriale e shkallëzuar). Shumë thjesht, kjo është ajo me të cilën punoni në Adobe Illustrator. SVG mund të përdoret lehtësisht në ueb, por ka shumë gjëra për të kuptuar së pari.
Pse keni nevojë fare për SVG?
- Madhësi të vogla skedarësh, kompresim i shkëlqyer;
- Shkallëzimi në çdo madhësi, pa humbje të cilësisë (ndoshta, në madhësi shumë të vogla);
- Duket mirë në retinë;
- Mundësi të shumta të ofruara nga filtrat dhe interaktiviteti.
Krijo një imazh SVG për të punuar më pas.
Krijo një vizatim me dorë të lirë në Adobe Illustrator. Për shembull, një zog kivi në një ovale.
Vini re se imazhi është prerë për t'iu përshtatur skajeve të figurës. Canvas është po aq i rëndësishëm në SVG sa është në PNG ose JPG.
Adobe Illustrator mund të ruajë në SVG.
Kur ruani, do të shfaqet një kuti tjetër dialogu me cilësime. Të them të drejtën, nuk di shumë për ta. Ekziston një tutorial i tërë për profilet SVG. Jam mirë me SVG 1.1.
Vlen të theksohet këtu se ju keni mundësinë të klikoni OK dhe të ruani skedarin ose klikoni butonin "SVG Code ...", i cili do të hapë një dritare TextEdit (të paktën në Mac) me kodin SVG.
Të dyja opsionet mund të jenë të dobishme.
Në Illustrator Hapësira e punës ishte 612 px ✕ 502 px.
Këto janë dimensionet që do të ketë imazhi në faqe, nëse nuk i specifikoni ato në mënyrë specifike. Dimensionet e tij mund të ndryshohen duke vendosur atributet e gjerësisë ose lartësia për img, ashtu si PNG ose JPG. Ja një shembull:
Mbështetja e shfletuesit
Një opsion është kontrollimi i mbështetjes përmes Modernizr dhe zëvendësimi i src për imazhin:
if (! Modernizr.svg) ($ (". logo img") .attr ("src", "imazhe / logo.png");)David Bushell ka ofruar një alternativë shumë të thjeshtë nëse nuk e keni problem JavaScript në shënimin tuaj:
"this.onerror = null; this.src =" image.png "">
Për këtë mënyrë të futjes së SVG, mund të përdorni teknikat e mëposhtme të degradimit:
<svg> ... svg> <div class = "rikthim">div>Duke përdorur përsëri Modernizr:
.logo-fallback (shfaq: asnjë; / * Sigurohuni që madhësia përputhet me madhësinë e SVG * /) .no-svg .logo-fallback (background-image: url (logo.png);)Shtimi i SVG në një faqe duke përdorur një etiketë
Nëse për ndonjë arsye nuk ju pëlqen opsioni i futjes së SVG direkt në dokument (ai ka ende disa të meta, për shembull, memoria është pothuajse e pamundur), mund të përfshini skedarin SVG duke përdorur
<lloji i objektit = "imazh / svg + xml" të dhëna = "kiwi.svg" class = "logo"> Logo e kivit objekt>Në rast se kjo nuk mbështetet, ne zbatojmë degradimin duke përdorur klasën që Modernizr shton:
.no-svg .logo (gjerësia: 200 px; lartësia: 164 px; imazhi i sfondit: url (kiwi.png);)Kjo qasje nuk ka probleme me ruajtjen e memories dhe mbështetet nga shfletuesit. eshte me mire, se të tjerët. Por nëse përdorni skedar i jashtëm me stile ose