SVG'lerde Negatif Koordinatlar

Yayınlanan: 2023-01-17

Bir SVG görüntüsü oluşturuyorsanız, negatif koordinatları kullanıp kullanamayacağınızı merak ediyor olabilirsiniz. Kısa cevap evet, bir SVG dosyasına negatif koordinatlar koyabilirsiniz. Ancak, negatif koordinatları kullanırken akılda tutulması gereken birkaç şey vardır. İlk olarak, negatif koordinatlar, bazı tarayıcılarda görüntüyü görüntülerken sorunlara neden olabilir. Ek olarak, öğe gibi belirli SVG öğeleri, negatif koordinatlara sahiplerse düzgün görüntülenemezler. Bu potansiyel sorunlara rağmen, negatif koordinatların kullanılması bazı durumlarda yardımcı olabilir. Örneğin, arka plan olarak kullanılacak bir görüntü oluşturuyorsanız, görüntüyü doğru şekilde konumlandırmak için negatif koordinatlar kullanmak isteyebilirsiniz. Negatif koordinatlar kullanırken, doğru görüntülendiğinden emin olmak için resmi farklı tarayıcılarda test etmek önemlidir. Biraz dikkatle, negatif koordinatları kullanan SVG görüntülerini sorunsuz bir şekilde oluşturabilirsiniz.

Svg Koordinatları Nasıl Çalışır?

Svg Koordinatları Nasıl Çalışır?
Fotoğraf: codepen.io

SVG'deki tüm öğeler, tuvaldekilerle (ve diğer birçok bilgisayar çizim rutiniyle) aynı koordinat veya ızgara sistemiyle temsil edilir. Belgenin sol üst köşesi nokta (0,0) olarak kabul edilir, yani bir şeyin başlangıcıdır.

(Bölüm 1) – SVG koordinat sistemlerine ve dönüşümüne giriş. Görünümler, görünüm Kutusu ve korumaAspectRatio, özelliklerden yalnızca birkaçıdır. Bu, SVG'deki koordinat sistemleri ve dönüşümler üzerine üç bölümlük bir serinin ilkidir. Makaledeki kavramları ve açıklamaları görselleştirmek için interaktif bir demo yaptım. Görüntü alanı boyutu, öğenin dış ambalajında ​​bulunan genişlik ve yükseklik nitelikleri kullanılarak ayarlanır. sva'da değer, birimin tanımlayıcısı veya değerin kendisinin tanımlayıcısı kullanılarak ayarlanabilir. Değer, kullanıcı birimlerinde belirtilen bir birimi, içinde belirtilen aynı sayıda birimle karşılaştırmak için kullanılabilir.

ViewBox koordinat sistemi, tuval üzerine grafik çizmek için kullanılır. Bu koordinat sistemi, görüntü alanından daha küçük veya daha büyük olabilir. view featureBox, kendi kullanıcı koordinat sisteminizi tanımlamak için kullanılabilir. Dönüşümler (örneğin, geçerli bir koordinat sistemi) kullanılarak yeni bir kullanıcı alanı da oluşturulabilir. Viewbox=”0 0 400 300″ tıklandığında daha küçük boyutlu bir tuval oluşturulur. Görünüm kutusunu öğrenmenin en iyi yolu, onu Google haritalarının yaptığı gibi görselleştirmektir. Bu durumda, 200 kullanıcı birimi 800 görüntü noktası birimine eşlenirken, kullanıcı koordinat sistemi görüntü kapısı koordinat sistemine eşlenir.

Sonuç olarak, yukarıdaki resimde gösterilene benzer bir yakınlaştırma efekti oluşturulur. viewBox=”100 100 200 150″ kullanıldığında kırpma olarak da kullanılmaktadır. Grafik, tüm görüntü alanı alanını renkle doldurmak için kırpılır ve ölçeklenir. viewBox özniteliği, kullanıcı alanındaki bir dikdörtgeni, kullanıcı alanındaki belirli bir bölgenin (genellikle görünüm alanı olarak anılır) sınırlarına otomatik olarak eşler. Bir grafiğin kırpılmış yönü, basitçe görüntü alanına sığacak şekilde ölçeklenen çerçevelerin sayısıdır. Spesifikasyon, görüntüyü 100 birimlik bir grafiğe dönüştüren bir öteleme dönüştürmesinin yanı sıra kırpma ve ölçek dönüştürmeleri sağlar. Bu sınıf, görünümün genişlik ve yüksekliğinden daha büyük bir genişliğe ve yüksekliğe sahip bir görüntü kutusu içerir.

