এইচটিএমএল কেন "চকনোরিস" রঙ মনে করে?


7485

এইচটিএমএল এর ব্যাকগ্রাউন্ড রঙ হিসাবে প্রবেশ করার সময় নির্দিষ্ট কিছু এলোমেলো স্ট্রিং কীভাবে রঙ উত্পাদন করতে পারে? উদাহরণ স্বরূপ:

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

... সমস্ত ব্রাউজার এবং প্ল্যাটফর্ম জুড়ে একটি লাল পটভূমি সহ একটি দস্তাবেজ উত্পাদন করে ।

মজার বিষয় হল, পাশাপাশি chucknorriএকটি লাল পটভূমি chucknorrউত্পাদন করে, একটি হলুদ ব্যাকগ্রাউন্ড উত্পাদন করে।

এখানে কি হচ্ছে?


154
পার্শ্ব নোট হিসাবে: ব্যবহার করবেন না bgcolor। সিএসএস ব্যবহার করুন background
জন ডিভোরাক

47
আপনি কেন কখনও পটভূমি বর্ণিত রঙ যুক্ত করতে চান chucknorris? প্রত্যাশিত রঙটি কী ছিল?
ফ্লাই

106
@ মাস্টারফ্লাই: আমি জানি না কেন স্বীকৃত উত্তরের অধীনে আমার মন্তব্যটি "গঠনমূলক নয়" বলে মুছে ফেলা হয়েছিল, কারণ এটি আপনার প্রশ্নের উত্তরের যথেষ্ট উত্তর দেয়: লোকেরা এই বিষয়গুলি নিয়ে সারাক্ষণ পরীক্ষা করে থাকে। যখন আমি এটি আবিষ্কার করেছি তখন আমি কেবল 10 বছর ছিলাম এবং আমি যা করছিলাম সে সময়ে যা কিছু ঘটেছিল তা হতাশ হয়ে পড়েছিল এবং যা ঘটছিল তা দেখে। আপনার সবসময় কিছু করার জন্য ব্যবহারিক কারণ থাকতে হবে না, বিশেষত এটির মতো অপ্রয়োজনীয় কিছু।
বোল্টক্লক

49
এবং <body bgcolor="stevensegal">পরীক্ষা </body> সবুজ
ক্রিস

4
@ বেনড্যাগারস দয়া করে অন্য সম্পাদনা করার আগে সংশোধন ইতিহাস পড়ুন। CSS ট্যাগ অপ্রাসঙ্গিক এবং ইতিমধ্যে দুইবার সরানো হয়েছে।
লাইটনেস রেস

উত্তর:


6876

এটি নেটস্কেপের দিনগুলির একটি হোল্ডওভার:

অনুপস্থিত অঙ্কগুলি 0 [...] হিসাবে গণ্য করা হয়। একটি ভুল অঙ্কটি কেবল 0 হিসাবে ব্যাখ্যা করা হয় উদাহরণস্বরূপ # F0F0F0, F0F0F0, F0F0F, #FxFxFx এবং FxFxFx মানগুলি একই।

এটি ব্লগ পোস্ট থেকে মাইক্রোসফ্ট ইন্টারনেট এক্সপ্লোরারের রঙ বিশ্লেষণ সম্পর্কে সামান্য কৌতুক যা এটি বিভিন্ন বর্ণের রঙের মূল্য ইত্যাদি সহ দুর্দান্তভাবে কভার করে

আমরা যদি ব্লগ পোস্ট থেকে নিয়মগুলি ঘুরে দেখি তবে আমরা নিম্নলিখিতটি পাই:

  1. সমস্ত অবৈধ হেক্সাডেসিমাল অক্ষর 0 এর সাথে প্রতিস্থাপন করুন

    chucknorris becomes c00c0000000
  2. 3 (11 -> 12) দ্বারা বিভাজ্য অক্ষরের পরবর্তী মোট সংখ্যায় প্যাড করুন

    c00c 0000 0000
  3. আরজিবি রঙের সাথে সম্পর্কিত রঙের উপাদানটি উপস্থাপন করে প্রতিটি উপাদান সহ তিনটি সমান গ্রুপে বিভক্ত করুন:

    RGB (c00c, 0000, 0000)
  4. প্রতিটি আর্গুমেন্টকে ডান থেকে নীচে দুটি অক্ষরে ছড়িয়ে দিন

যা নিম্নলিখিত ফলাফল দেয়:

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

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>

