Özellik Seçicileri(Attribute Selectors)

Bu konuya biraz geç değindik biliyorum. Ancak bu konuyu (X)HTML Sayfa Yapısı ve CSS Kullanımı makalesi içinde yazmayı düşündüğümde IE bu özelliği desteklemiyordu(şimdi IE7 bu özelliği desteklemektedir.) bu nedenle yazımını ertelemiştim, sonrada unuttum gitti açıkçası neyse sonunda yazıyorum işte:)

CSS ile tanımlama yaparken Xhtml nesnelerine erişmede bazen sıkıntı çekeriz. Ne yapsak da bu elemente atama yapsak diye bu genelde programcı – Arayüz Kod Yazarı ayrımının olduğu projelerde çok başımıza gelir. Bu sorunu kökünden çözen bir yöntemdir Özellik Seçicileri.

Javascript gibi id’si olan her elemente(hata daha fazlası da var) css özelliği atanması bize bir çok bakımdan avantaj sağlar.

Özellik Seçicileri HTML, XHTML veya XML dokümanlarındaki seçilen etiketin özelliklerine veya özellik değerlerine göre tanımlama yapmamızı sağlar. Bir örnek verecek olursak sayfamızdaki bir resme(örn: grafik.gif) kenarlık ataması yapmak istersek:

img[src="grafik.gif"]{
	border: 1px solid #000;
}

Dört çeşit Özellik Seçicisi vardır.

1- Basit Özellik Seçicisi

Belirli bir etiketin(örn:img) özelligine(örn:alt) göre tanımlama yapmamızı sağlar.

Basit özellik seçicisi

Bir örnek yapalım

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CSS'in yapısı</title>
<style type="text/css">
img[alt] {
	border: 5px solid lime
}
</style>
</head>
<body>
	<img src="logo.gif" alt="Logo" width="32" height="41" />
</body>
</html>

Örneği görmek için tıklayınız.

Yukarıdaki kodlamada birden fazla <img> tanımı vardır. Ama biz sadece
alt tanımı yaptıklarımıza belli özellikler atamak istiyoruz. Bunun için Basit
Özellik Seçicisini kullanabiliriz.

Tarayıcı Uyumu:

Internet Explorer 6.0: desteklemiyor 7.0: destekliyor ;
Firefox: destekliyor ;
Google Chrome: destekliyor ;
Opera: destekliyor

2- Özellik Değeri Seçicisi

Bir etiketin özellik değerine göre tanımlama yapmamızı sağlar.

Özellik Değeri Seçicisi

Bir örnek yapalım

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
<title>CSS'in yapısı</title>
<style type="text/css">
input[type="text"] {
border: 1px solid #000;
width: 150px;
}
</style>
</head>
<body>
<p>Adınız : <input type="text" name="ad" /></p>
<p>Cinsiyetiniz: <input type="radio" name="cinsiyet" id="erkek" />
Erkek <input type="radio" name="cinsiyet" id="kadin" /> Kadın
</p>
</body>
</html>

Örneği görmek için tıklayınız.

Genelde formlarda tanımlama yaparken sadece metin girisi yaptıgımız alanlara atama yapmakta zorlanırız. Bunun sebebi <input> etiketini sadece metin girisi için kullanılmamasıdır, radyo buton ve isaretleme kutuları içinde bu etiketin kullanılmasıdır. Özellik Degeri Seçicisi bu sorunu kökten çözer. Yukarıdaki örnekte görüldügü gibi

Tarayıcı Uyumu:

Internet Explorer6: desteklemiyor 7.0: destekliyor ;
Firefox: destekliyor ;
Google Chrome: destekliyor ;
Opera: destekliyor

3- Kısmi Özellik Değeri Seçicisi

Bir etiketin özellik değerindeki boşluklarla ayrılmış kısımlarına göre tanımlama yapmamızı sağlar.

Kısmi Özellik Değeri Seçicisi

Bir örnek yapalım

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
<title>CSS'in yapısı</title>
<style type="text/css">
a[title~="Google"] {
text-decoration:overline;
}
</style>
</head>
<body>
<p><a href="http://www.google.com" title="Google seç">gooogle
</a> </p>
<p><a href="http://www.yahoo.com" title="Yahoo seç">yahoo </a>
</p>
<p><a href="http://www.fatihhayrioglu.com" title="Fatih">fatih </a>
</p>
</body>
</html>

Örneği görmek için tıklayınız.

Türkçe karakterde sorunsuz çalısıyor. Siz kullanabilecegimiz yerleri hesap
edin artık.

Tarayıcı Uyumu:

Internet Explorer 6.0: desteklemiyor 7.0: destekliyor ;
Firefox: destekliyor ;
Google Chrome: destekliyor ;
Opera: destekliyor

4- Dikkate Değer Özellik Seçicisi

Bir etiketin özellik değerindeki kesik çizgi(-) ile ayrılmış kısımlarına göre tanımlama yapmamızı sağlar.

Dikkate Değer Özellik Seçicisi

Bir örnek yapalım

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
/>
<title>CSS'in yapısı</title>
<style type="text/css">
*[lang|="en"] {
color: red;
}
</style>
</head>
<body>
<h1 lang="en">Hello!</h1>
<p lang="en-us">Greetings!</p>
<div lang="en-au">G’day!</div>
<p lang="fr">Bonjour!</p>
<h4 lang="cy-en">Jrooana!</h4>
</body>
</html>

Örneği görmek için tıklayınız.

Tarayıcı Uyumu:

Internet Explorer 6.0: desteklemiyor 7.0: destekliyor ;
Firefox: destekliyor ;
Google Chrome: destekliyor ;
Opera: destekliyor

Bunların dısında CSS3 ile birlikte gelen dört tane daha yeni Özellik Seçicisi vardır. “Belirlenen Sözdizimi ile Baslayan Özellik Deger Seçicisi”, “Belirlenen Sözdizimi ile Biten Özellik Deger Seçicisi”, “İçinde Belirlenen Sözdizimi Geçen Özellik Deger Seçicisi” ve Aduzayı Özellik Deger Seçicisi diye 4 adet yeni Özellik Seçicisi daha vardır. Amaç CSS ve XHTML arasındaki iletisimi en üst seviyeye çıkararak kolay ve etkilesimli kod yazmamızı saglamak.

Kaynaklar

30 Yorum (Yorum Ekle)

  • @tikicik diyor ki:

    Hocam çok hayırlı bir iş yapıyorsunuz banada sizi bi tanıdığım önerdi siteniz her gece takip ediyorum her gece 1 tane ders uygulayark ben bu işi kavrıcam gibi.. :D çok teşşekürler..

  • [...] seçici tipleri ve kullanımı hakkında (X)HTML Sayfa Yapısı ve CSS Kullanımı, Özellik Seçicileri(Attribute Selectors) ve Sözde-sınıflar(Pseudo-class) ve Sözde-elementler(Pseudo-elements) makalelerini bir göz [...]

  • cihat diyor ki:

    S.A hocam ben bu dersi okudum ve tümünün mantığını anladım sayılır fakat 2-basit örnek seçicisinde örnek vermişsiniz ama içinde class yok yani ordaki örnek bana göre Özellik Değeri Seçicisi örneği olmuş bu konuda aydınlatırsanız sevinirim yeni başladığım için kafam karıştı class örneği yok hiç ne olur acele cevap

    • fatihhayri diyor ki:

      Örneklerde bir sorun yok. Seçiciyi tanımladığım resimlerdekiler örnek değil, onları göstermek için kullandım, örnek kodlar ile onları bir alakası yok

  • mustafa diyor ki:

    2- Özellik Değeri Seçicisi konusunu anlamadım yani ne işe yarıyor kendimde denedim ama ne işe yaradığını anlamadım… Fatih hocam bunu açıklarsanız çok sevinirim kolay gelsin başarılarınıın devamını diliyorum…

  • @yarimezgi diyor ki:

    çok güzel bir eğitim.katkılarınız için teşekkürler.

  • Serhat diyor ki:

    Bence çok daha fazla detaylandırılması gerekiyor :)

    “İçinde Belirlenen Sözdizimi Geçen Özellik Değer Seçicisi” gibi asıl can alıcı konuları atlamışsınız.

    Umarım yazının sonunda sadece isimlerini saymakla yetindiğiniz özellikleri de bir ara anlatırsınız.

  • Umut diyor ki:

    yani rengin hmeen diğer renge değişmesi deilde yavaş bir şekilde değişmesi için bir kod vardı. O kodu burda paylaşabilirmisiniz hocam…

  • Umut diyor ki:

    Hocam şimdi araştırdığım sitenizde bulamadığım bir konuyu size sormak istiyorum linklerin üstüne gelince renk vs. değiştiriyoruz ya o renk değiştirirken ağır değiştir gibi bir şey hatırlıyorum…

  • Gözde diyor ki:

    Merhaba Fatih Bey,
    <asp:RadioButton />ve <asp:TextBox /> için 2.örneği uyguladığımda Internet Explorer' da çalışmıyor.
    Çözümüyle ilgili bilginiz var mı?
    Teşekkürler

  • Gökbey23 diyor ki:

    İyi günler,
    Style.cssde img[alt] { böyle yazmışsınız img'ye özellik atarken.Ben onun yerine sadece img { diye yazdım oldu acaba [alt] eklemenizin amacı nedir?

Yorum yaz

Format: Yorum içinde kullanılabilecek HTML kodları: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

?