CSS ::marker ile özel madde işaretleri

Tarayıcı Desteği

  • Chrome: 86.
  • Kenar: 86.
  • Firefox: 68.
  • Safari: 11.1.

Kaynak

CSS ::marker sayesinde şunları yapabilirsiniz: HTML listelerinde madde işareti ve numaranın içeriğini ve bazı stillerini değiştirebilirsiniz.

Madde işareti stili örnekleri. Kaynağı Görüntüleme

Sözde öğelere giriş

Sözde öğe, dokümanın herhangi bir bölümünde belge ağacını tıklayın. Örneğin, bir paragrafın ilk satırını aşağıdakileri kullanarak seçebilirsiniz: sarmalayan HTML öğesi olmasa bile p::first-line yapay öğesi görünür.

Aşağıdaki HTML sırasız listesini ele alalım:

<ul>
  <li>Lorem ipsum dolor sit amet consectetur adipisicing elit</li>
  <li>Dolores quaerat illo totam porro</li>
  <li>Quidem aliquid perferendis voluptates</li>
  <li>Ipsa adipisci fugit assumenda dicta voluptates nihil reprehenderit
      consequatur alias facilis rem</li>
  <li>Fuga</li>
</ul>

Varsayılan stille aşağıdaki gibi oluşturulur:

Her <ul> öğesinin başındaki nokta, listeyi oluşturma işleminin bir parçası olarak oluşturulur ve kendi HTML öğesine sahip değildir. ::marker, bu noktayı veya sıralı liste öğesinin başındaki sayıyı temsil eden bir sözde öğedir.

İşaretçi oluştur

::marker sözde öğe işaretçi kutusu, her bir liste öğesi öğesi; hem gerçek içeriklerden hem de ::before sözde öğedir.

li::before {
  content: "::before";
  background: lightgray;
  border-radius: 1ch;
  padding-inline: 1ch;
  margin-inline-end: 1ch;
}

Liste öğeleri genellikle <li> HTML öğelerinden oluşur, ancak display: list-item kullanabilirsiniz kullanarak diğer öğeleri liste öğelerine dönüştürebilirsiniz.

<dl>
  <dt>Lorem</dt>
  <dd>Lorem ipsum dolor sit amet consectetur adipisicing elit</dd>
  <dd>Dolores quaerat illo totam porro</dd>

  <dt>Ipsum</dt>
  <dd>Quidem aliquid perferendis voluptates</dd>
</dl>
dd {
  display: list-item;
  list-style-type: "🤯";
  padding-inline-start: 1ch;
}

İşaretçiye stil uygulama

::marker kullanıma sunulmadan önce, liste öğesi simgesini değiştirmek için list-style-type ve list-style-image kullanarak listelere stil verebiliyordunuz:

li {
  list-style-image: url(/right-arrow.svg);
  /* OR */
  list-style-type: '👉';
  padding-inline-start: 1ch;
}

::marker, işaretçilerin rengini, boyutunu ve aralığını CSS'nizde işaretçi sözde öğelerini tek tek veya genel olarak hedeflemenizi sağlar:

li::marker {
  color: hotpink;
}

li:first-child::marker {
  font-size: 5rem;
}

::marker, işaretçi stilleri üzerinde list-style-type'ten çok daha fazla kontrol sahibi olmanızı sağlar ancak her CSS mülküyle çalışmaz. Aşağıdaki özelliklere izin verilir:

  • animation-*
  • transition-*
  • color
  • direction
  • font-*
  • content
  • unicode-bidi
  • white-space

::marker içeriğini list-style-type kullanarak değil, content kullanarak değiştirin. İlgili içeriği oluşturmak için kullanılan sonraki örnek, list-style-type özelliklerinin bütüne nasıl uygulandığını gösterir liste öğesidir ve ::marker yalnızca işaretçi kutusunu hedeflemenize olanak sağlar. background özelliği, list-style-type ile çalışır ancak ::marker ile çalışmaz.

Stilleri Listeleme
li:nth-child(1) {
  list-style-type: '?';
  font-size: 2rem;
  background: hsl(200 20% 88%);
  animation: color-change 3s ease-in-out infinite;
}
Liste stili, liste öğesinin tamamını etkiler.
İşaretçi Stilleri
li:nth-child(2)::marker {
  content: '!';
  font-size: 2rem;
  background: hsl(200 20% 88%);
  animation: color-change 3s ease-in-out infinite;
}
İşaretçi stili, işaretçiye odaklanmanızı sağlar.


İşaretçinin içeriğini değiştirme

İşaretçilerinizi biçimlendirmenin bazı örnek yolları aşağıda verilmiştir.

Tüm liste öğelerini değiştirme

li {
  list-style-type: "😍";
}

/* OR */

li::marker {
  content: "😍";
}

Yalnızca bir liste öğesini değiştirme

li:last-child::marker {
  content: "😍";
}

SVG ile işaretçi tanımlama

li::marker {
  content: url(/heart.svg);
  content: url(#heart);
  content: url("data:image/svg+xml;charset=UTF-8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='24' width='24'><path d='M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z' fill='none' stroke='hotpink' stroke-width='3'/></svg>");
}

Sıralı listeleri değiştirme

Peki ya <ol>? Sıralı bir liste öğesindeki işaretçi, bir nokta veya "madde işareti" değil, varsayılan olarak ayarlanır. CSS'de bunlara Sayaçlar ve sayının başladığı veya bittiği yeri ayarlama veya sıfırlama özellikleri vardır ya da Örneğin, Roma rakamlarına dönüştürebilirsiniz. Stil oluşturmak için ::marker öğesini kullanabilirsiniz oluşturabilir, hatta kendi numaralandırmanızı oluşturmak için işaretçi içerik değerini kullanabilir en iyi uygulamaları paylaşacağız.

li::marker {
  content: counter(list-item) "› ";
  color: hotpink;
}

Hata Ayıklama

Chrome Geliştirici Araçları kabı, uyguladığınız stilleri incelemenize, hatalarını ayıklamanıza ve değiştirmenize yardımcı olur ::marker sözde öğe.

Geliştirici Araçları açılıyor ve kullanıcı aracısının stilleri ve kullanıcı stilleri gösteriliyor
İşaretçi stillerinin DevTools açıklamaları.

Kaynaklar

::marker hakkında daha fazla bilgiyi şu kaynaklardan edinebilirsiniz: