SVG — είναι μια διανυσματική μορφή εικόνας βασισμένη σε XML, που αναπτύχθηκε από την κοινοπραξία W3C. Σε αντίθεση με τις ραστεροποιημένες μορφές JPEG και PNG, το SVG αποθηκεύει μαθηματικές περιγραφές σχημάτων: γραμμών, καμπυλών, κύκλων και κειμένου. Αυτό επιτρέπει την κλιμάκωση της εικόνας σε οποιοδήποτε μέγεθος χωρίς απώλεια ποιότητας. Σύμφωνα με το MDN Web Docs, 2025, το SVG υποστηρίζεται σε όλα τα σύγχρονα προγράμματα περιήγησης και χρησιμοποιείται για εικονίδια, εικονογραφήσεις, κινούμενα σχέδια και γραφήματα. Στην ανάπτυξη ιστού, το SVG έχει γίνει το πρότυπο για προσαρμοστικές διεπαφές χάρη στο μικρό του μέγεθος και τη δυνατότητα styling μέσω CSS.
Κύρια
SVG — μια μορφή διανυσματικών γραφικών βασισμένη σε XML, που εμφανίστηκε το 2001 ως σύσταση W3C. Σε αντίθεση με τις ραστεροποιημένες μορφές, το SVG περιγράφει την εικόνα μέσω γεωμετρικών πρωτογενών στοιχείων: σημεία, γραμμές, καμπύλες και πολύγωνα. Το αρχείο SVG είναι ένα απλό κείμενο XML εγγράφου που μπορεί να διαβαστεί, να επεξεργαστεί και να συμπιεστεί με τυπικά εργαλεία.
Η αρχιτεκτονική του SVG περιλαμβάνει πολλές βασικές έννοιες. viewBox καθορίζει ένα εικονικό σύστημα συντεταγμένων, ανεξάρτητο από τα πραγματικά μεγέθη του στοιχείου. Για παράδειγμα, viewBox="0 0 100 100" δημιουργεί ένα τετράγωνο πλέγμα 100×100, εντός του οποίου όλες οι συντεταγμένες είναι σταθερές. Όταν αλλάζει το πλάτος ή το ύψος του περιέκτη, το περιεχόμενο κλιμακώνεται αναλογικά.
Σύμφωνα με το W3C SVG 2 Specification, η σύγχρονη έκδοση του SVG υποστηρίζει διαβαθμίσεις, μάσκες, φίλτρα, κείμενο με αυθαίρετη τοποθέτηση, διαδραστικότητα μέσω JavaScript και κινούμενα σχέδια μέσω CSS και SMIL. Το SVG είναι ενσωματωμένο στο DOM ως πλήρες στοιχείο HTML, επιτρέποντας τον προγραμματισμό κάθε γραφικού πρωτογενούς στοιχείου.
Στην ανάπτυξη κινητών, το SVG χρησιμοποιείται επίσης στο iOS μέσω UIGraphicsImageRenderer και στο Android μέσω VectorDrawable — και οι δύο μορφές μετατρέπουν περιγραφές παρόμοιες με SVG σε επιταχυνόμενες ραστεροποιημένες εικόνες στην GPU.
Το SVG 1.0 έγινε σύσταση W3C το 2001, το SVG 1.1 το 2003, το SVG 2.0 βρίσκεται υπό ανάπτυξη από το 2012. Η κύρια καινοτομία του SVG 2 είναι η βαθύτερη ενσωμάτωση με CSS, η υποστήριξη compositing και blending modes, καθώς και η δυνατότητα χρήσης SVG σε HTML χωρίς προθέματα namespace.
Παρά το γεγονός ότι το SVG 2 δεν έχει φτάσει ακόμη σε κατάσταση Σύστασης, τα σύγχρονα προγράμματα περιήγησης υποστηρίζουν ήδη το μεγαλύτερο μέρος της λειτουργικότητάς του. Τα Chrome, Safari, Firefox και Edge έχουν σχεδόν πλήρη υποστήριξη για SVG 1.1 και σημαντικό μέρος του SVG 2.
Το SVG παρέχει ένα σύνολο στοιχείων για την περιγραφή δισδιάστατων γραφικών. Κάθε στοιχείο έχει χαρακτηριστικά που καθορίζουν τη θέση, το μέγεθος και την οπτική του εμφάνιση. Τα χαρακτηριστικά μπορούν να οριστούν ως χαρακτηριστικά XML ή μέσω ιδιοτήτων CSS.
Το στοιχείο path — το πιο ισχυρό και ευέλικτο στοιχείο SVG. Το χαρακτηριστικό d περιέχει μια ακολουθία εντολών: M (moveTo), L (lineTo), C (cubic Bezier curve), Q (quadratic Bezier curve), A (arc), Z (close path). Κάθε εντολή έχει απόλυτη ή σχετική μορφή (κεφαλαίο ή πεζό γράμμα).
Το SVG υποστηρίζει επίσης την ομαδοποίηση στοιχείων μέσω <g>. Η ομάδα κληροδοτεί οπτικά χαρακτηριστικά (fill, stroke, transform) σε όλα τα θυγατρικά στοιχεία. Αυτό επιτρέπει την εφαρμογή ενιαίου στυλ σε ένα ολόκληρο σύνολο σχημάτων και τη διαχείριση της θέσης τους μέσω ενός transform.
Η κύρια διαφορά μεταξύ SVG και ραστεροποιημένων μορφών (JPEG, PNG, WebP) — ο τρόπος αποθήκευσης πληροφοριών. Η ραστεροποιημένη μορφή αποθηκεύει το χρώμα κάθε εικονοστοιχείου σε ένα πλέγμα σταθερού μεγέθους. Το SVG αποθηκεύει μαθηματικές εντολές για την αναπαραγωγή σχημάτων. Αυτή η διαφορά καθορίζει όλα τα πλεονεκτήματα και μειονεκτήματα των μορφών.
| Χαρακτηριστικό | SVG | Ραστεροποιημένο (PNG/JPEG) |
|---|---|---|
| Κλιμάκωση | Χωρίς απώλεια ποιότητας | Απώλεια ποιότητας κατά τη μεγέθυνση |
| Μέγεθος αρχείου | Μικρό για απλά σχήματα | Εξαρτάται από την ανάλυση |
| Επεξεργασία | Μέσω κειμένου, κώδικα | Απαιτεί γραφικό επεξεργαστή |
| Styling CSS | Πλήρης υποστήριξη | Όχι |
| Κινούμενα σχέδια | CSS + SMIL | Μόνο GIF ή APNG |
| Φωτογραφίες | Δεν είναι κατάλληλο | Ιδανικό |
| Εικονίδια/λογότυπα | Ιδανικό | Υπερβολικό |
| Υποστήριξη προγραμμάτων περιήγησης | 96%+ | 100% |
Σύμφωνα με το HTTP Archive, 2025, το 68% των ιστοτόπων χρησιμοποιεί SVG για εικονίδια, το 34% για εικονογραφήσεις και το 22% για λογότυπα. Το μέσο μέγεθος ενός εικονιδίου SVG είναι 0.5–2 KB, ενώ ένα ραστεροποιημένο εικονίδιο παρόμοιας ποιότητας είναι 5–20 KB σε μορφή PNG.
Για φωτογραφίες και σύνθετες ραστεροποιημένες εικόνες, το SVG δεν είναι κατάλληλο — το μέγεθος της περιγραφής XML θα υπερβεί το μέγεθος ενός ισοδύναμου JPEG. Συνιστώμενος τομέας εφαρμογής SVG: εικονίδια, λογότυπα, εικονογραφήσεις, σχήματα, γραφήματα, στοιχεία διεπαφής με προσαρμοστικό σχεδιασμό.
SVG — βέλτιστη επιλογή για στοιχεία διεπαφής που πρέπει να εμφανίζονται ευκρινή σε οθόνες Retina και σε οποιαδήποτε κλίμακα προγράμματος περιήγησης. Ραστεροποιημένη μορφή — για φωτογραφίες, σύνθετες υφές και εικόνες με εκατομμύρια χρώματα, όπου η διανυσματική περιγραφή θα ήταν υπερβολικά περίπλοκη.
Υβριδική προσέγγιση — συνδυασμός SVG για στοιχεία διεπαφής και WebP/AVIF για φωτογραφικό περιεχόμενο — παρέχει την καλύτερη ισορροπία μεταξύ ποιότητας και απόδοσης φόρτωσης σελίδας.
Inline SVG — είναι η ενσωμάτωση σήμανσης SVG απευθείας σε ένα έγγραφο HTML, όχι ως ξεχωριστό αρχείο μέσω <img> ή background-image. Το πλεονέκτημα του inline SVG είναι ότι τα στοιχεία SVG γίνονται μέρος του DOM και μπορούν να υποστούν styling μέσω CSS, να ελεγχθούν μέσω JavaScript και να δημιουργήσουν κινούμενα σχέδια χωρίς επιπλέον αιτήματα στον διακομιστή.
Σε αντίθεση με το <img src="icon.svg"> όπου το SVG είναι απομονωμένο στο shadow DOM, το inline SVG κληρονομεί τα χρώματα και τις γραμματοσειρές του γονικού εγγράφου. Αυτό επιτρέπει, για παράδειγμα, την αλλαγή χρώματος ενός εικονιδίου κατά την αιώρηση μέσω της ψευδοκλάσης CSS :hover χωρίς φόρτωση ξεχωριστού αρχείου για κάθε κατάσταση.
Σύμφωνα με το CSS-Tricks, το inline SVG είναι ο συνιστώμενος τρόπος χρήσης εικονιδίων σε σύγχρονες εφαρμογές ιστού. Οι ιδιότητες CSS fill, stroke, stroke-width εφαρμόζονται απευθείας στα στοιχεία SVG. Για προσαρμογή μέσω CSS, είναι σημαντικό στο αρχικό SVG τα fill και stroke να μην ορίζονται ως inline χαρακτηριστικά — διαφορετικά, το CSS δεν μπορεί να τα παρακάμψει.
Τα SVG-sprites λύνουν το πρόβλημα προσωρινής αποθήκευσης: όλα τα εικονίδια συλλέγονται σε ένα αρχείο, το πρόγραμμα περιήγησης το φορτώνει μία φορά, και μεμονωμένα εικονίδια συνδέονται μέσω <use> με αναφορά στο id του απαιτούμενου στοιχείου εντός του sprite.
Κινούμενα σχέδια CSS SVG — ο πιο διαδεδομένος και αποδοτικός τρόπος δημιουργίας κινούμενων σχεδίων διανυσματικών γραφικών στο πρόγραμμα περιήγησης. Οι ιδιότητες CSS, όπως transform, opacity και fill, εφαρμόζονται σε στοιχεία SVG όπως ακριβώς και σε στοιχεία HTML. Για κινούμενα σχέδια κατά μήκος μιας αυθαίρετης διαδρομής χρησιμοποιείται η ιδιότητα CSS offset-path.
SMIL (Synchronized Multimedia Integration Language) — ένας ενσωματωμένος μηχανισμός κινούμενων σχεδίων στο SVG, ανεξάρτητος από CSS. Τα στοιχεία <animate>, <animateTransform> και <animateMotion> επιτρέπουν τη δημιουργία κινούμενων σχεδίων οποιωνδήποτε χαρακτηριστικών SVG χωρίς JavaScript και CSS. Τα κινούμενα σχέδια SMIL είναι εγγυημένα συγχρονισμένα με τον ρυθμό καρέ του προγράμματος περιήγησης.
Σύμφωνα με το MDN Web Docs, το SMIL υποστηρίζεται σε όλα τα σύγχρονα προγράμματα περιήγησης, αλλά τα κινούμενα σχέδια CSS θεωρούνται πιο προβλέψιμα και αποδοτικά. Το κύριο σενάριο για SMIL — κινούμενα σχέδια χαρακτηριστικών που δεν είναι προσβάσιμα μέσω CSS, για παράδειγμα d (path) του στοιχείου <path>.
JavaScript + requestAnimationFrame παρέχει μέγιστο έλεγχο στα κινούμενα σχέδια SVG. Οι προγραμματιστές ιστού χρησιμοποιούν τις βιβλιοθήκες GSAP και Anime.js για σύνθετες ακολουθίες κινούμενων σχεδίων με χρονοδιαγράμματα και συναρτήσεις easing που είναι δύσκολο να υλοποιηθούν με καθαρό CSS.
Πρώτο παράδειγμα — ένα απλό εικονίδιο σπιτιού χρησιμοποιώντας βασικά στοιχεία SVG. Όλα τα σχήματα είναι rect και polyline:
<!-- Inline SVG icon -->
<svg viewBox="0 0 100 100" width="48" height="48" xmlns="http://www.w3.org/2000/svg">
<rect x="20" y="50" width="60" height="40" fill="#4A90D9" />
<rect x="35" y="65" width="30" height="25" fill="#fff" />
<polyline points="10,50 50,15 90,50" fill="none" stroke="#4A90D9" stroke-width="6" />
</svg>
Δεύτερο παράδειγμα — κινούμενα σχέδια περιστροφής φόρτωσης μέσω CSS. Χρησιμοποιείται <circle> με χαρακτηριστικό stroke-dasharray για δημιουργία διακεκομμένου περιγράμματος:
<!-- CSS animated spinner -->
<svg class="spinner" viewBox="0 0 50 50" width="40" height="40">
<circle cx="25" cy="25" r="20" fill="none"
stroke="#4A90D9" stroke-width="4"
stroke-dasharray="125.6 31.4" />
</svg>
<style>
.spinner circle {
animation: spin 1.5s linear infinite;
transform-origin: center;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
</style>
Τρίτο παράδειγμα — κινούμενα σχέδια path μέσω της βιβλιοθήκης GSAP για ομαλή σχεδίαση περιγράμματος. Το GSAP λειτουργεί με το χαρακτηριστικό stroke-dashoffset, δημιουργώντας το εφέ εμφάνισης της γραμμής:
// Σχεδίαση διαδρομής με GSAP
import gsap from "gsap";
const path = document.querySelector("#myPath");
const length = path.getTotalLength();
gsap.set(path, {
strokeDasharray: length,
strokeDashoffset: length
});
gsap.to(path, {
strokeDashoffset: 0,
duration: 2,
ease: "power2.out"
});
Συχνές Ερωτήσεις
SVG είναι μια μορφή εικόνας που αποθηκεύει όχι εικονοστοιχεία, αλλά μαθηματικά σχήματα: γραμμές, κύκλους, ορθογώνια και καμπύλες. Επομένως, μια εικόνα SVG μπορεί να μεγεθυνθεί σε οποιοδήποτε μέγεθος — θα παραμείνει ευκρινής. Το αρχείο SVG είναι κώδικας XML κειμένου που μπορεί να επεξεργαστεί σε οποιονδήποτε επεξεργαστή κώδικα.
Το SVG καταλαμβάνει λιγότερο χώρο (0.5–2 KB έναντι 5–20 KB για PNG), δεν χάνει ποιότητα σε οθόνες Retina, υποστηρίζει κινούμενα σχέδια και styling μέσω CSS. Για εικονίδια διεπαφής, το SVG είναι το πρότυπο. Το PNG είναι πιο κατάλληλο για φωτογραφίες και εικόνες με σύνθετες χρωματικές μεταβάσεις.
Χρησιμοποιήστε inline SVG χωρίς χαρακτηριστικά fill στη σήμανση, στη συνέχεια ορίστε fill στο CSS: svg:hover path { fill: red; }. Εάν το SVG είναι συνδεδεμένο μέσω <img>, το χρώμα δεν μπορεί να αλλάξει μέσω CSS — χρησιμοποιήστε inline SVG ή SVG-sprite με <use href="#id">.
viewBox είναι ένα εικονικό σύστημα συντεταγμένων του SVG, ανεξάρτητο από τα πραγματικά μεγέθη του στοιχείου. Μορφή: viewBox="minX minY width height". Για παράδειγμα, viewBox="0 0 100 100" δημιουργεί ένα πλέγμα συντεταγμένων 100×100. Όλες οι εσωτερικές συντεταγμένες ορίζονται σε σχέση με αυτό το πλέγμα και κλιμακώνονται αυτόματα όταν αλλάζει το μέγεθος του περιέκτη.
Ναι. Το SVG υποστηρίζει CSS κινούμενα σχέδια (keyframes, transition) και SMIL — έναν ενσωματωμένο μηχανισμό κινούμενων σχεδίων με στοιχεία <animate>, <animateTransform> και <animateMotion>. Το SMIL επιτρέπει κινούμενα σχέδια χαρακτηριστικών που δεν είναι προσβάσιμα μέσω CSS, για παράδειγμα path του στοιχείου <path>.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης