Form Elementlerinin Özel Seçicileri

Form elementlerinin özel seçicileri, CSS ile form elemanlarını özelleştirmek için kullanılan yapılardır. Bu seçiciler "form" elemanlarından input, select ve textarea elementleri için ortak olarak bulunmaktadırlar.


1) CSS ":checked" seçicisi nedir?

":checked" seçicisi, bir form elemanının seçili (checked) durumunu hedef alır. Özellikle checkbox ve radio button gibi input elemanlarında kullanılır.

<form action="">
  <input type="radio" checked="checked" value="male" name="gender"> Male<br>
  <input type="radio" value="female" name="gender"> Female<br>
  <input type="checkbox" checked="checked" value="Bike"> I have a bike<br>
  <input type="checkbox" value="Car"> I have a car 
</form>
input:checked {
  height: 50px;
  width: 50px;
}

Yukarıdaki örnekte "type" değeri "radio" ve "checkbox" olan elementlerin checked (seçilme) özelliklerine CSS ile müdahale edilmiştir.


2) CSS ":default" seçicisi nedir?

":default" seçicisi, bir form elemanının varsayılan (default) değerini hedef alır. Genellikle input elemanları için kullanılır.

<form action="">
  <input type="radio" name="gender" value="male" checked> Male<br>
  <input type="radio" name="gender" value="female"> Female<br>
  <input type="radio" name="gender" value="other"> Other
</form>
input:default {
  box-shadow: 0 0 1px 1px red;
}

Yukarıdaki örnekte, "input" elementinin "checked" attribute değerine başlangıçta sahip olan için özel bir CSS yazılmıştır.


3) CSS ":disabled" seçicisi nedir?

":disabled" seçicisi, bir form elemanının devre dışı bırakılmış (disabled) durumunu hedef alır. Bu elemanlar kullanıcı etkileşimine kapalıdır. Genellikle sunucular tarafından "enabled" veya "disabled" değerleri atanmaktadır.

<form action="">
  First name: <input type="text" value="Mickey"><br>
  Last name: <input type="text" value="Mouse"><br>
  Country: <input type="text" disabled="disabled" value="Disneyland">
</form>
input[type=text]:enabled {
  background: #ffff00;
}

input[type=text]:disabled {
  background: #dddddd;
}

Yukarıdaki örnekte "disabled" değeri olan element için özel bir CSS yazılmıştır.


4) CSS ":enabled" seçicisi nedir?

":enabled" seçicisi, bir form elemanının etkin (enabled) durumunu hedef alır. Bu elemanlar kullanıcı etkileşimine açıktır. ":disabled" durumunun tersi yani "input" elementlerinin "default" olarak sahip olduğu değerin kendisidir.

<form action="">
  First name: <input type="text" value="Mickey"><br>
  Last name: <input type="text" value="Mouse"><br>
  Country: <input type="text" disabled="disabled" value="Disneyland">
</form>
input[type=text]:enabled {
  background: #ffff00;
}

input[type=text]:disabled {
  background: #dddddd;
}

Yukarıdaki örnekte "disabled" attribute değerine sahip olmayan "input" elementleri ":enabled" CSS değerinden etkilenmiştir.


5) CSS ":focus" seçicisi nedir?

":focus" seçicisi, bir form elemanının odaklanılmış (focused) durumunu hedef alır. Kullanıcı bu elemana odaklandığında aktif olur. İlgili form

<form>
  First name: <input type="text" name="firstname"><br>
  Last name: <input type="text" name="lastname">
</form>
input:focus {
  background-color: yellow;
}

Yukarıdaki örnekte, "input" elementlerine tıklanılması durumunda oluşan ":focus" özelliğine erişim sağlanılmıştır.


6) CSS ":indeterminate" seçicisi nedir?

":indeterminate" seçicisi, bir form elemanının belirsiz (indeterminate) durumunu hedef alır. Özellikle checkbox elemanları için kullanılır.

<form> <input type="checkbox" id="myCheckbox"> Checkbox </form>
// Make the checkbox indeterminate via JavaScript
var checkbox = document.getElementById("myCheckbox");
checkbox.indeterminate = true;
input:indeterminate {
  box-shadow: 0 0 1px 1px red;
}

Yukarıdaki örnekte, JavaScript ile elementin ID değeri üzerinden bir erişim işlemi gerçekleştirilmiştir. Daha sonrasında ise "indeterminite (belirsiz)" özelliği aktif hâle getirilmiştir. Daha sonrasında ise CSS ile erişim sağlanarak kullanılmıştır. Genellikle sunucu taraflı validayonlarda kullanılabilir.


7) CSS ":valid" seçicisi nedir?

":valid" seçicisi, bir form elemanının belirtilen türde olması gerekmektedir. Bu durum genellikle input validasyonunda kullanılır.

<input type="email" value="support@example.com">
input:valid {
  background-color: yellow;
}

Yukarıdaki örnekte "input" elementinin "type" değeri "email" olarak ayarlandığından, input input elementinin içerisine geçerli bir "email" adresi girilmediği zaman seçim işlemi yapılmaz! Geçerli bir E-mail adresi girildiğinde seçim yapılır.


8) CSS ":invalid" seçicisi nedir?

":invalid" seçicisi, bir form elemanının geçersiz (invalid) bir değere sahip olduğunu hedef alır. Bu durum genellikle input validasyonunda kullanılır. "valid" durumunun tam tersi olarakta görülebilir.

<input type="email" value="support@example.com">
input:invalid {
  background-color: yellow;
}

