SVG'nin birçok avantajı - sonsuz ölçeklenebilir vektör görüntüleri, küçük dosya boyutları ve DOM ile doğrudan entegrasyon dahil - bunun için doğal bir uyum sağlar Duyarlı Web Tasarımı . SVG şartnamesine on yıl yaşlı olmasına rağmen, birçok tarayıcıda ve araçta nispeten yeni bir destek, hala deneyimli web tasarımcıları ve geliştiricileri bile yakalayan bir dizi püf noktası, boşluk ve var.
Burada, bunların en önemlilerini 10 altın kural olarak özetledim.
Bir zanaatkarın çalışmalarına başlamadan önce aletlerini keskinleştirdiği gibi, SVG ile çalışan herkes, mümkün olan en verimli ve optimize edilmiş yöntemde vektör formatını sunmak için başvurularını ayarlamalıdır. Uygulanacak birkaç ayar var.
İlk olarak, başka türlü yapmak için zorlayıcı nedenler olmadığı sürece, vektör aracınızdaki ölçümleri 'piksellere' ayarlayın. SVG için önemli değilken (ki viewbox ve neredeyse her ölçüm sisteminde mutlu bir şekilde elemanlar), SVG çizimini, santimin baskısından ziyade ortak CSS üniteleri kullanarak geliştirmek anlamlıdır; ve ayrıca eklenmesini çok daha kolaylaştırıyor @media Sorgular ve diğer müdahaleler daha sonra.
Tuval alanını olması gerekenden daha büyük yapmayın. Bitmap görüntüleri gibi, SVG'deki herhangi bir 'boş alan' kullanılmayacak ve en iyi CSS marjları ile ikame edilir. Kroki gibi birçok vektör aletinin otomatik olarak tuval alanını seçilen öğelere 'kıracağını unutmayın.
Aynı zamanda, tuval alanını elemanların tam kenarlarına kırpmayın. Antialiasing hala SVG'ye uygulanacak ve çok yakın kesilmesi de antialiasing'i kırpabilir. Bunun yerine, tuvalin kenarı bir öğeye yaklaşırken en az 2px temizleyin.
Duyarlılık ve performans yakından ilişkilidir, bu nedenle ondalık hassasiyeti ikiden fazla puanla ayarlayın. SVG tamsayılarda düşünmüyor, bu yüzden bir vektör noktasının 1.45882721px değerine sahip olabilir. Bu aşırı hassasiyet tamamen gereksizdir ve yalnızca kod şişesi ve dosya boyutuna ekler, bu yüzden bu noktada kesmek daha iyidir.
Benzer şekilde, olabildiğince az sayıda puan kullanarak vektör şekillerini çizin. Birçok yeni tasarımcı daha iyi olduğunu varsayar, tersi aslında gerçek olduğunda: birkaç nokta, iyi yerleştirilen birkaç nokta, bir elemanın üzerinde daha fazla kontrol sağlarken, dosya boyutunu azaltır.
Bu kurala uymayan vektör dosyaları verdiyseniz, endişelenmeyin - çoğu vektör sanat Uygulamalar, bir öğedeki nokta sayısını şeklini değiştirmeden azaltmak için kullanabileceğiniz bir 'basitleştirilmiş' seçeneğine sahiptir. Alternatif olarak, ayrıntılı işler için Astute grafikleri gibi bir eklenti öneririm.
Çoğu uygulama, SVG ihracatında birçok özel, gereksiz kod ekler. Çoğu SVG dosyasının başlangıcındaki tek gerekli kod şudur:
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "0 0 500 500" & gt;
& lt;! - SVG kodu Burada - & gt;
& lt; / svg & gt;
Amaçlarımız için, en önemli yönü, çıkarılmasıdır. Genişlik ve yükseklik Çoğu uygulamanın otomatik olarak içerdiği özellikler. Bu, SVG'yi modern tarayıcılarda tamamen duyarlı hale getirir.
Çok fazla SVG'yi işliyorsanız veya acele ediyorsanız, bu adımı elle tamamlamanıza gerek yoktur. Bunun yerine, üçüncü altın kuralda belirtilen önerileri takip edebilirsiniz ...
SVG içeriğinizi oluşturmak için kullandığınız bir araç, yine de çıkışını bir araçla aracılığıyla işleme koyar. Svgomg , kodu belirgin şekilde kesecek. Tipik olarak, dosya boyutunda yüzde 20 ila 80 civarında tasarruf edebilirsiniz. Aynı kod yerel olarak entegre edilebilir Bir yulaf veya grunt görevi olarak .
Kural 2, modern tarayıcılarda doğru bir şekilde optimize edilmiş SVG'lerin tamamen duyarlı olduğunu belirtti. Microsoft Edge'i modern bir tarayıcı olarak sayarsak bu doğrudur. IE 9-11 için, ele almak için birkaç sorunumuz var. SVG'yi bir görüntü olarak kullanıyorsanız:
& lt; img src = "countdown.svg alt =" geri sayım "& gt;
IE9-11'i, CSS özniteliği seçicisini kullanarak görüntüyü doğru şekilde görüntüleyebiliriz:
IMG [SRC $ = ". SVG"] {Genişlik:% 100;}
SVG görüntüleri genel üretimde iyi çalışır, ancak sınırlı etkileşime sahiptir: Çoğu tarayıcı, bir sayfaya yerleştirilen bir SVG içindeki etkileşimi ve animasyonu görmezden gelir.
. Ek olarak, SVG görüntüleri tarayıcı için ekstra bir HTTP isteğidir.
Bunlar ve diğer nedenlerden dolayı, SVG daha fazla satır içi kullanılmıştır. Bu durumda, SVG kodunun IE için biraz daha tedaviye ihtiyacı var:
& lt; vücut & gt;
...
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "0 0 525 365" preserveaspectratio = "xmidymin dilimi" & gt;
Buna ek olarak En boy oranını koru Öznitelik, yani görüntünün doğru ölçeklenmesini korumak için biraz daha rehberlik gerekir: SVG'nin genişliğini kullanın ( 365 Bu durumda), boyuna bölün ( 525 ) ve sonucu yüzde 100 ile çarpın. Bu olacak Dolgu-alt SVG'nin değeri, SVG'yi doğru en boy oranında görüntülemek için, IE'de yeterince açılır.
& lt; vücut & gt;
...
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "0 0 525 365"
PRESERVEASPECTRATIO = "Xmidymin Dilim"
Stil = "Genişlik:% 100; Dolgu-alt:% 69,52; Yükseklik: 1px; Taşma: Görünür" ve GT;
Bir şeyleri özlü ve net tutmak için, bu makalenin geri kalanındaki kod örnekleri bu değişiklikleri içermemektedir. Amelia Bellamy-Royds yazdı SVG ölçeklendirmesinde mükemmel makale .
Şu anda metni kapsayıcısına boyutlandırmak için hiçbir CSS standardı yoktur. VW birimleri kullanarak metni ölçeklendirmek mümkündür, ancak bu, neredeyse her zaman metni belirli görünüm limitlerinde 'kelepçelendirmek için en az iki medya sorgusu müdahalesi gerektirecektir. Ancak, SVG metni otomatik olarak bir kaba yeniden boyutlandırılır:
& lt; başlık ve gt;
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "0 0 285 80" & gt;
& lt; metnin x = "0" y = "66" & gt; Kauai; / metin ve gt;
& lt; / svg & gt;
& lt; / header & gt;
CSS:
Header SVG Text {
Yazı Tipi Ağırlığı: 900; Yazı tipi boyutu: 90px; Doldur: Mavi;
}
SVG'nin satır içi tutulması erişilebilirliği ve SEO değerini korur ve metnin sayfaya yerleştirilmiş herhangi bir yazı tipi kullanılarak taranmasına izin verir. Görmek İşte daha fazla bilgi için.
Kural 2'nin bir istisnası simgeler ve küçük logolardır; Genişlik ve yükseklik Bağımsız olarak geliştirilmelerini istiyorsanız, özellikler:
& lt; a href = "http://codepen.io" & gt;
& lt; svg rol = "img" aria-label = "codepen" genişliği = "50" yükseklik = "50" & gt;
& lt; unvanı ve gt; codepen & lt; / unvan & gt;
& lt; xlink: href = "# codepen" / & gt kullanın;
& lt; / svg & gt;
& lt; / a & gt;
...
& lt; svg style = "Ekran: Yok;" & gt;
& lt; Symbol ID = "codepen" viewbox = "0 0 50 50" & gt;
& lt; path d = "..." / & gt;
& LT; / Symbol & GT;
& lt; / svg & gt;
Eylemde bu tekniğin bir örneğini görebilirsiniz. İşte .
SVG simgelerini yalnızca CSS ile boyutlandırırsak ve sitenin stil sayfası yüklenmiyorsa, simgeler değiştirilen bir öğenin varsayılan boyutunda görünecektir: 300px x 150px. Yükseklik ve genişliği özellik olarak tutarak, bunları varsayılan olarak en yakın makul dokunma boyutuna boyutlandırabiliriz ve sunuldukları gibi geliştirmek için CSS'lerimizi kullanın.
Varsayılan olarak, SVG, kontur kalınlığı da dahil olmak üzere her şeyi viewport ile ölçeklendirir. Genellikle bu iyi çalışır, ancak bazı durumlarda - özellikle metnin dış tarafındaki etkiler olarak uygulanan diyagramlar ve darbeler, çizimin büyüklüğü ne olursa olsun, vuruşları aynı kalınlığı aynı kalınlığa kavuşturmak isteyebilirsiniz. Bu, az bilinenlerin alanıdır vektör etkisi sunum niteliği olarak veya CSS'de uygulanabilen özellik:
yol {
Doldur: #FFF; İnme: # 111;
İnme genişliği: 2;
Vektör Etkisi: Ölçekleme-İnme;
}
Şuna baksana Bu tekniğin tam bir örneği .
Birçok geliştirici, SVG'nin yalnızca vektörleri kullanabileceğini varsayalım, ancak JPEGS ve PNGS bir SVG çizimine de uygulanabilir. Ve şu ana kadar kurallarımı takip ettiğiniz sürece, bu görüntüler bir bitmap eklediğinizde yanıt verilecek.
& lt; image width = "1024" yükseklik = "768" xLink: href = "lake-louise.jpg" x = "1300" y = "150" rol = "image" title = "CrowsNest Pass" & GT; & lt; / image & gt;
İşlerin 'Squish' yapılması, duyarlı tasarımın sadece bir parçasıdır. RWD'nin ne olduğu, daha büyük adaptif tasarım anlamında, tüm viewport boyutlarında uygun içerik sunuyor.
Bu çeşitli şekillerde elde edilebilir. Responlivelogos.co.uk SVG sprite kullanan bir dizi örnek sunar, ancak 'markalaşma modülleri' olarak adlandırdığım şeyi oluşturmak için medya sorgularını SVG'ye entegre etmeyi tercih ediyorum. Bu yaklaşım, bileşenlerin görünürlüğünü eklemem, kaldırmamı ve değiştirmemi sağlar. Uyarlamalı marka modülleri hakkında devamını oku Makalemde .
Bu aynı teknik diyagramlar, resimler, haritalar ve daha fazlası için kullanılabilir. En basit modüllerde, CSS'nin kendisi SVG'nin içine yazılabilir, önceki kuralda belirtildiği gibi her yerde kullanılabilir.
Birçok insan, CSS medya sorgularının SVG'nin kendisinde yazılabileceğini bilmiyor:
& lt; svg xmlns = "http://www.w3.org/2000/svg" viewbox = "14 82 272 139" & gt;
& lt; defs & gt;
& lt; stil & gt;
svg g {geçiş: 1s; }
@Media Hepsi ve (maksimum genişlik: 90rem) {
#drink, #coke {opakal: 0; }
}
& lt; / stil & gt;
& lt; / defs & gt;
ve lt; g id = "Coca-cola" & gt;
& lt; path d = "m109.6 ... & gt;
Medya sorgusunun yalnızca 'içindeki öğeyi' görebileceğini not etmek önemlidir: yani, herhangi bir ölçüm, sayfa değil, öğenin kendisi ile ilgilidir. Bu yaklaşımın bir olası olası, SVG'nin tuval alanının, içindeki elemanlara göre her zaman aynı kalmasıdır.
Bu, nispeten büyük bir tuval alanının içinde çerçevelenmiş, küçük vitrin boyutlarında çok küçük unsurlara neden olabilir. Buna dahil olmak üzere birkaç çözüm var. Görünüm kutusunu yeniden boyutlandırma ve telafi etmek için elemanları ölçeklendirmek .
SVG'nin sonsuz ölçeklenebilirliği en büyük varlığıdır, ancak hâlâ tarayıcılar ve vektör grafik editörleri tarafından biraz rahatsız edici bir özelliktir. Bu kılavuzları üretim iş akışınıza entegre ederek ve bunları ekibinizde başkalarına ileterek, web için sorunsuz bir şekilde yanıt veren SVG oluşturabilir, her gün geliştirmede kullandığınız varlıkların bir bölümünü oluşturabilirsiniz.
Bu makale başlangıçta ortaya çıktı net dergisi Sayı 283; buradan satın al K!
İlgili Makaleler:
(Resim Kredi: Pixabay'den Jan Vašek) Neden bulut depolama kullanacağını bilmeniz gerekiyor? Peki bulut depolama a..
Sayfa 1/2: Bir at nasıl çizilir: Adım adım Bir at nasıl çizilir: Ad..
Sayfa 1/4: Sihirli değnek aracı Sihirli değnek aracı Hızlı seçim ve benzeri kenar araçları ..
Senin elemanlarını kullanma kalem underdrawing izleyicinin dikkatini bir parça içinde yakalamak için harika b..
Bir etkinlik için illüstrasyonlar oluşturmak, çizimlerinizi anlatımına besleyen, illüstrasyon tarzınızı uyarlayan ve m�..
Web geliştiricileri ve içerik yaratıcıları olarak, genellikle içine sarılmış metin yazma metni harcıyoruz. Html..
Amazon'un yeni oyun motoru, Kereste , oyunun ve varlık yaratma konusundaki ilgisini çeken herkes için ücretsiz..
FlexBox veya Esnek Kutu Düzeni, web tasarımcıları ve geliştiricilere, elemanları bir kapta yerleştirmek, hizalamak ve dağ..