Scalare grafică SVG folosind CSS
Publicat: 2023-02-03Când vine vorba de crearea de grafică vectorială pentru web, există într-adevăr un singur format despre care trebuie să știți: SVG. Și deși este posibil să creați grafice SVG simple folosind cod, este mult mai ușor să lucrați cu ele folosind CSS. În acest articol, vom arunca o privire asupra modului de scalare a graficelor SVG folosind CSS. De asemenea, vom analiza câteva dintre beneficiile utilizării SVG față de alte formate, cum ar fi PNG sau JPEG.
Utilizarea graficelor vectoriale (SVG) la scară. Amelia Bellamy-Royds împărtășește un ghid epic de scalare pentru scalarea SVG. În ciuda faptului că scalarea graficelor raster este mai dificilă, are potențialul de a deschide noi posibilități. Începătorilor le poate fi greu să înțeleagă cum să-l facă să se comporte așa cum doresc. Imaginile Anaster sunt clar definite de raportul lor de aspect, care este raportul dintre lățime și înălțime în text. Dacă forțați o imagine raster să fie mai mică decât înălțimea și lățimea ei intrinsecă, aceasta va deveni distorsionată; cu toate acestea, dacă forțați să fie mai mare, va deveni distorsionat. SVG-urile inline vor fi desenate la dimensiunea specificată de cod, indiferent de dimensiunea pânzei specificată în cod.
ViewBox, piesa finală, este responsabilă pentru proiectarea graficelor vectoriale care pot fi scalate. Elementul viewBox este o componentă a elementului >svg>. Valoarea este o listă de patru numere separate prin spații albe sau virgule, fiecare dintre acestea reprezentând un aspect diferit al valorii. x și y determină sistemul de coordonate pentru colțul din stânga sus al ferestrei de vizualizare. Numărul de px/coordonate care urmează să fie scalat este denumit înălțime. Dacă specificați dimensiuni care nu se aliniază cu raportul de aspect, imaginea nu va fi întinsă sau distorsionată. Este posibil să aliniați alte tipuri de imagini utilizând noua proprietate CSS de potrivire obiect.
De asemenea, puteți seta setarea preserveRatioAspect="none" pentru a vă scala imaginea la aceeași dimensiune ca o imagine raster. Puteți determina lățimea și înălțimea imaginii folosind imagini raster și, de asemenea, puteți avea ca cealaltă scară să se potrivească cu imaginea. Cum generează sva date cu grafică vectorială? Devine mai complicat pe măsură ce îmbătrânești. Dacă doriți să măriți automat o imagine într-un fișier *.img, ar trebui să vă gândiți să utilizați un fișier *. Puteți modifica raportul de aspect al unui element ajustând înălțimea și marginea acestuia folosind diferite proprietăți CSS. Alte browsere vor seta automat dimensiunea implicită de 300*150 a imaginii pentru imaginile cu viewBoxes fără a specifica comportamentul.
Este posibil să scalați o imagine pentru a se potrivi în interiorul viewBox-ului folosind cele mai recente browsere Blink/Firefox. Aceste browsere vor folosi aceleași dimensiuni implicite, indiferent dacă specificați înălțimea sau lățimea. Un element container, de exemplu, este cea mai simplă metodă pentru SVG inline, precum și alte elemente înlocuite. Înălțimea oficială va fi zero într-un grafic care este inline și svg. Când valoarea preserveRatioAspect este setată la true, graficul va fi redus la nimic. În loc să vă extindeți grafica, ar trebui să subliniați că acestea se întind până la zona de umplutură pe care ați pus-o deoparte cu grijă pentru raportul de aspect adecvat. Atributele viewBox și preservationRatio sunt extrem de flexibile. elementele <svg> imbricate, fiecare cu propriile atribute de scalare, pot fi folosite pentru a separa părțile scalei dvs. grafice. Această metodă vă permite să creați un antet grafic suficient de lung și plat pentru a umple un ecran lat, fără a fi excesiv de înalt.
Svg-ul poate fi scalat cu Css?
Dacă doriți, puteți modifica atributele de înălțime și lățime ale *svg* din fișierul *svg*. Puteți folosi această regulă pentru a anula dimensiunile și raporturile de aspect pe care le specificați în codul dvs., precum și pentru a face porțiunea inline a svg-ului la înălțimea implicită.
Deoarece proprietățile de lățime și înălțime CSS sunt setate la false, nu puteți scala imaginile SVG . Deoarece pictogramele au o înălțime fixă în formă, creșterea lățimii imaginii nu le va face mai înalte dacă înălțimea este restricționată. Proprietatea de transformare CSS vă permite să rotiți, să scalați, să înclinați și să traduceți elemente. ViewBox=0 0 Nu sunt sigur că [w] [h] este corect pentru unele svg-uri, mă refer la zero. Primele două cifre determină locația pictogramei într-o casetă (fie că este lățimea completă sau înălțimea completă) și dacă pictograma este pătrată (deoarece pictogramele pătrate funcționează numai dacă au lățime completă sau înălțime completă).
Puteți face acest lucru într-o varietate de moduri. Cel mai simplu mod de a crea un nou SVG cu dimensiuni este să îl exportați ca imagine. Poate fi necesar să se creeze dimensiuni specifice, care pot fi consumatoare de timp și pot să nu fie acceptate de toate browserele. Alternativ, puteți utiliza Generatorul de răspuns SVG. Instrumentul creează automat fișiere SVG receptive, în funcție de dimensiunile dvs. și de orice interogări media pe care le specificați, indiferent de interogarea dvs. media. Opțiunea este una bună dacă știi ce faci, dar nu este întotdeauna ușor de implementat. Cu toate acestea, cea mai bună opțiune este să utilizați atributele pe care le include Illustrator CC, cum ar fi lățimea și înălțimea. Dacă specificați o dimensiune diferită, SVG-ul dvs. va fi întotdeauna receptiv în toate browserele. Acest pas nu trebuie să fie efectuat pe un computer dacă vă grăbiți sau aveți un număr mare de SVG-uri. Puteți începe să exportați fișiere SVG receptive imediat din Illustrator CC.
Cum modific lățimea și înălțimea unei imagini Svg?
Cum pot redimensiona o imagine folosind SVG? Înainte de a putea selecta un fișier de salvat ca SVG, trebuie mai întâi să adăugați un fișier imagine SVG. Trageți sau plasați fișierul imagine în zona albă și selectați un fișier. În acest pas, trebuie să ajustați setările de redimensionare, apoi să faceți clic pe butonul Redimensionare. Abia după finalizarea procesului veți putea descărca rezultatele.
Este foarte distractiv să transformi o imagine într-o opera de artă. Nu a fost ușor, dar a meritat. Aveți două opțiuni pentru redimensionarea unei imagini SVG. Dacă doriți să modificați dimensiunea sau înălțimea unui fișier XML, faceți clic pe eticheta XML. Puteți porni fișierul utilizând editorul de text. Ar trebui să vedeți liniile de cod de mai jos. CSS este o altă soluție. Cu toate acestea, prin specificarea „„lățime” și „„înălțime”, nu modificați situația.
Svg-ul poate fi întins?
Când este creată o imagine SVG cu lungime fixă, aceasta este procesată în același mod ca o imagine raster de aceeași dimensiune. Dacă utilizați CSS pentru a vă extinde SVG-ul la un alt raport de aspect, asigurați-vă că ați inclus preserveRatio=”none” în fișierul.svg.
Importanța graficelor vectoriale scalabile
Pentru a crea grafice atât mici, cât și mari, puteți utiliza formatul de grafică vectorială SVG . Cu alte cuvinte, este posibil ca atributele de înălțime și lățime ale elementului SVG să nu specifice pixeli; în schimb, poate fi utilizată oricare dintre mai multe unități. Calitatea unui SVG poate fi astfel menținută fără a pierde niciun aspect. Când vine vorba de dimensiunea imaginii și tipul de afișare, diferențele dintre acestea două sunt irelevante cu SVG-urile.
Imaginile Svg pot fi scalate?
Da, imaginile SVG pot fi scalate. Acest lucru se datorează faptului că imaginile SVG sunt imagini vectoriale, ceea ce înseamnă că sunt formate dintr-o serie de linii și curbe, mai degrabă decât pixeli. Aceasta înseamnă că pot fi mărite sau reduse fără a pierde calitatea.
Imaginile pot fi decupate și scalate folosind software-ul Cropping. Când utilizați documente SVG , este simplu să faceți acest lucru. Acest fragment CSS va fi înlocuit cu un fragment SVG. În acest articol, vom folosi atributele viewBox și AspectRatio pentru a decupa, scala și poziționa imaginile. Nu veți avea probleme cu utilizarea acestor atribute, așa că nu vă fie teamă să le încercați. Doriți ca utilizatorul să poată încărca orice dimensiune sau imagine de aspect dorește. Decuparea și scalarea imaginilor într-o casetă montată este facilitată de proprietățile object-fit și object-position.
Toate cele mai recente browsere, inclusiv Microsoft Edge 16 și Opera Mini, îl acceptă, deși acesta din urmă necesită prefix -o-. PreserveAspectRatio poate fi folosit pentru a modifica poziția, dimensiunea și scara unei casete de vizualizare, la fel ca object-fit și object-position. De exemplu, să presupunem că avem un pătrat și un viewBox care au rapoarte de aspect diferite (2:1). Pe de altă parte, scara este utilizată pentru a menține raportul de aspect al viewBox-ului în timp ce micșorează dimensiunea acestuia, iar o parte din conținut este eliminat (de unde și efectul de tăiere). Include 19 valori, inclusiv niciuna care să determine cât spațiu este oferit de fiecare element. Comportamentul implicit al browserului este de a poziționa atât imaginea, cât și viewBox-ul astfel încât acestea să fie complet vizibile din fereastra de vizualizare atunci când înlocuiți elementul cu o imagine și potriviți raportul de aspect al acelei imagini cu viewBox. Modificarea valorii preserveAspectRatio vă poate ajuta să determinați ce aspect al imaginii se modifică în funcție de poziția și scara acesteia în SVG.
CSS object-fit și object-position pot fi folosite pentru a decupa și a scala imaginile . Puteți utiliza aceste proprietăți numai în cea mai recentă versiune de ME Edge, precum și în orice browser modern. Când adăugați un >svg la o imagine, vă permite să oferiți suport pentru Internet Explorer 9.
Graficele care necesită scalare sau corectare fără a pierde claritatea sunt ideale pentru utilizarea SVG. De asemenea, este relativ simplu de utilizat, ceea ce îl face potrivit pentru ecrane mai mici, ceea ce are un impact redus asupra timpului de încărcare. În plus, grafica este animată, ceea ce le oferă o senzație mai dinamică.
Svg Transform=scale
Transformarea la scară vă permite să redimensionați elementele SVG . Puteți crește sau micșora dimensiunea elementelor dvs. utilizând un număr pozitiv sau negativ. Transformarea la scară ia doi parametri: coordonata x și coordonata y.
Funcțiile de transformare pot fi folosite pentru a manipula elementele SVG în același mod în care se transformă HTML. Există unele lucruri care funcționează diferit pe elementele SVG decât pe elementele HTML. Nu putem, de exemplu, traduce funcții folosind valori % (valorile % nu vor funcționa nici pentru transformările CSS), nici nu putem roti sau înclina unghiurile folosind grade. Punctul în care elementele HTML își formează coordonatele este de 50% din coordonatele elementului. În cazul SVG , există un punct 0 0 pe pânză. Când are loc o transformare de rotire, scalare sau oblică, rezultatele vor fi diferite pentru diferite origini. Când o transformare translate este aplicată unuia dintre elementele noastre, transformarea se schimbă odată cu ea.
Pentru elementele 2D, avem trei funcții de traducere disponibile: translateX(tx), translateY(ty) și translate(tx[, ty). În fiecare caz, direcțiile x și y sunt utilizate așa cum este indicat de coordonatele sistemului elementului. A treia funcție de translație mută elementul cu tx de-a lungul axelor x și y. Rotația elementelor și sistemele lor de coordonate leagă elementele de originile lor fixe. Valoarea unghiului poate fi exprimată în grade (grade), radiani (radiani), ture (viruri) sau gradiani (absolvenți). Am putea folosi și valoarea calc() (de exemplu, ceva de genul 25turn – 30deg), dar acest lucru funcționează doar în Chrome 38/35 momentan. Funcția de rotire poate fi efectuată cu valoarea unghiului calc() în Firefox 59 și versiuni ulterioare.
Dacă setăm această valoare în CSS-ul nostru, putem folosi parametrii x și y pentru a le emula utilizarea. Când se utilizează un atribut de transformare SVG , elementul și coordonatele sale de sistem sunt rotite pur și simplu în jurul punctului specificat de al doilea și al treilea argument al funcției rotate(). Pentru a inversa rotația din acest exemplu, rotiți (-45 140 105) în loc să rotiți (-45). Pur și simplu specificăm un punct fix diferit pentru fiecare rotație a unui element cu 90 de grade în colțul din dreapta jos și cu 90 de grade în colțul din dreapta sus. Cum pot obține același efect cu transformările CSS? În prima rotație, este simplu să setați originea transformării în dreapta jos, dar ce rămâne cu a doua rotație? Dacă îl lanțăm din nou după ce a fost deja rotit cu 90 de grade, pur și simplu se repetă.
Transformarea la scară este determinată de poziția originii sistemului în coordonate. Un factor de scalare de (-1, 1) mărește un element pe măsură ce se contractă, în timp ce un factor de scalare din afara intervalului (-1, 1) îl mărește pe măsură ce se contractă. Scalare direcțională este definită ca diferența de factori de scalare între 1 și 2. Ca rezultat, putem defini originile transformării și transformările în lanț în ambele cazuri. Deviația distorsionează elementul în același mod în care o fac translația și rotația, transformând pătratele în cercuri și cercurile în paralelograme. Unghiul de înclinare este definit ca unghiul dintre pozițiile finale și inițiale ale axei după aplicarea transformării. În intervalul [0*, 90*], se adaugă o valoare de același semn ca și coordonatele neschimbate din valoarea inițială ca urmare a unui unghi de oblic pozitiv.
Când se efectuează o declinare de-a lungul axei x, coordonata x rămâne constantă pentru orice punct al elementului nostru, în timp ce coordonata y se modifică cu o sumă d în funcție de unghiul de oblicare. Când un element se înclină, rezultatul este determinat de poziția sa în punctul de origine al sistemului său de coordonate. Două transformări oblice de-a lungul aceleiași axe produc rezultate diferite în funcție de originea transformării. Casul HTML (stânga) și cazul SVG (dreapta) sunt afișate în figura de mai sus. În timp ce unghiurile sunt de 60 de grade în ambele cazuri, semnul coordonatei y din colțul din dreapta sus le distinge. Unghiul, care este o valoare unitară în proprietatea de transformare CSS, este utilizat pentru a converti o valoare într-o transformare. Gradele (grade), radianii (rads), viraje (turns) și gradiani (grads) pot fi toate exprimate ca acestea sau pot fi chiar combinate cu calc(), în unele cazuri.
O transformare poate fi utilizată pentru a roti, a scala și a deforma un element, la fel ca un element HTML. De exemplu, putem obține un rezultat când folosim transformări în lanț ca valoare a unui atribut SVG în IE. Este, totuși, urât. De ce nu există o modalitate mai simplă de a face acest lucru? În acest cod, avem trei forme asemănătoare poligoanelor numite stele. În demonstrația de mai jos, puteți vedea cum sunt poziționate în raport cu originea pânzei (0 0). În cod sau plasând cursorul pe perechile x,y, puteți găsi care puncte corespund cărora perechile. Cu alte cuvinte, dorim ca fiecare stea să se rotească într-un mod diferit – să presupunem că are un unghi aleatoriu, iar indicele lor are un unghi specific.