Yukarıdaki input elementinin "type" özelliğinin "E-mail" olması nedeniyle, geçersiz E-mail değeri girilmesi durumunda seçim işlemi yapılacaktır. ":valid" işleminin tam tersini temsil eder.


9) CSS ":optional" seçicisi nedir?

":optional" seçicisi, bir form elemanının "required" niteliği olmayan (optional) durumunu hedef alır. Bu elemanlar kullanıcı tarafından doldurulması isteğe bağlıdır. Diğer bir ifade ile "required" doldurulması zorunlu olmayan form elemanları için kullanılmaktadır.

<p> Zorunlu olmayan input: <br><input></p>
<p>Zorunlu olan element: <br><input required></p>
input:optional {
  background-color: yellow;
}

Yukarıdaki örnekte, input elementlerinden "required" olmayanı seçmektedir.


10) CSS ":in-range" seçicisi nedir?

":in-range" seçicisi, bir form elemanının belirli bir değer aralığında olduğunu hedef alır. Özellikle input[type="range"] gibi elemanlar için kullanılır.

<input type="number" min="5" max="10" value="7">
input:in-range {
  border: 2px solid yellow;
}

Yukarıdaki örnekte, oluşturulan input elementinin "min" veya "max" değer aralığının içinde bir değer girilirse CSS "in-range" selector yapısı o elementi seçecektir. Aralığın dışında bir sayı girildiğinde ise bu durumda o element seçilmeyecektir.


11) CSS ":out-of-range" seçicisi nedir?

":out-of-range" seçicisi, bir form elemanının belirli bir değer aralığının dışında olduğunu hedef alır. Özellikle input[type="range"] gibi elemanlar için kullanılır. Kısacası ":in-range" yapısının tam olarak zıttıdır.

<input type="number" min="5" max="10" value="17">
input:out-of-range {
  border: 2px solid red;
}

Yukarıdaki örnekte değerin 5 ile 10 arasında olması beklenirken 17 değeri girildiğinden kaynaklı olarak ":out-of-range" CSS özelliği, o elementi başarılı bir şekilde seçmiştir.


12) CSS ":read-only" seçicisi nedir?

":read-only" seçicisi, bir form elemanının sadece okunabilir (read-only) durumunu hedef alır. Kullanıcı bu elemanı düzenleyemez.

<p>Normal input elementi: <br><input value="hello"></p>
<p>Readonly olan input elementi<br><input readonly value="hello"></p>
input:read-only {
  background-color: yellow;
}

Yukarıdaki örnekte input elementinin "readonly (Sadece oku)" özelliği aktif olan element seçilmiştir.


13) CSS ":read-write" seçicisi nedir?

":read-write" seçicisi, bir form elemanının düzenlenebilir (read-write) durumunu hedef alır. Kısaca "readonly" değeri bulunanı değil, bulunmayanı seçer.

<p>Normal input elementi: <br><input value="hello"></p>
<p>Readonly olan input elementi<br><input readonly value="hello"></p>
input:read-write {
  background-color: yellow;
}

Yukarıdaki örnekte :readonly özelliği bulunmayan input elementi seçilmiştir.


14) CSS ":required" seçicisi nedir?

":required" seçicisi, bir form elemanının "required" niteliği belirtilmiş (required) durumunu hedef alır. Bu elemanlar kullanıcı tarafından doldurulması zorunludur. Boş değer

<p>An optional input element:<br><input></p>
<p>A required input element:<br><input required></p>
input:required {
  background-color: yellow;
}

Yukarıdaki örnekte, required (Zorunlu) özeliği bulunan element seçilmektedir.


CSS'te bulunan diğer seçim türlerini görüntülemek için CSS'te Seçim Yöntemleri isimli ana yazımıza bakmanızı tavsiye etmekteyiz.

CSS Pseudo-element (Sözde Element) Seçiciler

Pseudo, kelime anlamı ile sahte manasına gelmektedir. Bu nedenle aslında var olan bir elementin üzerinden türetilen CSS özellikleridir. Doğrudan HTML elementleri incelendiğinde sayfa içerisinde bulunan harici bir element değillerdir.

Pseudo-class (Sözde Sınıf) yapıları ile arasındaki en belirgin fark; Pseudo-class yapıları CSS'te ":" ile gösterilirken, Pseudo-element yapıları CSS'te "::" işareti ile gösterilmektedir.

Toplamda 7 farklı Pseudo-element yapısı bulunmaktadır. Bunlar: ::after, ::before, ::first-letter, ::first-line, ::marker, ::placeholder, ::selection şeklindedir.


1) CSS "::after" seçicisi nedir?

CSS, Pseudo - Class (Sözde Sınıf) Seçiciler

Psudo, kelime anlamı ile "sahte" manasına gelmektedir. Bu nedenle aslında bu işlemler içerisinde yapmış olduğumuz seçim işlemleri, doğrudan elementin sahip olduğu değerler değil, olması beklenen değerlerdir. CSS, Pseudo - Class Seçicileri konusunun daha iyi anlaşılması için 6 farklı başlık altında bir yazım gerçekleştireceğiz. Bunlar; Genel Pseudo-class seçiciler, Form elemanlarına yönelik Pseudo-class seçiciler, Ebeveyn - Çocuk ilişkisine yönelik Pseudo-class seçiciler, Elemanın türüne yönelik Pseudo-class seçiciler, İçerik durumuna yönelik Pseudo-class seçiciler ve en son olarak Kök eleman seçici şeklindedir.


CSS Genel Pseudo-class seçiciler

En sık kullanılan Pseudo-class seçicileridir. Birden çok Genel Pseudo-class yapısı...