Aşağıdaki bölümde farklı bir en boy oranı açıklanacaktır. Kullanıcı koordinat sisteminde her 1 birim dikey olarak görüntü alanı genişliğini ve görüntü kutusu genişliğini temsil eder. Her kullanıcının y birimi, görünüm alanında 0,66'ya eşlenir. ViewBox = onu kullanmanın sonucu. Daha önce belirtildiği gibi, örneğimizde “0” sıfırı gösterir. Bu, uygulama süresince kullanacağımız davranıştır. Davranış üzerindeki kontrol nedir?

ProtectAspectRatio özniteliği nedeniyle, bir grafiğin en boy oranını korurken görünüm kutusunun ölçeklemesini artırabilirsiniz. Herhangi bir öğe üzerinde kullanılabilir (görüntü pencereleri hakkında daha fazla bilgi için aşağıdaki bölümlere bakın). Papağan kutusunun boyutları, görünüm kutusunda 0 0 200 300 değeri ile temsil edilir. Tarayıcı, grafiği tüm görünümü dolduracak şekilde genişletebilseydi, öyle görünürdü. ViewBox'ın tamamının görünüm alanından görünmemesi gerektiğini belirtirseniz MeetOrSlice yöntemi kullanılır. Bu değer, bir görüntü kapağının içerdiği boyut değerine ve bir arka plan görüntüsünün içerdiği boyut değerine benzer. ViewBox'ın en boy oranı, ekranın en boy oranıyla eşleşmiyorsa azaltılacaktır.

Parametreyi hizalamak için dokuz değerden biri veya hiçbiri değeri kullanılır. Görüntünün en boy oranı, sıfırdan başka bir değer olmaksızın tek tip olarak ölçeklendirilerek korunur. Sonuç olarak, her iki durumda da grafik, orta eksenleri görünümün orta eksenleriyle buluşacak şekilde görünümün orta eksenlerini hizalayacak şekilde ölçeklenir. Hizalama için varsayılan değer xMidYMid'dir; bu, grafiğin orta eksenlerini hizalayacak şekilde ölçeklendiği anlamına gelir. Min-x, max-x ve mid-y değerleri, bir öğenin sınırlayıcı kutusunun görünüm alanıyla hizalamasını gösterir. Gerekirse, verilen öğenin öğesinin grafik içeriğini orantılı olarak ölçeklendirin (en boy oranını düşürmeden). Başka bir deyişle, bir viewBox, en-boy oranı göz ardı edilecek şekilde görünüm alanına sığacak şekilde uzatılır veya küçültülür.

ProtectRatioAspect özniteliği, viewBox'ın eşit şekilde ölçeklenip ölçeklenmeyeceğini ve görünüm alanı içinde nasıl hizalanacağını belirtmenize olanak tanır. Daha önceki viewBox=0 0 200 300'deki bazı hizalamaların neden farklı hizalama değerlerine sahip olduğunu görmek kolaydır. Sonuç olarak, burada kullandığımız 200×300 viewBox değerleri de büyük ölçüde farklılık gösterecektir. Etkileşimli demomda, bu özniteliklerin değerlerinin nasıl değiştirileceğini gösterdim ve sonuçlarını gördüm. Aşağıdaki resim, viewBox ='ın view box üzerindeki etkisini göstermektedir. Hizalama eksenlerini 100 0 200 300 koordinatlarıyla bulabilirsiniz.

Svg'de Görüntü Alanını Boyutlandırma

Görünüm alanında iki sayı vardır: min-x, en soldaki konumu belirtir; ve en üst konumu gösteren min-y. Son iki sayı, genişlik ve yükseklik, görünümün genişliğini ve yüksekliğini tanımladığından, kullanıcı alanı tanımlanabilir.

Svg'de Viewbox Nedir?

SVG'deki bir viewBox, grafik öğelerinin çizildiği koordinat sistemini tanımlar. SVG görüntüsünün "tuvaline" açılan bir pencere olarak düşünülebilir. Duyarlı bir SVG görüntüsüne sahip olmak istiyorsanız viewBox özelliği çok kullanışlıdır.