এটি প্রশ্নের অন্য অংশেরও উত্তর দেয়; কেন bgcolor="chucknorr"একটি হলুদ রঙ উত্পাদন করে ? ঠিক আছে, আমরা যদি নিয়মগুলি প্রয়োগ করি তবে স্ট্রিংটি হ'ল:

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

যা হালকা হলুদ সোনার রঙ দেয়। স্ট্রিংটি 9 টি অক্ষর হিসাবে শুরু হওয়ার সাথে সাথে আমরা দ্বিতীয় সিটিকে এবারই রাখি কারণ এটি চূড়ান্ত রঙের মানটিতে শেষ হয়।

কেউ যখন আপনি করতে পারেন তা নির্দেশ করে আমি মূলত color="crap"এটির মুখোমুখি হয়েছিলাম এবং ভাল, এটি বাদামি রঙের আসে।


174
উল্লেখ্য, সত্ত্বেও ব্লগ পোস্টে কি বলে, যখন আপনি 3-গৃহস্থালির কাজ স্ট্রিং হ্যান্ডলিং পেতে, আপনি নকল অর্থাত প্রতিটি অক্ষর বরং 0. prepending চেয়ে 0F6হয়ে #00FF66না #000F06
অ্যারন ডুফর

634
@ আরআর: এইচটিএমএলটি ইচ্ছাকৃতভাবে ত্রুটিযুক্ত ইনপুট উপেক্ষা করে তৈরি করা হয়েছে;)
লিলি ব্যালার্ড

59
নির্দিষ্ট স্ট্রিংয়ের জন্য রঙ পেতে আপনি আমার এলোমেলো স্ট্রিংটি সিএসএস রঙ রূপান্তর করতেও ব্যবহার করতে পারেন । এটি জেরেমি গুডেল দ্বারা স্ট্রিংয়ের রঙ গণনা করার 5 টি ধাপের ভিত্তিতে ।
টিমপাইট্রস্কি

15
শব্দার্থবিজ্ঞানের জন্য একটি লুকানো সুযোগ? আপনি এটি দিয়ে কিছু ত্রুটি পৃষ্ঠাগুলি তৈরি করতে পারেন: <body bgcolor=error><h1 style=text-align:center>Error: Not Found<h1></span>আপনি আনোথ ব্যাকগ্রাউন্ডের সাথে একটি ডিভ যোগ করতে পারেন বা এর মতো কিছু, সুতরাং এটি নান্দনিকভাবে মর্মাহত নয়।
থেরোট

32
@ থেরাটটিও bgcolor="success"একটি দুর্দান্ত সবুজ। মজার বিষয় হল, কেউ সিএসএস অ্যাট্রিবিউট / মান নির্বাচনকারী (যেমন, td[bgcolor="chucknorris"] {...}) ব্যবহার করে এই রঙগুলিকে ওভাররাইড করতে পারে
ডাইসকোগ

970

আমি অসম্মতি করার জন্য দুঃখিত, কিন্তু একটি উত্তরাধিকার রঙের মান পোস্ট করেছে পার্স জন্য নিয়ম অনুযায়ী @Yuhong বাও , chucknorrisসমার্থক করেনা #CC0000, বরং করার #C00000, লাল একটি অনুরূপ কিন্তু কিছুটা ভিন্ন রঙ। আমি এটি যাচাই করতে ফায়ারফক্স কালারজিলা অ্যাড-অন ব্যবহার করেছি ।

বিধি অনুসারে:

  • স্ট্রিংটিকে 0 এর যোগ করে 3 এর একাধিক দৈর্ঘ্য করুন: chucknorris0
  • স্ট্রিংটি 3 টি সমান দৈর্ঘ্যের স্ট্রিংগুলিতে আলাদা করুন: chuc knor ris0
  • প্রতিটি স্ট্রিংকে 2 টি অক্ষরে কাটা: ch kn ri
  • হেক্স মানগুলি রাখুন এবং যেখানে প্রয়োজন সেখানে 0 যুক্ত করুন: C0 00 00

নিম্নলিখিত স্ট্রিংগুলিকে সঠিকভাবে ব্যাখ্যা করতে আমি এই বিধিগুলি ব্যবহার করতে সক্ষম হয়েছি:

  • LuckyCharms
  • Luck
  • LuckBeALady
  • LuckBeALadyTonight
  • GangnamStyle

আপডেট: মূল উত্তরদাতারা যারা বলেছিলেন যে রঙটি তখন #CC0000থেকেই সংশোধনটি অন্তর্ভুক্ত করার জন্য তাদের উত্তরগুলি সম্পাদনা করেছে।


