{"id":32134,"date":"2025-10-18T04:40:54","date_gmt":"2025-10-18T01:40:54","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32134"},"modified":"2025-10-18T04:40:54","modified_gmt":"2025-10-18T01:40:54","slug":"css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/","title":{"rendered":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc"},"content":{"rendered":"<p><body><\/p>\n<h2>CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc<\/h2>\n<p>Web geli\u015ftirme d\u00fcnyas\u0131nda, HTML ve CSS, i\u00e7eri\u011fi yap\u0131land\u0131rmak ve stil vermek i\u00e7in bir araya gelen iki temel dildir. Genellikle HTML i\u00e7eri\u011fi sunarken, CSS bu i\u00e7eri\u011fin nas\u0131l g\u00f6r\u00fcnece\u011fini tan\u0131mlar. Ancak bazen, HTML \u00f6\u011felerinin sahip oldu\u011fu dinamik bilgilere (\u00f6zellikler arac\u0131l\u0131\u011f\u0131yla) CSS i\u00e7inde do\u011frudan eri\u015fmek ve bu bilgilere g\u00f6re stil uygulamak isteriz. \u0130\u015fte tam bu noktada CSS <code>attr()<\/code> fonksiyonu devreye girer. Bu makale, <code>attr()<\/code> fonksiyonunun ne oldu\u011funu, nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131, evrimini, mevcut yeteneklerini ve pratik uygulamalar\u0131n\u0131 derinlemesine inceleyecektir.<\/p>\n<h3>Giri\u015f: HTML \u00d6zellikleri ve CSS Aras\u0131ndaki K\u00f6pr\u00fc<\/h3>\n<p>HTML \u00f6\u011feleri, davran\u0131\u015flar\u0131n\u0131 veya g\u00f6r\u00fcn\u00fcmlerini de\u011fi\u015ftiren \u00f6zelliklere (attributes) sahiptir. \u00d6rne\u011fin, bir <code><a><\/code> etiketi <code>href<\/code> \u00f6zelli\u011fine, bir <code><img><\/code> etiketi <code>src<\/code> ve <code>alt<\/code> \u00f6zelliklerine, veya herhangi bir \u00f6\u011fe \u00f6zel <code>data-*<\/code> \u00f6zelliklerine sahip olabilir. Geleneksel olarak, bu \u00f6zellik de\u011ferlerini CSS i\u00e7inde kullanmak olduk\u00e7a s\u0131n\u0131rl\u0131yd\u0131. Genellikle bu t\u00fcr dinamik verileri CSS&#8217;e ta\u015f\u0131mak i\u00e7in JavaScript kullanmak gerekirdi. Ancak <code>attr()<\/code> fonksiyonu, bu k\u0131s\u0131tlamay\u0131 a\u015farak HTML \u00f6zellik de\u011ferlerini do\u011frudan CSS&#8217;e entegre etme yetene\u011fi sunar.<\/p>\n<p>Ba\u015flang\u0131\u00e7ta, <code>attr()<\/code> fonksiyonu yaln\u0131zca <code>content<\/code> \u00f6zelli\u011fi ile birlikte kullan\u0131lmak \u00fczere tasarlanm\u0131\u015ft\u0131, bu da onun yeteneklerini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde k\u0131s\u0131tl\u0131yordu. Ancak &#8220;CSS Values and Units Module Level 4&#8221; spesifikasyonu ile birlikte, <code>attr()<\/code> fonksiyonu \u00f6nemli \u00f6l\u00e7\u00fcde geni\u015fletildi ve art\u0131k neredeyse t\u00fcm CSS \u00f6zellikleriyle kullan\u0131labilir hale geldi. Bu geni\u015fleme, web geli\u015ftiricileri i\u00e7in yeni ve g\u00fc\u00e7l\u00fc dinamik stil uygulama olanaklar\u0131n\u0131n kap\u0131lar\u0131n\u0131 aralad\u0131.<\/p>\n<h3>Temel Kullan\u0131m ve S\u00f6z Dizimi<\/h3>\n<p><code>attr()<\/code> fonksiyonunun temel amac\u0131, bir HTML \u00f6\u011fesinin belirli bir \u00f6zelli\u011finin de\u011ferini almakt\u0131r. En basit haliyle s\u00f6z dizimi \u015fu \u015fekildedir:<\/p>\n<pre><code class=\"language-css\">attr(attribute-name)<\/code><\/pre>\n<p>Burada <code>attribute-name<\/code>, de\u011feri al\u0131nacak HTML \u00f6zelli\u011finin ad\u0131d\u0131r (\u00f6rne\u011fin, <code>href<\/code>, <code>title<\/code>, <code>data-tooltip<\/code>).<\/p>\n<h4><code>content<\/code> \u00d6zelli\u011fi ile Klasik Kullan\u0131m<\/h4>\n<p><code>attr()<\/code> fonksiyonunun en yayg\u0131n ve eski kullan\u0131m alan\u0131, <code>::before<\/code> veya <code>::after<\/code> s\u00f6zde \u00f6\u011felerinin <code>content<\/code> \u00f6zelli\u011fi ile birlikte \u00e7al\u0131\u015fmas\u0131d\u0131r. Bu, genellikle bir \u00f6\u011fenin metin i\u00e7eri\u011fini veya di\u011fer \u00f6zelliklerini g\u00f6rsel olarak g\u00f6r\u00fcnt\u00fclemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>\u00d6rnek:<\/strong> Bir ba\u011flant\u0131n\u0131n <code>href<\/code> de\u011ferini g\u00f6stermek:<\/p>\n<pre><code class=\"language-html\"><a href=\"https:\/\/example.com\" data-info=\"D\u0131\u015f Ba\u011flant\u0131\">Ziyaret Et<\/a><\/code><\/pre>\n<pre><code class=\"language-css\">a::after {\n  content: \" (\" attr(href) \")\";\n  font-size: 0.8em;\n  color: gray;\n}<\/code><\/pre>\n<p>Bu \u00f6rnekte, her ba\u011flant\u0131n\u0131n arkas\u0131na, <code>href<\/code> \u00f6zelli\u011finin de\u011feri parantez i\u00e7inde eklenecektir. <code>data-info<\/code> gibi \u00f6zel \u00f6zellikler de ayn\u0131 \u015fekilde kullan\u0131labilir:<\/p>\n<pre><code class=\"language-css\">a[data-info]::before {\n  content: attr(data-info) \": \";\n  font-weight: bold;\n}<\/code><\/pre>\n<p>Bu kullan\u0131m, <code>attr()<\/code>&#8216;nin temel i\u015flevselli\u011fini g\u00f6sterir: HTML&#8217;deki metinsel bir de\u011feri al\u0131p CSS&#8217;e dahil etmek. Ancak, <code>attr()<\/code>&#8216;nin yetenekleri bununla s\u0131n\u0131rl\u0131 de\u011fildir.<\/p>\n<h3><code>attr()<\/code> Fonksiyonunun Evrimi ve Mevcut Durumu<\/h3>\n<p>Uzun y\u0131llar boyunca <code>attr()<\/code> fonksiyonu, yaln\u0131zca <code>content<\/code> \u00f6zelli\u011fi i\u00e7in \u00e7al\u0131\u015fan bir ara\u00e7 olarak bilindi. Bu durum, geli\u015ftiricilerin HTML \u00f6zelliklerindeki say\u0131sal de\u011ferleri (geni\u015flik, y\u00fckseklik), renk de\u011ferlerini veya di\u011fer birim tabanl\u0131 de\u011ferleri CSS&#8217;te do\u011frudan kullanmas\u0131n\u0131 engelliyordu. E\u011fer bir \u00f6\u011fenin <code>data-width=\"100\"<\/code> gibi bir \u00f6zelli\u011fi varsa, bunu <code>width: attr(data-width);<\/code> \u015feklinde kullanmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda genellikle i\u015fe yaramazd\u0131 \u00e7\u00fcnk\u00fc <code>attr()<\/code> varsay\u0131lan olarak bir &#8220;string&#8221; (metin dizisi) d\u00f6nd\u00fcr\u00fcr ve <code>width<\/code> \u00f6zelli\u011fi bir &#8220;length&#8221; (uzunluk) de\u011feri bekler.<\/p>\n<p>&#8220;CSS Values and Units Module Level 4&#8221; spesifikasyonu, bu k\u0131s\u0131tlamay\u0131 ortadan kald\u0131rarak <code>attr()<\/code> fonksiyonunu \u00f6nemli \u00f6l\u00e7\u00fcde g\u00fc\u00e7lendirdi. Bu spesifikasyon ile <code>attr()<\/code>, art\u0131k herhangi bir CSS \u00f6zelli\u011fi i\u00e7in kullan\u0131labilir hale geldi ve d\u00f6nd\u00fcr\u00fclecek de\u011ferin tipini belirtme yetene\u011fi kazand\u0131. Bu, bir HTML \u00f6zelli\u011findeki de\u011feri bir say\u0131, bir uzunluk, bir renk veya ba\u015fka bir CSS veri tipi olarak yorumlamas\u0131na olanak tan\u0131r.<\/p>\n<p>Bu geni\u015fleme, <code>attr()<\/code>&#8216;yi sadece metin g\u00f6sterme arac\u0131ndan, HTML&#8217;deki dinamik verileri kullanarak stil olu\u015fturma i\u00e7in \u00e7ok daha g\u00fc\u00e7l\u00fc ve esnek bir araca d\u00f6n\u00fc\u015ft\u00fcrd\u00fc. Ancak bu geni\u015fletilmi\u015f kullan\u0131m\u0131n taray\u0131c\u0131 deste\u011fi, eski <code>content<\/code> kullan\u0131m\u0131na k\u0131yasla daha yeni ve de\u011fi\u015fkendir. Makalenin ilerleyen b\u00f6l\u00fcmlerinde taray\u0131c\u0131 deste\u011fi detaylar\u0131na de\u011finece\u011fiz.<\/p>\n<h3><code>attr()<\/code> ile Hangi \u00d6zellikler Kullan\u0131labilir?<\/h3>\n<p>Geni\u015fletilmi\u015f <code>attr()<\/code> fonksiyonu ile art\u0131k neredeyse t\u00fcm CSS \u00f6zelliklerinde HTML \u00f6zellik de\u011ferlerini kullanabiliriz. Ancak, d\u00f6nd\u00fcr\u00fclen de\u011ferin tipi ile CSS \u00f6zelli\u011finin bekledi\u011fi de\u011fer tipinin e\u015fle\u015fmesi veya uyumlu olmas\u0131 kritik \u00f6neme sahiptir.<\/p>\n<h4>Metinsel De\u011ferler (String)<\/h4>\n<p>*   <strong><code>content<\/code><\/strong>: En temel ve yayg\u0131n kullan\u0131m.<\/p>\n<pre><code class=\"language-css\">div::before {\n      content: attr(data-label);\n    }<\/code><\/pre>\n<p>*   <strong><code>font-family<\/code><\/strong>: E\u011fer bir HTML \u00f6zelli\u011fi font ailesi ad\u0131n\u0131 i\u00e7eriyorsa.<\/p>\n<pre><code class=\"language-css\">p {\n      font-family: attr(data-font-family string, sans-serif);\n    }<\/code><\/pre>\n<h4>Say\u0131sal De\u011ferler (Number, Integer, Percentage)<\/h4>\n<p>*   <strong><code>opacity<\/code><\/strong>:<\/p>\n<pre><code class=\"language-html\"><div data-opacity=\"0.5\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">div {\n      opacity: attr(data-opacity number, 1);\n    }<\/code><\/pre>\n<p>*   <strong><code>z-index<\/code><\/strong>:<\/p>\n<pre><code class=\"language-html\"><div data-z=\"10\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">div {\n      z-index: attr(data-z integer, 1);\n    }<\/code><\/pre>\n<p>*   <strong><code>flex-grow<\/code>, <code>flex-shrink<\/code><\/strong>:<\/p>\n<pre><code class=\"language-html\"><div data-grow=\"2\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">div {\n      flex-grow: attr(data-grow number, 1);\n    }<\/code><\/pre>\n<h4>Uzunluk De\u011ferleri (Length)<\/h4>\n<p>*   <strong><code>width<\/code>, <code>height<\/code>, <code>margin<\/code>, <code>padding<\/code>, <code>font-size<\/code>, <code>line-height<\/code><\/strong>: Bu t\u00fcr \u00f6zellikler genellikle birim (px, em, rem, %) gerektirir.<\/p>\n<pre><code class=\"language-html\"><div data-width=\"200px\" data-font-size=\"1.2em\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">div {\n      width: attr(data-width length, 100px);\n      font-size: attr(data-font-size length, 1em);\n    }<\/code><\/pre>\n<h4>Renk De\u011ferleri (Color)<\/h4>\n<p>*   <strong><code>color<\/code>, <code>background-color<\/code>, <code>border-color<\/code><\/strong>: HTML \u00f6zelli\u011finde bir renk kodu (hex, rgb, rgba, hsl, renk ad\u0131) tutuluyorsa.<\/p>\n<pre><code class=\"language-html\"><span data-text-color=\"#FF0000\" data-bg-color=\"blue\">Merhaba<\/span><\/code><\/pre>\n<pre><code class=\"language-css\">span {\n      color: attr(data-text-color color, black);\n      background-color: attr(data-bg-color color, white);\n    }<\/code><\/pre>\n<h4>URL De\u011ferleri (URL)<\/h4>\n<p>*   <strong><code>background-image<\/code>, <code>cursor<\/code><\/strong>:<\/p>\n<pre><code class=\"language-html\"><div data-image-url=\"url('bg.png')\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">div {\n      background-image: attr(data-image-url url, none);\n    }<\/code><\/pre>\n<p>    <em>(Not: <code>url()<\/code> fonksiyonunun kendisi attribute&#8217;ta olmal\u0131, yoksa <code>attr(data-image-url string)<\/code> ile string al\u0131n\u0131p, <code>background-image: url(attr(data-image-url string));<\/code> \u015feklinde kullan\u0131lmal\u0131, ki bu da <code>url()<\/code> i\u00e7ine <code>attr()<\/code> fonksiyonunun string d\u00f6nd\u00fcrmesi nedeniyle taray\u0131c\u0131 deste\u011fi konusunda sorunlar \u00e7\u0131karabilir. En g\u00fcvenlisi <code>data-image-url=\"bg.png\"<\/code> \u015feklinde olup, CSS&#8217;te <code>background-image: url(attr(data-image-url string));<\/code> kullanmakt\u0131r, ancak bu da standarda tam uygun olmayabilir. En iyisi <code>attr(data-image-url url)<\/code> kullan\u0131p, HTML&#8217;de <code>data-image-url=\"bg.png\"<\/code> \u015feklinde URL&#8217;nin kendisini vermektir. <code>url()<\/code> fonksiyonunu attribute&#8217;un i\u00e7ine yazmak daha sa\u011flamd\u0131r.)<\/em><br \/>\n    Do\u011fru kullan\u0131m:<\/p>\n<pre><code class=\"language-html\"><div data-image-url=\"bg.png\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">div {\n      background-image: url(attr(data-image-url string)); \/<em> String olarak al\u0131p url() i\u00e7ine <\/em>\/\n    }<\/code><\/pre>\n<p>    Veya (e\u011fer destekleniyorsa):<\/p>\n<pre><code class=\"language-html\"><div data-image-url=\"url('bg.png')\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">div {\n      background-image: attr(data-image-url url); \/<em> Do\u011frudan URL tipinde almay\u0131 dener <\/em>\/\n    }<\/code><\/pre>\n<p>    \u0130kinci y\u00f6ntem, <code>attr()<\/code> fonksiyonunun bir URL de\u011feri d\u00f6nd\u00fcrmesini bekler, bu da HTML \u00f6zelli\u011finin <code>url(...)<\/code> format\u0131nda olmas\u0131n\u0131 gerektirebilir. \u0130lk y\u00f6ntem daha yayg\u0131n ve uyumludur.<\/p>\n<h4>Di\u011fer De\u011fer Tipleri<\/h4>\n<p>*   <strong><code>angle<\/code>, <code>time<\/code>, <code>frequency<\/code>, <code>resolution<\/code><\/strong>: Bu tipler de teorik olarak desteklenir ancak pratikte daha az kullan\u0131l\u0131r. \u00d6rne\u011fin, <code>transform: rotate(attr(data-angle angle));<\/code>.<br \/>\n*   <strong><code>identifier<\/code><\/strong>: CSS anahtar kelimeleri i\u00e7in, \u00f6rne\u011fin <code>text-align: attr(data-align identifier, left);<\/code><\/p>\n<h3>Geli\u015fmi\u015f Kullan\u0131m ve <code><type><\/code> Parametresi<\/h3>\n<p><code>attr()<\/code> fonksiyonunun geni\u015fletilmi\u015f yeteneklerinin temelinde, d\u00f6nd\u00fcr\u00fclecek de\u011ferin tipini belirten <code><type><\/code> parametresi yatar. Bu parametre, taray\u0131c\u0131ya HTML \u00f6zelli\u011findeki metin de\u011ferini belirli bir CSS veri tipi olarak yorumlamas\u0131 talimat\u0131n\u0131 verir.<\/p>\n<p>S\u00f6z dizimi:<\/p>\n<pre><code class=\"language-css\">attr(attribute-name <type>)<\/code><\/pre>\n<p><strong>Neden <code><type><\/code> parametresi bu kadar \u00f6nemli?<\/strong><br \/>\nCSS \u00f6zellikleri belirli t\u00fcrde de\u011ferler bekler. \u00d6rne\u011fin, <code>width<\/code> bir uzunluk (length) de\u011feri beklerken, <code>color<\/code> bir renk (color) de\u011feri bekler. Bir HTML \u00f6zelli\u011fi genellikle metin (string) olarak saklan\u0131r. E\u011fer <code>data-width=\"100px\"<\/code> \u015feklinde bir \u00f6zelli\u011finiz varsa ve bunu <code>width: attr(data-width);<\/code> olarak kullan\u0131rsan\u0131z, <code>attr()<\/code> varsay\u0131lan olarak &#8220;100px&#8221; metin dizisini d\u00f6nd\u00fcr\u00fcr. <code>width<\/code> \u00f6zelli\u011fi bir metin dizisi kabul etmedi\u011fi i\u00e7in bu stil uygulanmaz.<\/p>\n<p><code><type><\/code> parametresini kullanarak, taray\u0131c\u0131ya &#8220;100px&#8221; metnini bir uzunluk de\u011feri olarak i\u015flemesini s\u00f6yleyebiliriz: <code>width: attr(data-width length);<\/code>. Bu durumda, taray\u0131c\u0131 &#8220;100px&#8221; metnini alacak, onu bir CSS uzunluk birimine d\u00f6n\u00fc\u015ft\u00fcrecek ve <code>width<\/code> \u00f6zelli\u011fine uygulayacakt\u0131r.<\/p>\n<p><strong>Kullan\u0131labilir <code><type><\/code> de\u011ferleri:<\/strong><\/p>\n<p>*   <strong><code>string<\/code><\/strong>: Varsay\u0131lan de\u011ferdir. Metin dizisi d\u00f6nd\u00fcr\u00fcr. (<code>content<\/code> i\u00e7in ideal)<br \/>\n*   <strong><code>url<\/code><\/strong>: Bir URL de\u011feri d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <strong><code>identifier<\/code><\/strong>: Bir CSS anahtar kelimesi d\u00f6nd\u00fcr\u00fcr (\u00f6rn. <code>left<\/code>, <code>right<\/code>, <code>block<\/code>, <code>none<\/code>).<br \/>\n*   <strong><code>length<\/code><\/strong>: Uzunluk birimi (\u00f6rn. <code>px<\/code>, <code>em<\/code>, <code>rem<\/code>, <code>%<\/code>, <code>vw<\/code>, <code>vh<\/code>).<br \/>\n*   <strong><code>angle<\/code><\/strong>: A\u00e7\u0131 birimi (\u00f6rn. <code>deg<\/code>, <code>rad<\/code>, <code>grad<\/code>).<br \/>\n*   <strong><code>time<\/code><\/strong>: Zaman birimi (\u00f6rn. <code>s<\/code>, <code>ms<\/code>).<br \/>\n*   <strong><code>frequency<\/code><\/strong>: Frekans birimi (\u00f6rn. <code>Hz<\/code>, <code>kHz<\/code>).<br \/>\n*   <strong><code>number<\/code><\/strong>: Ondal\u0131kl\u0131 say\u0131 (birimsiz).<br \/>\n*   <strong><code>integer<\/code><\/strong>: Tam say\u0131 (birimsiz).<br \/>\n*   <strong><code>percentage<\/code><\/strong>: Y\u00fczde de\u011feri (birimsiz, <code>%<\/code> i\u015fareti HTML \u00f6zelli\u011finde olmal\u0131 veya <code>calc()<\/code> ile kullan\u0131lmal\u0131).<br \/>\n*   <strong><code>color<\/code><\/strong>: Renk de\u011feri (\u00f6rn. <code>red<\/code>, <code>#FF0000<\/code>, <code>rgb(255,0,0)<\/code>).<br \/>\n*   <strong><code>resolution<\/code><\/strong>: \u00c7\u00f6z\u00fcn\u00fcrl\u00fck birimi (\u00f6rn. <code>dpi<\/code>, <code>dpcm<\/code>).<\/p>\n<p><strong>\u00d6rnekler:<\/strong><\/p>\n<pre><code class=\"language-html\"><div class=\"box\" data-width=\"250px\" data-height=\"150px\" data-bg-color=\"rgb(200, 200, 255)\" data-rotation=\"45deg\">\n  Dinamik Kutu\n<\/div><\/code><\/pre>\n<pre><code class=\"language-css\">.box {\n  width: attr(data-width length);\n  height: attr(data-height length);\n  background-color: attr(data-bg-color color);\n  transform: rotate(attr(data-rotation angle));\n  border: 1px solid black;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>width<\/code>, <code>height<\/code>, <code>background-color<\/code> ve <code>transform<\/code> gibi farkl\u0131 CSS \u00f6zelliklerine, HTML&#8217;deki <code>data-*<\/code> \u00f6zelliklerinden al\u0131nan de\u011ferler, do\u011fru tipler belirtilerek uygulanm\u0131\u015ft\u0131r.<\/p>\n<h3>Yedek De\u011ferler (<code><fallback><\/code>)<\/h3>\n<p><code>attr()<\/code> fonksiyonunun bir di\u011fer kullan\u0131\u015fl\u0131 \u00f6zelli\u011fi, bir yedek de\u011fer (<code>fallback value<\/code>) belirtme yetene\u011fidir. Bu yedek de\u011fer, a\u015fa\u011f\u0131daki durumlarda kullan\u0131l\u0131r:<\/p>\n<p>1.  Belirtilen <code>attribute-name<\/code>&#8216;e sahip bir \u00f6zellik \u00f6\u011fede yoksa.<br \/>\n2.  \u00d6zelli\u011fin de\u011feri bo\u015fsa.<br \/>\n3.  \u00d6zelli\u011fin de\u011feri, belirtilen <code><type><\/code>&#8216;a d\u00f6n\u00fc\u015ft\u00fcr\u00fclemiyorsa (yani ge\u00e7ersiz bir de\u011ferse).<\/p>\n<p>S\u00f6z dizimi:<\/p>\n<pre><code class=\"language-css\">attr(attribute-name <type> <fallback-value>)<\/code><\/pre>\n<p>E\u011fer <code><type><\/code> belirtilmezse (yani <code>string<\/code> varsay\u0131l\u0131rsa), yedek de\u011fer sadece \u00f6zelli\u011fin bulunmamas\u0131 veya bo\u015f olmas\u0131 durumunda kullan\u0131l\u0131r.<\/p>\n<p><strong>\u00d6rnekler:<\/strong><\/p>\n<pre><code class=\"language-html\"><button data-tooltip=\"Kaydet\" class=\"btn\"><\/button>\n<button class=\"btn\"><\/button>\n<div data-size=\"invalid-value\"><\/div>\n<div data-size=\"100px\"><\/div><\/code><\/pre>\n<pre><code class=\"language-css\">.btn::after {\n  content: attr(data-tooltip string, \"Bilgi Yok\"); \/<em> data-tooltip yoksa \"Bilgi Yok\" <\/em>\/\n  margin-left: 5px;\n  color: gray;\n}\n\ndiv {\n  width: attr(data-size length, 50px); \/<em> data-size ge\u00e7ersizse veya yoksa 50px <\/em>\/\n  height: attr(data-size length, 50px);\n  border: 1px solid red;\n  margin: 10px;\n}<\/code><\/pre>\n<p>Bu \u00f6rneklerde, ilk <code>button<\/code> i\u00e7in <code>data-tooltip<\/code> de\u011feri &#8220;Kaydet&#8221; olarak g\u00f6sterilirken, ikinci <code>button<\/code> i\u00e7in <code>data-tooltip<\/code> \u00f6zelli\u011fi olmad\u0131\u011f\u0131 i\u00e7in &#8220;Bilgi Yok&#8221; yedek de\u011feri kullan\u0131lacakt\u0131r. <code>div<\/code> \u00f6\u011feleri i\u00e7in ise, <code>data-size<\/code> ge\u00e7ersiz oldu\u011funda veya yoklu\u011funda <code>50px<\/code> de\u011feri uygulanacakt\u0131r. Yedek de\u011ferler, stil uygulamas\u0131n\u0131n daha sa\u011flam ve hataya dayan\u0131kl\u0131 olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Pratik Kullan\u0131m Senaryolar\u0131<\/h3>\n<p><code>attr()<\/code> fonksiyonunun geni\u015fletilmi\u015f yetenekleri, web geli\u015ftiricileri i\u00e7in bir dizi pratik ve dinamik stil uygulama senaryosu sunar:<\/p>\n<h4>1. Dinamik Tooltip&#8217;ler ve Etiketler<\/h4>\n<p>En klasik ve hala \u00e7ok g\u00fc\u00e7l\u00fc bir kullan\u0131m alan\u0131d\u0131r. <code>data-tooltip<\/code> gibi \u00f6zel \u00f6zellikler kullanarak dinamik ipu\u00e7lar\u0131 olu\u015fturmak:<\/p>\n<pre><code class=\"language-html\"><span data-tooltip=\"Bu bir ipucudur.\" class=\"tooltip-trigger\">\u00dczerine Gel<\/span><\/code><\/pre>\n<pre><code class=\"language-css\">.tooltip-trigger {\n  position: relative;\n  display: inline-block;\n  cursor: help;\n}\n\n.tooltip-trigger::after {\n  content: attr(data-tooltip);\n  position: absolute;\n  bottom: 100%;\n  left: 50%;\n  transform: translateX(-50%);\n  background-color: #333;\n  color: #fff;\n  padding: 5px 10px;\n  border-radius: 4px;\n  white-space: nowrap;\n  opacity: 0;\n  visibility: hidden;\n  transition: opacity 0.3s, visibility 0.3s;\n  z-index: 10;\n}\n\n.tooltip-trigger:hover::after {\n  opacity: 1;\n  visibility: visible;\n}<\/code><\/pre>\n<h4>2. \u0130lerleme \u00c7ubuklar\u0131<\/h4>\n<p>Bir ilerleme \u00e7ubu\u011funun doluluk oran\u0131n\u0131 HTML&#8217;den almak:<\/p>\n<pre><code class=\"language-html\"><div class=\"progress-bar\" data-progress=\"75\">\n  <div class=\"progress-fill\"><\/div>\n<\/div><\/code><\/pre>\n<pre><code class=\"language-css\">.progress-bar {\n  width: 200px;\n  height: 20px;\n  background-color: #e0e0e0;\n  border-radius: 10px;\n  overflow: hidden;\n}\n\n.progress-fill {\n  height: 100%;\n  background-color: #4CAF50;\n  width: attr(data-progress percentage, 0%); \/<em> data-progress'\u0131 y\u00fczde olarak kullan <\/em>\/\n  transition: width 0.5s ease-in-out;\n}<\/code><\/pre>\n<p>Burada <code>percentage<\/code> tipini kullanmak, <code>data-progress<\/code> de\u011ferini do\u011frudan y\u00fczde olarak yorumlamas\u0131n\u0131 sa\u011flar. E\u011fer <code>data-progress<\/code> sadece bir say\u0131 olsayd\u0131 (<code>75<\/code> yerine <code>0.75<\/code>), o zaman <code>number<\/code> tipini kullan\u0131p <code>width: calc(attr(data-progress number) * 100%);<\/code> gibi bir ifade kullanmak gerekebilirdi.<\/p>\n<h4>3. Dinamik Boyutland\u0131rma ve Stil<\/h4>\n<p>\u00d6\u011felerin geni\u015fli\u011fini, y\u00fcksekli\u011fini veya font boyutunu HTML \u00f6zelliklerinden almak:<\/p>\n<pre><code class=\"language-html\"><div class=\"card\" data-card-width=\"300px\" data-card-bg=\"#f0f0f0\">\n  <h3>Ba\u015fl\u0131k<\/h3>\n  <p>\u0130\u00e7erik<\/p>\n<\/div><\/code><\/pre>\n<pre><code class=\"language-css\">.card {\n  width: attr(data-card-width length, 250px);\n  background-color: attr(data-card-bg color, #ffffff);\n  padding: 15px;\n  border-radius: 8px;\n  box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}<\/code><\/pre>\n<h4>4. Form Elemanlar\u0131 i\u00e7in Dinamik \u0130\u00e7erik<\/h4>\n<p>\u00d6zellikle <code>placeholder<\/code> veya <code>alt<\/code> gibi \u00f6zellikleri do\u011frudan kullanmak:<\/p>\n<pre><code class=\"language-html\"><input type=\"text\" data-placeholder-text=\"Ad\u0131n\u0131z\u0131 buraya girin\">\n<img decoding=\"async\" src=\"image.jpg\" data-alt-text=\"Bir manzara resmi\"><\/code><\/pre>\n<pre><code class=\"language-css\">input[data-placeholder-text]::placeholder {\n  content: attr(data-placeholder-text); \/<em> Not: ::placeholder i\u00e7in content do\u011frudan desteklenmez, bu sadece \u00f6rnek bir kullan\u0131m senaryosudur <\/em>\/\n  \/<em> Genellikle JS ile placeholder \u00f6zelli\u011fi g\u00fcncellenir. Ancak attr() ile ba\u015fka bir yere metin eklenebilir. <\/em>\/\n}\n\nimg[data-alt-text]::after {\n  content: \"Resim: \" attr(data-alt-text);\n  display: block;\n  font-size: 0.9em;\n  color: #555;\n  margin-top: 5px;\n}<\/code><\/pre>\n<p><code>::placeholder<\/code> i\u00e7in <code>content<\/code> \u00f6zelli\u011fi do\u011frudan \u00e7al\u0131\u015fmaz \u00e7\u00fcnk\u00fc <code>::placeholder<\/code> zaten kendi i\u00e7eri\u011fini al\u0131r. Ancak <code>attr()<\/code>&#8216;yi ba\u015fka bir ama\u00e7la, \u00f6rne\u011fin <code>::before<\/code> veya <code>::after<\/code> ile kullanarak form elemanlar\u0131yla ilgili ek bilgiler g\u00f6sterebiliriz.<\/p>\n<h3><code>attr()<\/code> Kullan\u0131m\u0131n\u0131n Avantajlar\u0131 ve Dezavantajlar\u0131<\/h3>\n<p><code>attr()<\/code> fonksiyonu g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, her ara\u00e7 gibi avantajlar\u0131 ve dezavantajlar\u0131 vard\u0131r.<\/p>\n<h4>Avantajlar\u0131:<\/h4>\n<p>*   <strong>Daha Az JavaScript \u0130htiyac\u0131:<\/strong> Basit dinamik stil de\u011fi\u015fiklikleri i\u00e7in JavaScript kullanma ihtiyac\u0131n\u0131 azalt\u0131r. Bu, \u00f6zellikle sunumla ilgili k\u00fc\u00e7\u00fck etkile\u015fimler i\u00e7in faydal\u0131d\u0131r.<br \/>\n*   <strong>HTML ve CSS Aras\u0131nda S\u0131k\u0131 Entegrasyon:<\/strong> \u0130\u00e7erik ve stil aras\u0131ndaki ba\u011flant\u0131y\u0131 do\u011frudan HTML \u00f6zellikleriyle kurarak daha deklaratif bir yakla\u015f\u0131m sunar.<br \/>\n*   <strong>Daha Temiz Kod (Baz\u0131 Durumlarda):<\/strong> JavaScript&#8217;in DOM manip\u00fclasyonuyla u\u011fra\u015fmak yerine, stil tan\u0131mlar\u0131n\u0131 do\u011frudan CSS&#8217;te tutmak kodun okunabilirli\u011fini art\u0131rabilir.<br \/>\n*   <strong>Performans:<\/strong> JavaScript ile DOM&#8217;u manip\u00fcle etmek yerine do\u011frudan CSS taraf\u0131ndan i\u015flendi\u011fi i\u00e7in, baz\u0131 durumlarda daha iyi performans sunabilir.<br \/>\n*   <strong>Eri\u015filebilirlik:<\/strong> <code>content<\/code> \u00f6zelli\u011fi ile kullan\u0131ld\u0131\u011f\u0131nda, ekran okuyucular taraf\u0131ndan okunabilen ek metinler eklemeye yard\u0131mc\u0131 olabilir.<\/p>\n<h4>Dezavantajlar\u0131:<\/h4>\n<p>*   <strong>Taray\u0131c\u0131 Deste\u011fi:<\/strong> Geni\u015fletilmi\u015f <code>attr()<\/code> kullan\u0131m\u0131 (yani <code>content<\/code> d\u0131\u015f\u0131ndaki \u00f6zellikler i\u00e7in ve <code><type><\/code> parametresiyle) hala t\u00fcm taray\u0131c\u0131larda tam olarak desteklenmemektedir. Bu, \u00f6zellikle eski taray\u0131c\u0131larda veya belirli mobil taray\u0131c\u0131larda uyumluluk sorunlar\u0131na yol a\u00e7abilir.<br \/>\n*   <strong>Karma\u015f\u0131kl\u0131k ve Hata Ay\u0131klama:<\/strong> Yanl\u0131\u015f tip belirtildi\u011finde veya HTML \u00f6zelli\u011finde ge\u00e7ersiz bir de\u011fer oldu\u011funda, stilin neden uygulanmad\u0131\u011f\u0131n\u0131 anlamak zor olabilir. CSS&#8217;te do\u011frudan bir de\u011fer yerine bir referans oldu\u011fu i\u00e7in hata ay\u0131klama karma\u015f\u0131kla\u015fabilir.<br \/>\n*   <strong>HTML&#8217;in Sunum Katman\u0131na Kar\u0131\u015fmas\u0131:<\/strong> HTML \u00f6zelliklerinin semantik olmayan, sadece stil ama\u00e7l\u0131 kullan\u0131lmas\u0131, HTML&#8217;in yap\u0131s\u0131n\u0131 bozar ve &#8220;i\u00e7erik ve sunum ayr\u0131m\u0131&#8221; prensibine ayk\u0131r\u0131 olabilir. A\u015f\u0131r\u0131 kullan\u0131mda HTML \u015fi\u015fkinle\u015febilir ve y\u00f6netimi zorla\u015fabilir.<br \/>\n*   <strong>S\u0131n\u0131rl\u0131 Dinamiklik:<\/strong> <code>attr()<\/code> sadece HTML&#8217;deki mevcut \u00f6zellik de\u011ferlerini okuyabilir. Ger\u00e7ek zamanl\u0131, kullan\u0131c\u0131 etkile\u015fimine dayal\u0131 karma\u015f\u0131k dinamik de\u011fi\u015fiklikler i\u00e7in hala JavaScript gereklidir.<br \/>\n*   <strong>CSS De\u011fi\u015fkenleri (<code>var()<\/code>) ile Kar\u015f\u0131la\u015ft\u0131rma:<\/strong> \u00c7o\u011fu dinamik stil ihtiyac\u0131 i\u00e7in CSS de\u011fi\u015fkenleri (<code>var()<\/code>) daha esnek ve daha yayg\u0131n olarak desteklenen bir alternatiftir.<\/p>\n<h3><code>attr()<\/code> ve CSS De\u011fi\u015fkenleri (<code>var()<\/code>) Kar\u015f\u0131la\u015ft\u0131rmas\u0131<\/h3>\n<p><code>attr()<\/code> fonksiyonu ile CSS de\u011fi\u015fkenleri (<code>var()<\/code>) genellikle benzer ama\u00e7lar i\u00e7in (dinamik de\u011ferler kullanmak) akla gelir, ancak farkl\u0131 kullan\u0131m alanlar\u0131 ve avantajlar\u0131 vard\u0131r.<\/p>\n<p>*   <strong><code>attr()<\/code>:<\/strong> HTML \u00f6zelliklerinden de\u011ferleri do\u011frudan CSS&#8217;e ta\u015f\u0131r. De\u011ferin kayna\u011f\u0131 DOM&#8217;dur. Genellikle \u00f6\u011feye \u00f6zg\u00fc, d\u0131\u015far\u0131dan gelen veriler i\u00e7in idealdir.<br \/>\n*   <strong><code>var()<\/code>:<\/strong> CSS i\u00e7inde tan\u0131mlanan \u00f6zel \u00f6zelliklerdir (de\u011fi\u015fkenler). De\u011ferin kayna\u011f\u0131 CSS&#8217;in kendisidir. Genellikle global veya belirli bir kapsamdaki stil de\u011ferlerini y\u00f6netmek, temaland\u0131rma ve tekrar kullan\u0131labilirlik i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><strong>Ne Zaman Hangisini Kullanmal\u0131?<\/strong><\/p>\n<p>*   <strong><code>attr()<\/code> kullan\u0131n:<\/strong><br \/>\n    *   Bir \u00f6\u011fenin kendine \u00f6zg\u00fc bir HTML \u00f6zelli\u011findeki de\u011feri do\u011frudan stilinde kullanman\u0131z gerekti\u011finde (\u00f6rn. <code>data-tooltip<\/code>, <code>data-width<\/code>).<br \/>\n    *   JavaScript&#8217;i en aza indirmek istedi\u011finiz basit, \u00f6\u011feye \u00f6zg\u00fc dinamikler i\u00e7in.<br \/>\n*   <strong><code>var()<\/code> kullan\u0131n:<\/strong><br \/>\n    *   Renk paletleri, font boyutlar\u0131, bo\u015fluklar gibi global veya bile\u015fen baz\u0131nda de\u011fi\u015fen tasar\u0131m tokenlar\u0131n\u0131 y\u00f6netmek istedi\u011finizde.<br \/>\n    <em>   CSS i\u00e7inde karma\u015f\u0131k hesaplamalar yapmak veya de\u011ferleri ba\u015fka CSS de\u011ferleriyle birle\u015ftirmek istedi\u011finizde (\u00f6rn. <code>calc(var(--base-size) <\/em> 1.5)<\/code>).<br \/>\n    *   Taray\u0131c\u0131 deste\u011fi daha geni\u015f oldu\u011fu i\u00e7in daha g\u00fcvenilir bir \u00e7\u00f6z\u00fcm arad\u0131\u011f\u0131n\u0131zda.<\/p>\n<p><strong>Birlikte Kullan\u0131m:<\/strong><\/p>\n<p><code>attr()<\/code> ve <code>var()<\/code> fonksiyonlar\u0131 birlikte de kullan\u0131labilir. Bu, HTML&#8217;den gelen bir de\u011feri bir CSS de\u011fi\u015fkenine atayarak, o de\u011feri daha sonra CSS i\u00e7inde daha esnek bir \u015fekilde kullanman\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-html\"><div class=\"widget\" data-theme-color=\"#1a73e8\" data-padding=\"20px\">\n  Widget \u0130\u00e7eri\u011fi\n<\/div><\/code><\/pre>\n<pre><code class=\"language-css\">.widget {\n  --widget-color: attr(data-theme-color color, #333);\n  --widget-padding: attr(data-padding length, 15px);\n\n  background-color: var(--widget-color);\n  padding: var(--widget-padding);\n  border: 1px solid var(--widget-color);\n  color: white;\n}<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m, <code>attr()<\/code>&#8216;nin HTML&#8217;den veri alma g\u00fcc\u00fcn\u00fc, <code>var()<\/code>&#8216;nin CSS i\u00e7indeki esneklik ve tekrar kullan\u0131labilirlik avantajlar\u0131yla birle\u015ftirir.<\/p>\n<h3>Taray\u0131c\u0131 Deste\u011fi ve Gelecek<\/h3>\n<p><code>attr()<\/code> fonksiyonunun <code>content<\/code> \u00f6zelli\u011fi ile kullan\u0131m\u0131, modern taray\u0131c\u0131lar\u0131n tamam\u0131nda ve eski taray\u0131c\u0131lar\u0131n \u00e7o\u011funda yayg\u0131n olarak desteklenmektedir.<\/p>\n<p>Ancak, <code>attr()<\/code> fonksiyonunun &#8220;CSS Values and Units Module Level 4&#8221; ile gelen geni\u015fletilmi\u015f kullan\u0131m\u0131 (yani <code>content<\/code> d\u0131\u015f\u0131ndaki \u00f6zellikler i\u00e7in ve <code><type><\/code> parametresiyle) taray\u0131c\u0131 deste\u011fi a\u00e7\u0131s\u0131ndan daha de\u011fi\u015fkendir:<\/p>\n<p>*   <strong>Firefox:<\/strong> Geni\u015fletilmi\u015f <code>attr()<\/code> deste\u011fini olduk\u00e7a erken benimsedi ve iyi bir deste\u011fe sahip.<br \/>\n*   <strong>Chrome\/Edge\/Opera:<\/strong> K\u0131smi deste\u011fe sahip. \u00d6zellikle <code>string<\/code> ve <code>url<\/code> tipleri i\u00e7in destek daha yayg\u0131nken, di\u011fer tipler (length, color, number vb.) i\u00e7in destek daha yeni ve geli\u015fmekte. Baz\u0131 \u00f6zelliklerde \u00e7al\u0131\u015fsa da, tam ve tutarl\u0131 destek hen\u00fcz sa\u011flanamam\u0131\u015f olabilir.<br \/>\n*   <strong>Safari:<\/strong> Deste\u011fi s\u0131n\u0131rl\u0131d\u0131r ve genellikle yaln\u0131zca <code>string<\/code> tipi i\u00e7in \u00e7al\u0131\u015f\u0131r.<\/p>\n<p><strong>Taray\u0131c\u0131 Deste\u011fi Kontrol\u00fc:<\/strong><br \/>\nEn g\u00fcncel taray\u0131c\u0131 deste\u011fi bilgilerini kontrol etmek i\u00e7in <code>caniuse.com<\/code> adresini ziyaret etmek en do\u011frusudur. Arama \u00e7ubu\u011funa <code>attr()<\/code> yazarak detayl\u0131 destek matrisini g\u00f6rebilirsiniz. Genellikle, <code>content<\/code> i\u00e7in <code>attr()<\/code> kullan\u0131m\u0131n\u0131n neredeyse %100 desteklendi\u011fini, ancak geni\u015fletilmi\u015f kullan\u0131m\u0131n daha d\u00fc\u015f\u00fck bir y\u00fczdeye sahip oldu\u011funu g\u00f6receksiniz.<\/p>\n<p><strong>Gelecek:<\/strong><br \/>\nCSS spesifikasyonlar\u0131nda geni\u015fletilmi\u015f <code>attr()<\/code>&#8216;nin varl\u0131\u011f\u0131, onun gelecekte daha fazla benimsenmesini ve taray\u0131c\u0131lar taraf\u0131ndan tam olarak desteklenmesini beklememizi sa\u011flar. Ancak \u015fu an itibar\u0131yla, geni\u015fletilmi\u015f <code>attr()<\/code> kullan\u0131m\u0131n\u0131 \u00fcretim ortamlar\u0131nda kullan\u0131rken taray\u0131c\u0131 deste\u011fini g\u00f6z \u00f6n\u00fcnde bulundurarak dikkatli olmak ve gerekti\u011finde yedek \u00e7\u00f6z\u00fcmler (\u00f6rne\u011fin JavaScript veya CSS de\u011fi\u015fkenleri) sa\u011flamak \u00f6nemlidir. Progresif geli\u015ftirme (progressive enhancement) yakla\u015f\u0131m\u0131yla, destekleyen taray\u0131c\u0131lar i\u00e7in geli\u015fmi\u015f deneyim sunarken, desteklemeyenler i\u00e7in temel i\u015flevselli\u011fi koruyabilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>CSS <code>attr()<\/code> fonksiyonu, HTML \u00f6zellik de\u011ferlerini stilinize entegre etmek i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir mekanizma sunar. \u00d6zellikle &#8220;CSS Values and Units Module Level 4&#8221; ile gelen geni\u015fletilmi\u015f yetenekleri, web geli\u015ftiricilerine daha az JavaScript kullanarak dinamik ve veri odakl\u0131 aray\u00fczler olu\u015fturma potansiyeli sunar. Klasik <code>content<\/code> kullan\u0131m\u0131yla dinamik metinler ve ipu\u00e7lar\u0131 olu\u015fturmaktan, geni\u015fletilmi\u015f kullan\u0131m\u0131yla \u00f6\u011felerin boyutlar\u0131n\u0131, renklerini veya di\u011fer g\u00f6rsel \u00f6zelliklerini do\u011frudan HTML \u00f6zelliklerinden kontrol etmeye kadar geni\u015f bir uygulama yelpazesine sahiptir.<\/p>\n<p>Ancak, geni\u015fletilmi\u015f <code>attr()<\/code> kullan\u0131m\u0131n\u0131n taray\u0131c\u0131 deste\u011fi hala geli\u015fmekte oldu\u011fu i\u00e7in, bu \u00f6zelli\u011fi \u00fcretim projelerinde kullan\u0131rken dikkatli olmak ve taray\u0131c\u0131 uyumlulu\u011funu g\u00f6z \u00f6n\u00fcnde bulundurmak kritiktir. CSS de\u011fi\u015fkenleri (<code>var()<\/code>) gibi alternatiflerle kar\u015f\u0131la\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, <code>attr()<\/code>&#8216;nin benzersiz g\u00fcc\u00fc HTML&#8217;den gelen do\u011frudan, \u00f6\u011feye \u00f6zg\u00fc verilerle stil olu\u015fturma yetene\u011fidir. Her iki arac\u0131 da do\u011fru senaryolarda ve bilin\u00e7li bir \u015fekilde kullanmak, daha verimli, okunabilir ve y\u00f6netilebilir CSS kodlar\u0131 yazmam\u0131za yard\u0131mc\u0131 olacakt\u0131r. <code>attr()<\/code> fonksiyonu, HTML ve CSS aras\u0131ndaki k\u00f6pr\u00fcy\u00fc g\u00fc\u00e7lendirerek, web geli\u015ftirme s\u00fcre\u00e7lerimize yeni bir boyut katmaktad\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc\nWeb geli\u015ftirme d\u00fcnyas\u0131nda, HTML ve CSS, i\u00e7eri\u011fi yap\u0131land\u0131rmak","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[126],"tags":[],"class_list":{"0":"post-32134","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-css3-html5","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc\" \/>\n<meta property=\"og:description\" content=\"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc Web geli\u015ftirme d\u00fcnyas\u0131nda, HTML ve CSS, i\u00e7eri\u011fi yap\u0131land\u0131rmak\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-18T01:40:54+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc\",\"datePublished\":\"2025-10-18T01:40:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/\"},\"wordCount\":2613,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"CSS3 - HTML5\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/\",\"name\":\"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-18T01:40:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/","og_locale":"tr_TR","og_type":"article","og_title":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc","og_description":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc Web geli\u015ftirme d\u00fcnyas\u0131nda, HTML ve CSS, i\u00e7eri\u011fi yap\u0131land\u0131rmak","og_url":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-18T01:40:54+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc","datePublished":"2025-10-18T01:40:54+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/"},"wordCount":2613,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["CSS3 - HTML5"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/","url":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/","name":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-18T01:40:54+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/css-attr-fonksiyonu-ozellik-degerlerini-stillerinize-entegre-etmenin-gucu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CSS attr() Fonksiyonu: \u00d6zellik De\u011ferlerini Stillerinize Entegre Etmenin G\u00fcc\u00fc"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32134"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32134\/revisions"}],"predecessor-version":[{"id":32135,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32134\/revisions\/32135"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}