SVG'lerimiz aşağıda gösterildiği gibi istedikleri herhangi bir kabı doldurabilir: Bu tekniği kullanarak SVG'lerimizle istediğimiz kabı doldurabiliriz. Doğru görüntülendiğinde, bu görüntüdeki viewBox, kabın boyutlarına göre ölçeklenir. ViewBox'ta bir görüntüyü görüntülediğimizde, animasyonlarda çok kullanışlı olan bir yönünü de gizleyebiliriz. ViewBox, resimlerimizi çok etkili bir şekilde kırpmamıza olanak tanır. Bu videoda, gökyüzünde hareket eden bir bulutu canlandırmak için onu nasıl kullanacağınızı göstereceğiz. Bunu canlandırmanın en basit yolu, viewBox'ın min-x değerini değiştirmektir. PreserveRatioAspect, bunaltıcı olabileceğinden bu makaleden çıkarılmıştır.


Svgs'yi Yuvalayabilir misiniz?

Evet, SVG'leri iç içe yerleştirebilirsiniz. Bu, bir SVG'yi başka bir SVG'nin içine koyabileceğiniz anlamına gelir. Belirli bir grafiği yeniden kullanmak veya daha karmaşık bir grafik oluşturmak istiyorsanız bu yararlı olabilir.

Svg'deki Defs Öğesi

defs> öğesi, daha sonra SVG'deki belgede başvurulacak olan herhangi bir grafik nesne için bir arabellek görevi görür. Ancak, bu nesnelerin doğrudan sunumu yoktur, ancak bir use> öğesiyle bunlara başvurulmalıdır.

Svgs'yi Nasıl Ölçeklendirirsiniz?

SVG'leri ölçeklendirmenin birkaç farklı yolu vardır. Bunun bir yolu, viewBox niteliğini değiştirmektir. viewBox niteliği, SVG içeriği için koordinat sistemini tanımlar. ViewBox niteliğini değiştirerek SVG'nin boyutunu değiştirebilirsiniz. SVG'leri ölçeklendirmenin başka bir yolu da transform özniteliğini kullanmaktır. transform özniteliği, bir öğeye dönüştürme uygulamanıza izin verir. Bir SVG'yi ölçeklendirmek için transform özelliğini kullanabilirsiniz.

İlk adım, Vector Graphics'in (SVG) nasıl ölçeklendirileceğini anlamaktır. Amelia Bellamy-Royds, SVG'yi ölçeklendirmeye ilişkin inanılmaz bir içgörü paylaşıyor. Bu, raster grafikleri ölçeklendirmek kadar basit değildir, ancak çok sayıda merak uyandıran olasılık sağlar. Yeni SVG kullanıcılarının, programın istenen şekilde nasıl davranması gerektiğini anlaması zor olabilir. Bir perspektif görüntünün en boy oranı, genişliğinin yüksekliğine oranı olarak tanımlanır. Tarayıcıyı, bir raster görüntüyü kendi gerçek yüksekliğinden ve genişliğinden farklı bir boyutta çizmeye zorlamak mümkündür, ancak bu, bozulmaya neden olur. satır içi SVG'ler, tuval boyutundan bağımsız olarak kodun boyutuna göre çizilir.

ViewBox, Ölçeklenebilir Vektör Grafikleri oluşturmak için kullanılacak son bileşendir. ViewBox, öğedeki bir öğe özniteliğidir. Değer, boşluk veya virgülle ayrılmış dört sayıdan oluşur: x, y, genişlik ve yükseklik. Görünüm portunun sol üst köşesi için koordinat sistemi, x ve y operatörleri tarafından belirlenir. Gerekli yüksekliği doldurmak için, bir dizi.psc ve koordinatlar ölçeklendirilmelidir. Büyük bir görüntü oluşturduğunuzda, en boy oranına uymayan boyutlar esnetilmez veya bozulmaz. Diğer görüntü türlerini canlandırmak için yeni nesneye sığdırma CSS özelliğini kullanabilirsiniz.

Grafiğinizin tam olarak bir raster görüntü olarak ölçeklenmesine izin vermenin yanı sıra,preservAspectRatio=none yapabilirsiniz. raster görüntüler, belirli bir yükseklik veya genişliğe ulaşmak için ayarlanabilen bir ölçek dizisine sahiptir. Bunu yapmak için sva kullanmanın en iyi yolu nedir? Çok sayıda zorluk var. Bu durumda, bir andlt;img> içindeki bir görüntüyle otomatik boyutlandırma kullanmak başlamak için iyi bir yerdir, ancak çalışması için onu biraz kırmanız gerekir. Bir öğenin en boy oranını ayarlamak için yükseklik ve kenar boşluğu gibi çeşitli CSS özelliklerini kullanın. Bir viewBox, diğer tarayıcılarda her zaman etkin olacaktır; ancak, bu davranış özelliklerde belirtilmemiştir.

