Soru HTML neden "chucknorris" kelimesinin bir renk olduğunu düşünüyor?


HTML'de arka plan renkleri olarak girildiğinde belirli rasgele dizeler nasıl renk üretir? Örneğin:

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

... bir belge ile bir kırmızı arka plan tüm tarayıcılarda ve platformlarda.

İlginçtir, chucknorri kırmızı bir arka plan oluşturur, chucknorr sarı bir arka plan oluşturur.

Neler oluyor İşte?


6549
2017-11-29 22:54


Menşei


Bir yan not olarak: kullanma bgcolor. CSS'yi kullan background. - John Dvorak
Neden hiç bir arka plan rengi eklemek istiyorsun chucknorris? Beklenen renk neydi? - masterFly
@masterFly: Kabul edilen cevap altındaki yorumumun neden "yapıcı değil" diye silindiğini bilmiyorum, çünkü sorunuzu oldukça iyi yanıtlıyor: insanlar bu şeyleri her zaman deniyor. Bunu keşfettiğimde sadece 10 yaşındaydım ve o sırada yaptığım her şey etrafta dolaşıyor ve ne olduğunu görüyordu. Her zaman bir şeyler yapmak için pratik bir nedene sahip olmanıza gerek yok, özellikle bunun gibi anlamsız bir şey. - BoltClock♦
ve <body bgcolor="stevensegal"> test </ body> yeşil - Chris
Harika! Bunu şimdi kullanmaya başlayacağım. Her seferinde kırmızı yazmayı denediğimde, otomatik rebeccapurple için tamamlanır. Hikayeyi bilmiyorsanız PS google. - Simon_Weaver


Cevaplar:


Netscape günlerinden bir hamle:

Eksik haneler 0 [...] olarak değerlendirilir. Yanlış bir rakam basitçe 0 olarak yorumlanır. Örneğin, # F0F0F0, F0F0F0, F0F0F, #FxFxFx ve FxFxFx değerleri aynıdır.

Blog yayınından Microsoft Internet Explorer'ın renk ayrıştırması hakkında biraz düşünmek Farklı renk değerleri, vb. dahil olmak üzere bunu ayrıntılı olarak kapsar.

Kurallarını sırayla blog yayınından uygularsak, şunları elde ederiz:

  1. Tüm geçersiz onaltılı karakterleri 0 ile değiştirin

    chucknorris becomes c00c0000000
    
  2. 3 (11 -> 12) ile bölünebilen bir sonraki toplam karakter sayısına kadar dışarıda kalın.

    c00c 0000 0000
    
  3. Her bir bileşen bir RGB rengin karşılık gelen renk bileşenini temsil eden üç eşit gruba ayrılır:

    RGB (c00c, 0000, 0000)
    
  4. Bağımsız değişkenlerin her birini sağdan aşağıya iki karakterden kısaltın

Aşağıdaki sonucu verir:

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

İşte bir örnek gösteren bgcolor Bu "harika" renk örneğini üretmek için harekete geçirme özelliği:

<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ına da cevap verir; neden yapıyor bgcolor="chucknorr" sarı renk üretmek? Eğer kuralları uygularsak, dize:

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

Hangi açık sarı altın rengi verir. Dize 9 karakter olarak başladığı için, ikinci C'yi bu seferde tutarız ve sonuçta son renk değerine ulaşırız.

Ben biriyle karşılaştığımda bunu yapabilirdim. color="crap" ve, kahverengi çıkıyor.


6051
2017-11-30 21:53



Blog yayınının söylediklerine rağmen, 3 karakterlik dizeleri ele aldığınızda, çift Her karakter, 0'dan önce değil. 0F6 olur #00FF66, değil #000F06. - Aaron Dufour
@usr: HTML, hatalı biçimlendirilmiş girişi bilinçli olarak göz ardı ederek inşa edilir;) - Kevin Ballard
Sen de benimkini kullanabilirsin css rengine rastgele dize belirli bir dize için renk elde etmek için dönüştürücü. Dayanmaktadır Jeremy Goodell tarafından dize rengini hesaplamak için 5 adım. - TimPietrusky
Anlambilim için gizli bir fırsat? Bununla bazı hata sayfaları yapabilirsiniz: <body bgcolor=error><h1 style=text-align:center>Error: Not Found<h1></span> Bir arka plan veya başka bir şey ile bir div ekleyebilirsiniz, bu yüzden estetik olarak şok edici değildir. - Theraot
@Theraot bgcolor="success" çok güzel bir yeşildir. İlginçtir, CSS özelliği / değer seçicilerini kullanarak bu renkleri geçersiz kılabilir (Örneğin., td[bgcolor="chucknorris"] {...}). - megaflop


Katıldığım için üzgünüm, ancak yayınlanan eski bir renk değerini ayrıştırma kurallarına göre YUhong Bao, chucknorris Eşit değil #CC0000değil, daha çok #C00000çok benzer ama biraz farklı bir renk tonu. Kullandım Firefox ColorZilla eklentisi Bunu doğrulamak için

Kurallar devlet:

  • dizeyi 0'ları ekleyerek 3'ün katları olan bir uzunlukta yapın: chucknorris0
  • dizeyi 3 eşit uzunlukta dizeye ayırın: chuc knor ris0
  • her dizeyi 2 karaktere kırpın: ch kn ri
  • onaltılık değerleri koruyun ve gerektiğinde 0'ı ekleyin: C0 00 00

Aşağıdaki dizeleri doğru şekilde yorumlamak için bu kuralları kullanabildim:

  • LuckyCharms
  • Luck
  • LuckBeALady
  • LuckBeALadyTonight
  • GangnamStyle 

GÜNCELLEŞTİRME: Rengin dediği orijinal cevaplayıcılar #CC0000 Yanıtlarını düzeltmeyi de içerecek şekilde düzenlediler.


829
2017-10-17 17:55



Bunu çözdüm, bazı ayrıştırma talimatlarını yanlış yorumlamıştım: "adamlevine" = "ada00e000e" = "ada00e000e00" = "ada0 0e00 0e00" = "ad 0e 0e" - Mükemmel! - Jeremy Goodell
İlgilenirseniz, bugün gönderdiğim benzer bir soruda 5 adımlık bir algoritmayı UPDATE olarak yayınladım: stackoverflow.com/questions/12939234/... - Jeremy Goodell
@TimPietrusky rastgele renk isimleri için bu ucube inanılmaz demo aracı yarattı. Sadece buraya git: randomstringtocsscolor.com kutucuğa tıklayın ve "chucknorris" yazın. - Jeremy Goodell
adamlevine başına çalışır jsfiddle.net/LdyZ8/2959 ama mektuplar ada00e000e hangi için yastıklı ada00e000e00 ama daha sonra tipik HEX 6 rakam değerine indirgenmiş [ad]a0[0e]00[0e]00 Böylece yukarıdaki jsfiddle'da görünen ad0e0e'yi yapar. - Martin
Bu cevap daha iyi olurdu bir tek mevcut durumu içerdi - bu cevabın tarihi ve diğer cevaplar düzenleme özetleri ve / veya yorumlarına aittir. - Peter Mortensen


Çoğu tarayıcılar, renk dizginizdeki herhangi bir NON-hex değerini, onaltılık olmayan basamakları sıfırlarla değiştirir.

ChuCknorris Çevirir c00c0000000. Bu noktada, tarayıcı dizeyi üç eşit bölüme böler ve Kırmızı, Yeşil ve Mavi değerler: c00c 0000 0000. Her bölümdeki ekstra bitler göz ardı edilir ve bu da nihai sonucu verir #c00000 Bu kırmızımsı bir renktir.

Not, bu yapar değil CSS standardını takip eden CSS renk ayrıştırmasına uygulanır.

<p><font color='chucknorris'>Redish</font></p>
<p><font color='#c00000'>Same as above</font></p>
<p><span style="color: chucknorris">Black</span></p>


338
2017-11-29 23:01



Yine de OP'nin neden "CSS'de" ve "HTML'de" olmadığını söylemesine rağmen - Belki de süper eski bir tarayıcı kullanıyorlar mı, yoksa yanılıyor mu? - Mike Christensen
Öyleyse, kullanımdan kaldırılmış olanı kullanmaktan daha fazlasıdır. bgcolor bağlıyor. - animuson♦
Belki de "tüm tarayıcılar ve platformlar" arasında bir Chuck Norris kırmızısı üreten bu büyülü HTML'yi yayınlayacak kadar nazik olacaktır. - Mike Christensen
Geçersiz karakterler atlanmaz, 0 olarak değerlendirilir. - phyzome
(Bu cevap ölü olabilir) öneri: Renkleri göstermek için arka plan rengini kullanın. Metin rengi böyle küçük bir alanın üzerindeyse, farklılıkları veya benzerlikleri görmek zor - Zoe


Tarayıcı dönüşmeye çalışıyor chucknorris hex renk koduna, çünkü geçerli bir değer değil.

  1. İçinde chucknorrisdışında her şey c geçerli bir hex değeri değil.
  2. Yani dönüştürülür c00c00000000.
  3. Hangisi olur # c00000, kırmızı bir gölge.