86
আমি এটিকে বুঝতে পেরেছি, আমি কিছু পার্সিং নির্দেশাবলীর ভুল ব্যাখ্যা করেছি: "অ্যাডামলভাইন" = "অ্যাডা 100e000e" = "অ্যাডা 100e000e00" = "অ্যাডা 0e00 0e00" = "অ্যাড 0 ই 0 ই" - পারফেক্ট !!
জেরেমি গুডেল

17
আপনি যদি আগ্রহী হন তবে আমি আজ পোস্ট করা একই জাতীয় প্রশ্নে 5-পদক্ষেপের অ্যালগরিদমকে আপডেট হিসাবে পোস্ট করেছি: স্ট্যাকওভারফ্লো
জেরেমি গুডেল

18
@ টিমপিট্রাস্কি এলোমেলো রঙের নামের জন্য এই অবিশ্বাস্য ডেমো সরঞ্জামটি তৈরি করেছে। কেবল এখানে যান: randomstringtocsscolor.com এবং বাক্সে ক্লিক করুন এবং "চকনোরিস" টাইপ করুন।
জেরেমি গুডেল

4
adamlevinejsfiddle.net/LdyZ8/2959 অনুসারে কাজ করে তবে যে অক্ষরগুলিতে ada00e000eপ্যাড করা হয় ada00e000e00তা ব্লক করে দেওয়া হয় তবে এরপরে [ad]a0[0e]00[0e]00jsfiddle এ প্রদর্শিত অ্যাড0e0e তৈরির আদর্শ HX 6 ডিজিটের মান পর্যন্ত কমিয়ে দেওয়া হয় ।
মার্টিন

3
এটি উত্তম হবে যদি এই উত্তরটিতে কেবল বর্তমান অবস্থা থাকে - এই উত্তরের ইতিহাস এবং অন্যান্য উত্তরগুলি সংক্ষিপ্তসারগুলি এবং / অথবা মন্তব্যগুলির মধ্যে অন্তর্ভুক্ত।
পিটার মর্টেনসেন

397

বেশিরভাগ ব্রাউজারগুলি কেবল আপনার রঙের স্ট্রিংয়ে কোনও নন-হেক্স মানকে উপেক্ষা করবে এবং শূন্যের সাথে নন-হেক্স সংখ্যার পরিবর্তিত করবে।

ChuCknorrisঅনুবাদ c00c0000000। এই মুহুর্তে, ব্রাউজার তিন সমান বিভাগে স্ট্রিং ভাগ করে নেব, যা নির্দেশ রেড , সবুজ এবং নীল মান: c00c 0000 0000। প্রতিটি বিভাগের অতিরিক্ত বিট উপেক্ষা করা হবে, যা চূড়ান্ত ফলাফল তৈরি করে #c00000যা একটি লালচে বর্ণ।

দ্রষ্টব্য, এটি CSS রঙ পার্সিংয়ের ক্ষেত্রে প্রযোজ্য নয় , যা CSS মান অনুসরণ করে।

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


7
যদিও আমি এখনও কৌতূহলী ছিলাম কেন ওপি "সিএসএসে" এবং "এইচটিএমএল" তে না বলেছিলেন - সম্ভবত তারা একটি সুপার পুরাতন ব্রাউজার ব্যবহার করছেন, বা ঠিক ভুল হয়েছে?
মাইক ক্রিস্টেনসেন

7
সুতরাং তিনি সম্ভবত অবজ্ঞাত bgcolorগুণাবলী ব্যবহার করার চেয়ে বেশি ।
animuson

12
অবৈধ অক্ষরগুলি এড়ানো যায় না, সেগুলি 0 হিসাবে গণ্য হবে
আপনার মোডের সাথে ভাল আচরণ করুন

5
(যদিও এই উত্তরটি মৃত হতে পারে) পরামর্শ: তেহ রঙগুলি প্রদর্শনের জন্য ব্যাকগ্রাউন্ড রঙ ব্যবহার করুন। পাঠ্যের রঙ এত ছোট একটি আপেক্ষিক অঞ্চল জুড়ে এটি পার্থক্য বা সাদৃশ্যগুলি দেখতে শক্ত
জো

304

ব্রাউজারটি chucknorrisহেক্স রঙের কোডে রূপান্তরিত করার চেষ্টা করছে , কারণ এটি কোনও বৈধ মান নয়।

  1. ইন chucknorris, ব্যতীত cসমস্ত কিছুই একটি বৈধ হেক্স মান নয়।
  2. সুতরাং এটি রূপান্তরিত হয় c00c00000000
  3. যা # c00000 , লাল রঙের একটি ছায়ায় পরিণত হয়।

এটি প্রধানত ইন্টারনেট এক্সপ্লোরার এবং অপেরা (12) এর সাথে ক্রম (31) এবং ফায়ারফক্স (26) উভয়ই এটিকে এড়ানো বলে মনে হচ্ছে ।

PS বন্ধনীগুলির মধ্যে নম্বরগুলি আমি পরীক্ষিত ব্রাউজার সংস্করণ।

একটি হালকা নোটে

চক নরিস ওয়েব মানের সাথে খাপ খায় না। ওয়েব মান তার সাথে সামঞ্জস্য। # BADA55


295

কারণটি ব্রাউজারটি এটি বুঝতে পারে না এবং কোনওভাবে এটি কী বুঝতে পারে তা অনুবাদ করার চেষ্টা করে এবং এক্ষেত্রে একটি হেক্সাডেসিমাল মান হিসাবে অনুবাদ করার চেষ্টা করুন! ...

chucknorriscহেক্সাডেসিমালে স্বীকৃত চরিত্রটি দিয়ে এটি শুরু হয় , এটি সমস্ত অচেনা অক্ষরগুলিকে রূপান্তর করে 0!

তাই chucknorrisহেক্সাডেসিমেল ফর্ম্যাটে হয়ে দেখুন: c00c00000000অন্যান্য সমস্ত অক্ষর হয়ে 0এবং cদেহাবশেষ তারা কোথায় ...

এখন তাদের জন্য তিনটি ভাগ হয়ে গেছে RGB(লাল, সবুজ, নীল) ... R: c00c, G: 0000, B:0000...

তবে আমরা জানি যে আরজিবিটির জন্য বৈধ হেক্সাডেসিমালটি মাত্র 2 টি অক্ষর, মানে R: c0, G: 00, B:00

সুতরাং আসল ফলাফলটি হ'ল:

bgcolor="#c00000";

আমি আপনার জন্য একটি দ্রুত রেফারেন্স হিসাবে চিত্রের পদক্ষেপগুলি যুক্ত করেছি:

এইচটিএমএল কেন "চকনোরিস" রঙ মনে করে?


23
এটি খুব সুন্দর ব্যাখ্যা: ডি: ডি: ডি
ডোমিনিক বুচার

2
এত বুদ্ধিমান এবং খুব সহজ এবং সোজা সামনের ব্যাখ্যাটি আমি কখনও অনুভব করেছি
সৌরিন ভালা

1
খুব সৃজনশীল উত্তর :)
আহমেদনাওয়াজবুত

222

WHATWG এইচটিএমএল স্পেসে লিগ্যাসির রঙের মানটি পার্স করার জন্য সঠিক অ্যালগরিদম রয়েছে: https://html.spec.whatwg.org/m মাল্টিপেজ / ইনফ্রাস্ট্রাকচার html#rules-for-parsing-a-legacy-colour-value

রঙের স্ট্রিংকে পার্স করার জন্য নেটস্কেপ ক্লাসিক কোডটি মুক্ত উত্স: https://dxr.mozilla.org/classic/source/lib/layout/layimage.c#155

উদাহরণস্বরূপ, লক্ষ্য করুন যে প্রতিটি অক্ষর হেক্স ডিজিট হিসাবে পার্স করা হয়েছে এবং তারপরে ওভারফ্লো পরীক্ষা না করে 32-বিট পূর্ণসংখ্যায় স্থানান্তরিত হবে । শুধুমাত্র আটটি হেক্স ডিজিট 32-বিট পূর্ণসংখ্যায় ফিট করে, এজন্য কেবলমাত্র শেষ 8 টি অক্ষর বিবেচনা করা হয়। হেক্স ডিজিটগুলি 32-বিট পূর্ণসংখ্যায় পার্স করার পরে এগুলি 8-বিট পূর্ণ সংখ্যায় 16 বিভক্ত করে 8-বিটের মধ্যে ফিট না করে তাদের কেটে ফেলা হয়, যার কারণে নেতৃস্থানীয় শূন্যগুলি উপেক্ষা করা হয়।

আপডেট: এই কোডটি অনুমে বর্ণিত সংখ্যার সাথে ঠিক মেলে না, তবে কয়েকটি লাইন কোডের একমাত্র পার্থক্য। আমি মনে করি এটি লাইনগুলি যুক্ত হয়েছিল (নেটস্কেপ 4 এ):

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

ধন্যবাদ, আপনি আমাকে পুরানো নেটস্কেপ উত্স কোড যেখানে দেখিয়েছেন ... এটি কেন খুঁজে পাওয়া এত কঠিন?
kb1000

202

উত্তর:

  • ব্রাউজার চকনোরিসকে হেক্সাডেসিমাল মান হিসাবে রূপান্তরিত করার চেষ্টা করবে ।
  • যেহেতু চকনোরিসেc একমাত্র বৈধ হেক্স অক্ষর , তাই মানটি এই রূপে পরিবর্তিত হয়: ( সমস্ত মান যা অবৈধ ছিল তার জন্য 0 )।c00c00000000
  • ব্রাউজার তারপর 3 groupds মধ্যে ফলাফলের ভাগ: Red = c00c, Green = 0000, Blue = 0000
  • যেহেতু এইচটিএমএল ব্যাকগ্রাউন্ডের জন্য বৈধ হেক্স মানগুলিতে প্রতিটি বর্ণের ( r , g , b ) জন্য কেবল 2 ডিজিট থাকে , তাই শেষ দুটি সংখ্যা প্রতিটি গ্রুপ থেকে বিচ্ছিন্ন হয়, যার একটি rgb মান c00000ইট-লালচে টোন রঙ হয়।

22

চকনোরিস সি দিয়ে শুরু হয় এবং ব্রাউজারটি এটিকে হেক্সাডেসিমাল মান হিসাবে পড়ে।

কারণ A, B, C, D, E, এবং F হেক্সাডেসিমেলের অক্ষর

ব্রাউজারটি chucknorrisএকটি হেক্সাডেসিমাল মানকে রূপান্তর করে C00C00000000

তারপরে C00C00000000হেক্সাডেসিমাল মানটি আরজিবি ফর্ম্যাটে রূপান্তরিত হয় (3 দ্বারা বিভক্ত):

C00C00000000 => R:C00C, G:0000, B:0000

রঙটি নির্দেশ করতে ব্রাউজারের কেবল দুটি অঙ্কের প্রয়োজন:

R:C00C, G:0000, B:0000=> R:C0, G:00, B:00=>C00000

অবশেষে, bgcolor = C00000ওয়েব ব্রাউজারে প্রদর্শন করুন ।

এখানে এটি প্রদর্শিত একটি উদাহরণ:

<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>


15

উত্তরাধিকার বৈশিষ্ট্যাবলী উপর রং পার্স জন্য নিয়ম বিদ্যমান উত্তর উল্লেখিত তুলনায় অতিরিক্ত পদক্ষেপ জড়িত। 2 সংখ্যার অংশে ছাঁটাই উপাদানটি বর্ণিত হয়েছে:

  1. শেষ 8 বাদে সমস্ত অক্ষর ত্যাগ করুন
  2. নেতৃস্থানীয় শূন্যগুলি একে একে ত্যাগ করুন যতক্ষণ না সমস্ত উপাদানগুলির নেতৃত্ব শূন্য থাকে
  3. প্রথম 2 বাদে সমস্ত অক্ষর ত্যাগ করুন

কিছু উদাহরণ:

oooFoooFoooF
000F 000F 000F                <- replace, pad and chunk
0F 0F 0F                      <- leading zeros truncated
0F 0F 0F                      <- truncated to 2 characters from right

oooFooFFoFFF
000F 00FF 0FFF                <- replace, pad and chunk
00F 0FF FFF                   <- leading zeros truncated
00 0F FF                      <- truncated to 2 characters from right

ABCooooooABCooooooABCoooooo
ABC000000 ABC000000 ABC000000 <- replace, pad and chunk
BC000000 BC000000 BC000000    <- truncated to 8 characters from left
BC BC BC                      <- truncated to 2 characters from right

AoCooooooAoCooooooAoCoooooo
A0C000000 A0C000000 A0C000000 <- replace, pad and chunk
0C000000 0C000000 0C000000    <- truncated to 8 characters from left
C000000 C000000 C000000       <- leading zeros truncated
C0 C0 C0                      <- truncated to 2 characters from right

নীচে অ্যালগরিদমের আংশিক প্রয়োগ রয়েছে। এটি ত্রুটি বা মামলাগুলি পরিচালনা করে না যেখানে ব্যবহারকারী কোনও বৈধ রঙ প্রবেশ করে en

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.