En yeni Firefox/Blink tarayıcısını kullanıyorsanız, görüntünüz viewBox içinde harika görünecektir. Hem yükseklik hem de genişlik belirtmezseniz, bu tarayıcılar her zamanki gibi varsayılan boyutlarını görüntüler. Satır içi SVG'nin yanı sıra <object> gibi değiştirilen öğeler ve diğer öğeler için, bir kapsayıcı öğe kullanmak en basit yöntemdir. Bir satır içi grafikte, resmi yükseklik sıfır olacaktır (bu durumda en azından sıfır). conserveRatioAspect değeri, grafiği sıfıra indirecektir. Başka bir deyişle, grafiğinizin sağladığınız tüm genişliği kapsayacak şekilde esnemesini ve ardından uygun en boy oranıyla dolgu alanına yayılmasını istiyorsunuz. ViewBox veprotectRatioAspect özniteliklerinin her ikisi de son derece uyarlanabilir. Kendi ölçeklendirme özniteliklerine sahip olabilen yuvalanmış öğe, grafik ölçeğinizin farklı bölümlerini aynı öğeye atamak için kullanılabilir. Bu yöntemi kullanırsanız, bir başlık grafiği sıkışık veya yerinde olmayan bir geniş ekranı kaplayacak şekilde genişletilebilir.

Koordinatlara Svg

Bir SVG dosyası, World Wide Web Consortium (W3C) tarafından oluşturulan iki boyutlu bir vektör grafik formatı kullanan bir grafik dosyasıdır. SVG dosyaları , görüntüyü tanımlayan bir dizi XML etiketi içeren metin dosyalarıdır. XML etiketleri, metin editörleri ve web tarayıcıları tarafından okunabilir. SVG dosyalarını kullanmanın avantajı, kalite kaybı olmadan herhangi bir boyuta ölçeklenebilmeleridir.

DOM ve vektör etkileşimlerini karıştırana kadar SVG'leri çeşitli işlevler için kullanabilirsiniz. Diğer öğelerin DOM'da seri hale getirilmesiyle aynı şekilde, HTML ekleme SVG'leri manipüle edilebilir. Bir elemanın DOM elemanları bir elemanın üzerine yerleştirilmişse, DOM elemanlarının üst üste bindirilmesi gerekebilir. Bir sayfanın mutlak konumunu, window.scrollX'i sola ve pencereye sürükleyerek belirleyebilirsiniz. Sayfanın en üstüne gitmek için Y'yi en üste kaydırın. Olay işleyici nesnesi, DOM.clientX ve.clientY piksel koordinatlarını sağlar, ancak bunların SVG'lere çevrilmesi gerekir. Vektör tabanlı ağların, koordinatları çevirmek için kendi matris faktoring mekanizmalarını sağladığını belirtmekte fayda var.

getScreenCTM() yöntemi, onu SVG'nin yanı sıra herhangi bir öğeye uygulamak için kullanılabilir. Süreç, ortaya çıkan koordinatların çevrilmesini, ölçeklenmesini, döndürülmesini ve/veya eğrilmesini gerektirir. Sonuç olarak, sonraki katmanın koordinatları, standart SVG birimlerinden dört kat daha büyük olduğu için önceki katmanın koordinatlarının dörtte biri kadardır.

Svg'de Bir Yolu Nasıl Ortalarım?

Yol merkez olduğunda, svg viewBox niteliği değiştirilebilir. Bu durumda, svg yollarından herhangi birini özelliklerine dönüştürmeniz gerekmez. Y-offset, Paul'ün sizin örneğinizdeki viewBox=0 15.674 144 144 cevabındakiyle aynıdır.

Svg Görünümü Nedir?

Görüntü alanı, SVG görüntüsünün görüntüleyicide göründüğü yerdir. Arzu ettiğiniz kadar geniş veya yüksek bir SVG görüntüsü oluşturmak teorik olarak mümkündür, ancak aynı anda görüntünün yalnızca bir kısmı görünebilir. Görüntü alanı, görünür olan ilgi alanıdır. Vitrin boyutu, elemanın genişlik ve yükseklik nitelikleri kullanılarak belirlenebilir.