מה הצבע של צ׳אק נוריס

מה הצבע של צ׳אק נוריס

(הרקע לפוסט הוא השאלה הזו ב- StackOverflow)

כדי להגדיר צבע רקע לאלמנט html לא באמצעות css (דבר שכבר לא אמורים לעשות) – משתמשים ב- attribute בשם "bgcolor".

לדוגמא, הקוד הזה:

<table>
	<tr>
		<td bgcolor="#ff0000">Red TD</td>
	</tr>
</table>

יראה כך:

Red TD

הגדרנו את הצבע האדום בהקסדצימל "ff0000" – שלושה בייטים שמציינים ערכי RGB, כל ערך בטווח 0 – 255, כלומר בין ׳00׳ ל- ׳ff׳.

אבל מה יקרה כאשר במקום ערך הקסדצימלי או שם הצבע…נשים טקסט?

הנה כמה דוגמאות לערכי bgColor:

<table>
	<tr>
		<td bgcolor="chucknorris">chuck norris</td>
		<td bgcolor="mrt">Mr T</td>
		<td bgcolor="ninjaturtle">ninjaturtle</td>
	</tr>
	<tr>
		<td bgcolor="cheese">cheese</td>
		<td bgcolor="crap">crap</td>
		<td bgcolor="fish">fish</td>
	</tr>
	<tr>
		<td bgcolor="cloudy">cloudy</td>
		<td bgcolor="superman">superman</td>
		<td bgcolor="grass">grass</td>
	</tr>
</table>

וככה זה נראה:

chuck norris Mr T ninjaturtle
cheese crap fish
cloudy superman grass

(אם אתם רוצים לבדוק לאיזה צבע אתם הופכים, נסו את ה- JsBin הזה)

אז למה זה קורה?

הדפדפן מקבל מילה בתור bgColor, לדוגמא "ChuckNorris". הוא בודק האם זה אחד מהצבעים ששמורים אצלו (כמו "red"  או "blue"). זה לא. הלאה.

עכשיו הוא מניח שיש כאן ערך הקסדצימלי. כלומר רק 0-9 או A-F מעניינים אותו. כל תו אחר יוחלף מיידית ב- '0'. מה שאומר שאם נכתוב מילה שכולה אותיות אחרי F, הצבע תמיד יהיה שחור (כמו #000).

ניקח את "chucknorris". זה יוחלף להקסדצימלי – "c00c0000000". מכיוון שזה רק 11 תווים, יתווסף padding של 0 אחד מימין, כי אנחנו צריכים מספר תווים שמתלק בשלוש – c00c00000000. זה מתפצל לשלושת ערכי RGB:

c00c 0000 0000

 צריך רק שני תווים עבור כל צבע, לכן רק שני התווים השמאליים ישארו. כלומר:

c0 00 00

לסיכום, הצבע "chucknorris" הוא – 192 צבע אדום, ו- 0 ירוק וכחול.

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *