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:
- Geçersiz onaltılık karakterlerin tümünü 0’larla değiştirin:
chucknorris -> c00c0000000
- 3’e bölünebilen bir sonraki toplam karakter sayısına (11 → 12) kadar 0 ekleyin
c00c0000000
->c00c 0000 0000
- 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)
- 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.