koddla

Yazılımcıları bilgi ile güçlendirir.

Neden HTML’e göre “chucknorris” bir renk?

HTML’de arka plan renkleri olarak girildiğinde neden bazı dizeler renk olarak algılanır?

Mesela:

<body bgcolor="chucknorris"> test </body>

.. tüm tarayıcılarda ve platformlarda kırmızı arka plana sahip bir belge üretir.

Öte yandan, chucknorr sarı bir arka plan oluşturur! Peki neler oluyor burada?


Netscape günlerinden kalma bir etki bu:

Eksik veya yanlış basamaklar 0 olarak yorumlanır. Örneğin, #F0F0F0, F0F0F0, F0F0F, #FxFxFx ve FxFxFx değerlerinin tümü aynıdır.

ayrıştırma hakkında biraz rant adlı blog yazısı bunun detaylarını anlatıyor. Blog gönderisindeki kuralları uygularsak aşağıdakileri elde ediyoruz:

  1. Geçersiz onaltılık karakterlerin tümünü 0’larla değiştirin: chucknorris -> c00c0000000
  2. 3’e bölünebilen bir sonraki toplam karakter sayısına (11 → 12) kadar 0 ekleyin
    c00c0000000 -> c00c 0000 0000
  3. Her bileşen bir RGB renginin karşılık gelen renk bileşenini temsil eden üç eşit gruba ayrılır:
    RGB (c00c, 0000, 0000)
  4. Değişkenlerin her birini sağdan iki karaktere kadar kesin.

Bu da son olarak aşağıdaki sonucu verir:

RGB (c0, 00, 00) = #C00000 yada RGB(192, 0, 0)

örnek:bgcolor

<table>
  <tr>
    <td bgcolor="chucknorris" cellpadding="8" width="100" align="center">chuck norris</td>
    <td bgcolor="mrt"         cellpadding="8" width="100" align="center" style="color:#ffffff">Mr T</td>
    <td bgcolor="ninjaturtle" cellpadding="8" width="100" align="center" style="color:#ffffff">ninjaturtle</td>
  </tr>
  <tr>
    <td bgcolor="sick"  cellpadding="8" width="100" align="center">sick</td>
    <td bgcolor="crap"  cellpadding="8" width="100" align="center">crap</td>
    <td bgcolor="grass" cellpadding="8" width="100" align="center">grass</td>
  </tr>
</table>

Bu aynı zamanda sorunun diğer kısmını da yanıtlıyor: bgcolor="chucknorr" Neden sarı bir renk üretir? Kuralları uygularsak, şunu görürüz:

chucknorr => c00c00000 
c00c00000 => c00 c00 000 => c0 c0 00 [RGB(192, 192, 0)]

Bu da açık sarı altın rengi verir. Dize 9 karakter olarak başlarken, bu sefer ikinci ‘C’yi tutuyoruz, bu nedenle son renk değerinde sona eriyor.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top