diff --git a/content/odin/intermediate_html_css/intermediate_html_concepts/svgs.md b/content/odin/intermediate_html_css/intermediate_html_concepts/svgs.md index c5ecd578..8f1102ff 100644 --- a/content/odin/intermediate_html_css/intermediate_html_concepts/svgs.md +++ b/content/odin/intermediate_html_css/intermediate_html_concepts/svgs.md @@ -1,105 +1,106 @@ -### Introduction +--- +title: "SVG'ler" +--- -SVGs are a very common image format on the web. They can be a little confusing at first, but once you know how to use them, they are an incredibly powerful tool for creating high-quality, dynamic images for your website. +### Giriş -In this lesson, we will learn exactly what SVGs are, what they're used for, and how you can embed them in your websites. +SVG'ler web üzerinde yaygın bir görüntü formatıdır. İlk başta biraz kafa karıştırıcı olabilir, ancak nasıl kullanılacağını bildikten sonra, web siteniz için yüksek kaliteli, dinamik görüntüler oluşturmak için son derece güçlü bir araçtır. -### Learning outcomes +Bu derste SVG'lerin tam olarak ne olduğunu, ne için kullanıldığını ve web sitelerinize nasıl gömebileceğinizi öğreneceğiz. -- What SVGs, Vector Graphics, and XML are -- How to create simple SVGs and add them to your websites -- When to use SVGs, and when a different image format would be more appropriate +### Derse genel bakış -### What are SVGs? +Bu bölüm, bu derste öğreneceğiniz konuların genel bir özetini içerir. -SVGs are a _scalable_ image format, which means they will easily scale to any size and retain their quality without increasing their filesize. They're also very useful if you need to create or modify your images programmatically, because you can change their properties through CSS and JavaScript. +- SVG'ler, Vektör Grafikleri ve XML nedir? +- Basit SVG'ler nasıl oluşturulur ve web sitenize nasıl eklenir? +- SVG'ler ne zaman kullanılmalı ve ne zaman farklı bir görüntü formatı kullanmak daha uygun olacaktır? -SVGs are often used for: +### SVG'ler nedir? -1. Icons -2. Graphs/Charts -3. Large, simple images -4. Patterned backgrounds -5. Applying effects to other elements via SVG filters +SVG'ler, boyutları kolayca *ölçeklenebilen* bir görüntü formatıdır, bu da onların kalitesini artırmadan herhangi bir boyuta kolayca ölçeklenebileceği anlamına gelir. Ayrıca, CSS ve JavaScript aracılığıyla özelliklerini değiştirebileceğiniz için programatik olarak görüntüler oluşturmanız veya değiştirmeniz gerekiyorsa çok kullanışlıdır. -### Okay, but what are they? +SVG'ler genellikle şu amaçlar için kullanılır: -"SVG" stands for "Scalable Vector Graphics". Vector graphics are simply images defined by math, as opposed to traditional "raster graphics", where your image is defined by a grid of pixels. With raster graphics, the detail is limited to the size of that pixel grid. If you want to increase the size of the image (_scale_ it), you have to increase the size of that grid. How do you decide what all those new pixels should look like? There's no simple solution. Additionally, the larger the grid, the bigger your filesize grows. +1. İkonlar +1. Grafikler/Çizelgeler +1. Büyük, basit görüntüler +1. Desenli arka planlar +1. Diğer öğelere SVG filtreleri aracılığıyla efektler uygulama -With vector graphics on the other hand, there's no grid. Instead, you have formulas for different shapes and lines. Since these are just formulas, it doesn't matter how large or small you want them to appear--they can scale to any size you want, and it will have no effect on the quality or the size of the file. +### Tamam, ama bunlar nedir? -SVGs have another interesting aspect to them: they're defined using XML. XML (aka, "Extensible Markup Language") is an HTML-like syntax which is used for lots of things, from [APIs](https://en.wikipedia.org/wiki/API), to [RSS](https://en.wikipedia.org/wiki/RSS), to [spreadsheet and word editor software](https://en.wikipedia.org/wiki/Office_Open_XML). -The fact that SVG source-code is XML has a few key benefits. +"SVG", "Scalable Vector Graphics(Ölçeklenebilen Vektör Grafikleri)" kelimelerinin kısaltmasıdır. Vektör grafikleri, görüntünüzün bir piksel ızgarasıyla tanımlandığı geleneksel “raster grafiklerinin” aksine, basitçe matematikle tanımlanan görüntülerdir. Raster grafiklerde ayrıntılar bu piksel ızgarasının boyutuyla sınırlıdır. Görüntünün boyutunu artırmak (*ölçeklendirmek*) istiyorsanız, bu ızgaranın boyutunu artırmanız gerekir. Tüm bu yeni piksellerin neye benzemesi gerektiğine nasıl karar verirsiniz? Bunun basit bir çözümü yok. Ayrıca, ızgara ne kadar büyük olursa, dosya boyutunuz da o kadar büyür. -First, it means that it is _human-readable_. If you were to open up a JPEG in a text editor, it would just look like gobbledygook. If you were to open up an SVG, however, it would look something like this: +Öte yandan, vektör grafiklerinde bir ızgara bulunmaz. Bunun yerine, farklı şekil ve çizgiler için matematiksel formüller vardır. Bu formüller sadece matematiksel ifadeler olduğu için, bunları istediğiniz büyüklükte veya küçüklükte kullanabilirsiniz. Bu durum, kalite veya dosya boyutu üzerinde herhangi bir etki yapmaz. -```xml +SVGs'ın başka ilginç bir yönü daha vardır: XML kullanılarak tanımlanırlar. XML(Extensible Markup Language olarak da bilinir), bir HTML benzeri sözdizimidir ve [API's](https://en.wikipedia.org/wiki/API)'den [RSS](https://en.wikipedia.org/wiki/RSS)'e, [spreadsheet and word editor software](https://en.wikipedia.org/wiki/Office_Open_XML) kadar birçok alanda kullanılır. + +SVG kaynak kodunun XML olması birkaç önemli avantaja sahiptir. + +İlk olarak, bu, *insan tarafından okunabilir(human-readable)* olduğu anlamına gelir. Eğer bir JPEG dosyasını bir metin düzenleyicide açarsanız, anlamsız karakterlerle dolu bir şey göreceksiniz. Ancak bir SVG dosyasını açarsanız, şöyle bir şey göreceksiniz: + +```html ``` -It might still be confusing, but hey--those are words! Tags! Attributes! Compared to [binary file formats](https://en.wikipedia.org/wiki/Binary_file) like JPEG, we're definitely in familiar territory. +Hâlâ kafa karıştırıcı olabilir, ama işte orada kelimeler var! Etiketler! Nitelikler! JPEG gibi [binary file formats](https://en.wikipedia.org/wiki/Binary_file) ile karşılaştırıldığında, kesinlikle tanıdık bir alandayız. -The second benefit of XML is that it's designed to be interoperable with HTML, which means you can put the above code directly in an HTML file, without any changes, and it should display the image. And because these can become elements in the DOM just like HTML elements, you can target them with CSS and create them using the [Element WebAPI](https://developer.mozilla.org/en-US/docs/Web/API/Element) you've already been using! +İkinci avantajı ise XML'in HTML ile etkileşimli olacak şekilde tasarlanmış olmasıdır. Bu, yukarıdaki kodu herhangi bir değişiklik yapmadan doğrudan bir HTML dosyasına yerleştirebileceğiniz ve görüntünün görüntülenmesi gerektiği anlamına gelir. Ve çünkü bunlar HTML öğeleri gibi DOM'da öğe haline gelebilir, CSS ile hedef alabilir ve zaten kullandığınız [Element WebAPI](https://developer.mozilla.org/en-US/docs/Web/API/Element) ile oluşturabilirsiniz! -### Drawbacks +### Dezavantajları -So, clearly SVGs are awesome! Time to go convert all of our images to SVG, right? Well, not quite. SVGs are _great_ for relatively simple images, but because every single detail of the image needs to be written out as XML, they are extremely inefficient at storing complex images. If your image is supposed to be photo-realistic, or it has fine detail or texture ("[grunge textures](https://unsplash.com/s/photos/grunge-texture)" are a great example), then SVGs are the wrong tool for the job. +Öyleyse, açıkça SVG'ler harika! Şimdi tüm görüntülerimizi SVG'ye dönüştürmeye mi gidiyoruz? Peki, tam olarak değil. SVG'ler, nispeten basit görüntüler için *harika* olsa da, görüntünün her ayrıntısının XML olarak yazılması gerektiği için karmaşık görüntülerin depolanması konusunda son derece verimsizdir. Eğer görüntünüz fotoğraf gerçekçiliğinde olmalı veya ince detaya veya dokuya sahip olmalıysa ("[grunge textures](https://unsplash.com/s/photos/grunge-texture)" harika bir örnek), o zaman SVG'ler iş için yanlış araçtır. -### Anatomy of an SVG +### SVG'nin anatomisi -Typically, you will not want to create SVGs from scratch in your code. Most often, you will download the file or copy the code either from a website or from an image editor that can create them (Adobe Illustrator and Figma are two popular apps that can create SVGs). However, it's pretty common to download an SVG and want to tweak or adjust it just a little bit, so knowing what all the bits and pieces are, and how they work is very useful. +Genellikle, SVG'leri kodunuzda sıfırdan oluşturmak istemeyeceksiniz. Çoğunlukla, dosyayı bir web sitesinden veya SVG oluşturabilen bir görüntü editöründen kopyalarsınız (Adobe Illustrator ve Figma, SVG oluşturabilen bunun için iki popüler uygulamadır). Ancak, genellikle bir SVG'yi indirirken biraz düzenleme veya ayarlama yapmak isteyebilirsiniz, bu nedenle tüm parçaların ne olduğunu ve nasıl çalıştığını bilmek oldukça faydalıdır.
- See the Pen - Simple SVG Example by TheOdinProject (@TheOdinProjectExamples) - on CodePen. +CodePen'deki TheOdinProject(@TheOdinProjectExamples) tarafından yapılmış olan Basit SVG Örneğinebakınız +
-1. `xmlns` - stands for "XML NameSpace". This specifies what _dialect_ of XML you're using. In our case, that dialect is the SVG language spec. Without it, some browsers will not render your image or will render it incorrectly. If you're interested in a full breakdown of what this attribute is and why it's necessary, check out [this excellent MDN article](https://developer.mozilla.org/en-US/docs/Web/SVG/Namespaces_Crash_Course). -2. `viewBox` - defines the bounds of your SVG. When you have to define the positions of different points of the elements in your SVG, this is what that's referencing. It also defines the aspect ratio _and_ the origin of your SVG. So it's doing quite a lot! Be sure to play around with different values in the example above to get a feel for how it affects the shapes. -3. `class`, `id` - these attributes function just like they do in HTML. Using these in SVGs allows you to easily target an element via CSS or JavaScript, or to reuse an element via the [`use` element](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use). -4. Elements such as `