ভূমিকা
ওয়েব ডেভেলপমেন্টে র্যান্ডম কালার জেনারেট করা একটি সাধারণ টাস্ক। এই আর্টিকেলে হেক্সাডেসিমাল (Hex) কালার কোড (`#RRGGBB`) জেনারেট করার একটি সিম্পল ফাংশন দেখানো হয়েছে।
সম্পূর্ণ কোড
const generateRandomColor = () => {
const keys = '0123456789ABCDEF';
let color = '';
while (color.length < 6) {
const random = Math.floor(Math.random() * 16);
color += keys[random];
}
return `#${color}`;
};
console.log(generateRandomColor()); // #C83343
console.log(generateRandomColor()); // #D9AAF3
console.log(generateRandomColor()); // #9D55CC
console.log(generateRandomColor()); // #28AE22
কোড ব্যাখ্যা
- keys: হেক্স ডিজিটস (0-9, A-F)
- while লুপ: ৬ ক্যারেক্টার পর্যন্ত চালানো
- Math.random() * 16: ০-১৫ এর মধ্যে র্যান্ডম ইন্টিজার
- keys[random]: সংশ্লিষ্ট হেক্স ক্যারেক্টার পিক করা
- #${color}: হেক্স কালার ফরম্যাটে রিটার্ন
আউটপুট (নমুনা)
#C83343
#D9AAF3
#9D55CC
#28AE22
আধুনিক ও উন্নত পদ্ধতিগুলো
১. toString(16) ব্যবহার (সংক্ষিপ্ত)
const generateRandomColor = () =>
'#' + Math.floor(Math.random() * 0xffffff).toString(16).padStart(6, '0');
0xffffff = ১৬৭৭৭২১৫ (২৪-বিট কালারের সর্বোচ্চ মান)। padStart(6, '0') নিশ্চিত করে ৬ ডিজিট থাকে।
২. crypto.getRandomValues() (ক্রিপ্টোগ্রাফিকলি সিকিউর)
const generateSecureRandomColor = () => {
const array = new Uint32Array(1);
crypto.getRandomValues(array);
return '#' + array[0].toString(16).padStart(6, '0');
};
৩. RGB/HSL ফরম্যাটে জেনারেট
const randomRGB = () =>
`rgb(${Math.floor(Math.random()*256)}, ${Math.floor(Math.random()*256)}, ${Math.floor(Math.random()*256)})`;
const randomHSL = () =>
`hsl(${Math.floor(Math.random()*360)}, ${Math.floor(Math.random()*100)}%, 50%)`;
৪. প্রিডিফাইনড কালার প্যালেট থেকে পিক
const palette = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7', '#DDA0DD'];
const randomFromPalette = () => palette[Math.floor(Math.random() * palette.length)];
পারফরম্যান্স তুলনা
| পদ্ধতি | স্পিড | সিকিউরিটি | ব্রাউজার সাপোর্ট |
|---|---|---|---|
| while + keys | মিডিয়াম | নন-ক্রিপ্টো | সব ব্রাউজার |
| toString(16) | ফাস্ট | নন-ক্রিপ্টো | সব ব্রাউজার |
| crypto.getRandomValues | স্লোয়ার | ক্রিপ্টো সিকিউর | মডার্ন ব্রাউজার |
ব্যবহারিক টিপস
- কন্ট্রাস্ট নিশ্চিত করতে: লাইট/ডার্ক ব্যাকগ্রাউন্ডের জন্য লুমিন্যান্স চেক করুন
- আক্সেসিবিলিটি: WCAG কন্ট্রাস্ট রেশিও মেনটেইন করুন
- ক্যাশিং: একই কালার বারবার লাগলে ক্যাশ করুন
- সিডেড র্যান্ডম: টেস্টিং/রিপ্রোডাসিবিলিটির জন্য seedable RNG ব্যবহার করুন
সারাংশ
সিম্পল কেসের জন্য `toString(16) + padStart` সেরা। সিকিউরিটি-ক্রিটিক্যাল অ্যাপের জন্য `crypto.getRandomValues()` ব্যবহার করুন।