Bu öncelikle bir sorun gibi görünüyor Internet Explorer ve Opera (12) hem Chrome (31) hem de Firefox (26) bunu görmezden gelir.

Not; Parantez içindeki sayılar, test ettiğim tarayıcı sürümleridir.

.

Daha hafif bir notta

Chuck Norris, web standartlarına uymuyor. Web standartları uygun   ona. # Bada55


220
2017-11-30 14:05





WHATWG HTML spesifikasyonunda eski bir renk değeri ayrıştırmak için tam algoritma bulunur: https://html.spec.whatwg.org/multipage/infrastructure.html#rules-for-parsing-a-legacy-colour-value

Renk dizelerini ayrıştırmada kullanılan Netscape Classic kodu açık kaynak kodudur: https://dxr.mozilla.org/classic/source/lib/layout/layimage.c#155

Örneğin, her bir karakterin bir hex rakamı olarak ayrıldığını ve 32 bitlik bir tam sayıya kaydırıldığını unutmayın. taşma kontrolü olmadan. Sadece sekiz hex rakamı 32 bitlik bir tam sayıya sığar, bu nedenle sadece son 8 karakter dikkate alınır. Onaltılık rakamları 32 bitlik tam sayılara ayrıştırdıktan sonra, 8 bit'e sığdırılana kadar 16'ya bölerek 8 bitlik tamsayılara kesilirler, bu nedenle baştaki sıfırlar yok sayılır.

Güncelleme: Bu kod, spesifikasyonda tanımlananla tam olarak uyuşmuyor, ancak tek fark, birkaç satırlık kod var. Bence bu satırlar eklendi (Netscape 4'te):

if (bytes_per_val > 4)
{
      bytes_per_val = 4;
}

187
2017-09-27 22:01





Cevap: 

  • Tarayıcı dönüştürmeyi deneyecek ChuckNorris onaltılı bir değere.
  • Dan beri c tek geçerli onaltılık karakterdir ChuckNorris, değer şu şekildedir: c00c00000000(Geçersiz olan tüm değerler için 0).
  • Tarayıcı daha sonra sonucu 3 gruba ayırır: Red = c00c, Green = 0000, Blue = 0000.
  • Html arka planları için geçerli onaltılık değerler her renk türü için yalnızca 2 basamak içerdiğinden (r, g, b), son 2 basamağı her gruptan kesilir, rgb değerini bırakır c00000 tuğla kırmızımsı tonlu bir renktir.

167
2018-05-24 05:18





Nedeni tarayıcı olabilir anlamamak Bunu bir şekilde anlayabildiği bir şeye ve bu durumda onaltılık bir değere çevirmeye çalışın!

chucknorris ile başlar c Onaltılık karakterde tanınan karakter, ayrıca tüm tanınmayan karakterleri 0!

Yani chucknorris onaltılık biçimde olur: c00c00000000Diğer tüm karakterler 0 ve c oldukları yerde kalıyorlar ...

Şimdi 3'e bölündüler RGB(kırmızı yeşil mavi)... R: c00c, G: 0000, B:0000...

Fakat RGB'nin geçerli bir onaltılık sadece 2 karakter olduğunu biliyoruz, R: c0, G: 00, B:00

Yani gerçek sonuç:

bgcolor="#c00000";

Resimdeki adımları hızlı bir referans olarak da ekledim:

Why does HTML think “chucknorris” is a color?


135
2017-07-01 04:08



Bucky ne söyleyecekmiş gibi geliyor - Tushortz
@Tushortz bucky kimdir? - Goku
@Goku Bucky komik bir programlama dili öğretici "thenewboston" tanıtıcı tarafından gider Youtube adam - Tushortz


ChuckNorris istatistikleri ile c tarayıcı onaltılık bir değere okunur.

çünkü a, b, c, d, e, f onaltılı karakterler

Tarayıcı chucknorris e dönüşmek c00c00000000 onaltılık değer.

Sonra c00c00000000 onaltılık değer RGB format (3'e bölünür)

c00c00000000 => R:c00c,G:0000,B:0000

Tarayıcının rengini belirtmek için yalnızca 2 basamağa ihtiyacı var.

R:c00c,G:0000,B:0000 => R:c0,G:00,B:00 => c00000

sonunda, göster bgcolor = c00000 web tarayıcısında

İşte örnek bir örnek.

<table>
  <tr>
    <td bgcolor="chucknorris" cellpadding="10" width="150" align="center">chucknorris</td>
    <td bgcolor="c00c00000000" cellpadding="10" width="150" align="center">c00c00000000</td>
    <td bgcolor="c00000" cellpadding="10" width="150" align="center">c00000</td>
  </tr>
</table>


4
2018-04-17 19:16