Hoşgeldiniz KablosuzForum.net

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra, konular oluşturabilecek, mevcut konulara yanıtlar gönderebilecek, diğer üyelere itibar kazandırabilecek, kendi özel mesajlaşma programınızı alabilecek ve çok daha fazlasını yapabileceksiniz. Ayrıca hızlı ve tamamen ücretsizdir, öyleyse ne bekliyorsunuz?

Soru Sor

Merak ettiğiniz, kafanıza takılan sorular hakkında konu açın, diğer üyelerimiz ve moderatörlerimiz cevaplasın.

Ticaret

Ticari konular açıp güven oluşturmak ve daha fazla satış rakamlarına ulaşmak için hesabını doğrula!

Bize ulaşın

Yönetim kadrosuyla iletişime geçin

Üyeliğini Yükselt!

Üyeliğinizi yükselterek birbirinden ayrıcalıklı özelliklere sahip olun!

Shadow DOM ile Stil Çakışmalarını Önleyerek Web Component Tasarımını Özgürleştir

Resim 1 Resim 2

ayarburcak

Burçak Ayar
KF Kullanıcı
Katılım
17 Eki 2024
Mesajlar
6
Tepkime puanı
13
Puanları
1

Shadow DOM ile Stil Çakışmalarını Önleyerek Web Component Tasarımını Özgürleştir[/HEADING=1]

Hiç bir kez bir web komponenti tasarlarken global stil becerileriyle çarpıştığınızı fark ettiniz mi? Dahası, aynı komponenti farklı sayfalarda kullanırken stil uyuşmazlıklarına karışmak zorunda kaldınız mı? Shadow DOM burada devreye giriyor!

Neden Shadow DOM?

- **Kapsulama**: Web komponentinin içine yerleştirilen CSS, sayfanın genel stil kümesiyle çakışmaz.
- **Güvenlik**: Tüm DOM alt yapısı izole olduğundan hem geliştirici hem de son kullanıcı için daha güvenli.
- **Bakım Kolaylığı**: Tek bir noktada stil değişikliği, uygulama genelindeki diğer bileşenleri etkilemez.

Kullanışlı Örnek:

````
Kod:
class MyCard extends HTMLElement {
  constructor() {
    super();
    const shadow = this.attachShadow({mode: 'open'});
    const wrapper = document.createElement('div');
    wrapper.classList.add('card');
    wrapper.innerHTML = `
      <h2>${this.getAttribute('title')}</h2>
      <p>${this.getAttribute('content')}</p>
    `;
    shadow.appendChild(wrapper);
    shadow.appendChild(MyCard.styles());
  }

  static styles() {
    const style = document.createElement('style');
    style.textContent = `
      .card {
        border: 1px solid #ddd;
        padding: 1rem;
        border-radius: 4px;
        background: #fafafa;
      }
      h2 { color: #333; }
    `;
    return style;
  }
}
customElements.define('my-card', MyCard);
```
````

[B]Shadow DOM'u Hangi Modda Kullanırsan?[/B]

- **Mode: open** – JavaScript üzerinden shadow root'a erişilebilir. Test ve dinamik stil değiştirme için idealdir.
- **Mode: closed** – erişim tamamen engellenir. Güvenlik sulair için tercih edilir.

[URL=http://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM]MDN Dokümantasyonu[/URL] başlıyoruz.İşte üç adımda Shadow DOM'a geçiş:

[LIST=1]
[*] Yeni bir custom element oluşturun.
[*] `attachShadow({mode: 'open'})` ile izole bir ortam açın.
[*] CSS ve HTML'i doğrudan shadow root'a yerleştirin.
[/LIST]

[B]Dinamik Stilleri Güncelleme[/B]

```[CODE]
const shadow = this.shadowRoot;
shadow.querySelector('.card').style.background = 'lightblue';
```
```
(Bu örnek, sayfa yüklendikten sonra bile shadow root içinde stil değişikliğine izin verir.)

[B]En İyi Uygulamalar[/B]

- **Scoped CSS**: Stylingi doğrudan shadow root içinde tutun, global `:root` değişkenlerinden kaçının. 
- **Global Değişkenler**: Gerekirse, `:host-context()` ile global değişkenleri okuyabilirsiniz.
- **Polyfill**: Eski tarayıcılar için `webcomponents.js` polyfill'lerini dahil etmeyi unutmayın.

[B]Kapanış:[/B]

Shadow DOM, modern web geliştirme dünyasında temasızlıkla karşılaşmayı önler. Projenizde bu izole ortamı dengeleyerek, kodunuzu hem temiz tutar hem de müşteri deneyimini zirveye taşır. Öyleyse bugün, sıfırdan bir web component yaratın ve stil çakışmalarına elveda deyin!


[IMG]https://images.unsplash.com/photo-1586797513138-b7336cd82a7f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3NjY2MDl8MHwxfHJhbmRvbXx8fHx8fHx8fDE3Njk1NTI0MzR8&ixlib=rb-4.1.0&q=80&w=1080[/IMG]

 
Responsive GIF Layout

shape1
shape2
shape3
shape4
shape5
shape6
Üst