CodeBlanks Logo Icon CodeBlanks

Paint API

CSS kursu · Uzman · Ders 14/53

CSS Paint API ile özel çizim öğrenirsin.

registerPaint ve paint yöntemi

Bir paint worklet'i registerPaint('isim', sınıf) ile kaydedersin. Sınıfın paint(ctx, geometry, properties) yöntemi çizimi yapar. ctx, Canvas'a benzeyen bir çizim bağlamıdır; geometry kutunun genişlik ve yüksekliğini, properties okunan CSS değişkenlerini verir.

Worklet, inputProperties alanıyla hangi değişkenleri okuyacağını bildirir. Tarayıcı yalnızca bu değişkenler değişince worklet'i yeniden çağırır.

inputProperties ile değişken okuma

Worklet, static get inputProperties() { return ['--tile-color']; } yazarak okuyacağı değişkenleri bildirir. paint yönteminde properties.get('--tile-color') çağrısı bir CSSStyleValue döndürür; .toString() ile rengi alırsın.

Böylece CSS'ten --tile-color: #f59e0b yazdığında worklet otomatik yeniden çizer. Bu, Paint API'nin CSS ile canlı bağlantı kurduğu yerdir.

Uygulama Avatar maskesini CSS'te yaz

Aşağıdaki CSS'i tamamla. .avatar bildiriminde --avatar-radius: 12 ve mask-image: paint(rounded) olsun.

Örnek çözümü göster
/* avatar maskesi */
.avatar {
  --avatar-radius: 12;
  mask-image: paint(rounded);
}

Kendini test et

  1. paint yönteminin ctx parametresi ne sağlar?

    class TilePainter {
      paint(ctx, geom) {
        /* ctx ne sağlar? */
      }
    }
    • Canvas benzeri çizim bağlamı
    • Ağ isteği bağlamı
    • Yalnızca metin dizesi
    • DOM ağacı kökü
    Cevabı göster

    Canvas benzeri çizim bağlamı — Doğru. ctx, Canvas'a benzeyen bir çizim bağlamıdır; fillRect, arc gibi yöntemler içerir.

  2. Worklet'in okuyacağı değişkeni tanımla

    .tile {
      --tile-color: ____;
      background: paint(tile);
    }
    Cevabı göster
    .tile {
      --tile-color: #f59e0b;
      background: paint(tile);
    }
  3. Yöntem ve alanları rolüne eşle

    registerPaint
    Worklet kaydeder
    paint(ctx, geom, props)
    Çizimi yapar
    inputProperties
    Okunacak değişkenler
    properties.get()
    Değer nesnesi verir

Uzman bölümündeki tüm dersler