এইচটিএমএল টেবিল তৈরি ও ডাটা বিন্যাস
এইচটিএমএল টেবিল তৈরি, সেল মার্জ করা (Rowspan, Colspan), এবং টেবিল ফরম্যাটিং নিয়ে বিস্তারিত আলোচনা। পরীক্ষার জন্য অত্যন্ত গুরুত্বপূর্ণ টপিক।
এইচটিএমএল টেবিল তৈরি ও ডাটা বিন্যাস
- এইচটিএমএল টেবিল তৈরি ও ডাটা বিন্যাস
- তথ্য যখন সাজানো থাকে...
- টেবিলের মৌলিক ট্যাগ পরিচিতি
- একটি সাধারণ টেবিল তৈরি (কোড ডেমো)
- টেবিলের সৌন্দর্য বৃদ্ধি: অ্যাট্রিবিউটস
- Cellpadding বনাম Cellspacing
- Colspan (কলাম মার্জ করা)
- Rowspan (সারি মার্জ করা)
- জটিল টেবিল সমাধান: ব্যবহারিক উদাহরণ
- টেবিলের গঠন: thead, tbody, tfoot
- নিজে করি: প্র্যাকটিস চ্যালেঞ্জ
- সারসংক্ষেপ ও মনে রাখার টিপস
- ধন্যবাদ
এইচটিএমএল টেবিল তৈরি ও ডাটা বিন্যাস
দৈনন্দিন জীবনে আমরা তথ্যের তালিকা দেখার জন্য প্রায়ই টেবিল বা সারণি ব্যবহার করি। ক্রিকেট খেলার স্কোরবোর্ড, পরীক্ষার রুটিন, বা ক্লাসের রেজাল্ট শিট—সবই টেবিল আকারে সাজানো থাকে। ওয়েবসাইটের সৌন্দর্য ও তথ্যের সঠিক উপস্থাপনার জন্য এইচটিএমএল (HTML) টেবিল অত্যন্ত গুরুত্বপূর্ণ। এইচএসসির ব্যবহারিক ও তত্ত্বীয় পরীক্ষার জন্য এই টপিকটি অপরিহার্য, কারণ এখান থেকে প্রতি বছরই প্রশ্ন আসে।
লেকচারে আমরা টেবিল তৈরির বেসিক বিষয়গুলো দেখেছি। এই পাঠে আমরা সেই ধারণাগুলোকে পরীক্ষার খাতার উপযোগী করে সাজাব এবং জটিল টেবিল (যেমন সেল মার্জ করা) সমাধানের সঠিক কৌশল শিখব।
টেবিলের মৌলিক গঠন ও ট্যাগসমূহ
এইচটিএমএল-এ একটি পূর্ণাঙ্গ টেবিল তৈরি করতে মূলত ৫টি প্রধান ট্যাগ ব্যবহার করা হয়। টেবিল তৈরির সময় মনে রাখতে হবে যে, এইচটিএমএল টেবিল সবসময় সারি (Row) ভিত্তিক হয়। অর্থাৎ, আগে সারি তৈরি করতে হয়, তারপর সেই সারির ভেতরে ডেটা বা কলাম বসাতে হয়।
সংজ্ঞা (Definition): <table> — এইচটিএমএল ডকুমেন্টে টেবিল তৈরি বা সংজ্ঞায়িত করার জন্য যে ট্যাগ ব্যবহার করা হয়, তাকে <table> ট্যাগ বলে। এটি একটি কন্টেইনার ট্যাগ যা টেবিলের শুরু ও শেষ নির্দেশ করে।
প্রধান ট্যাগগুলোর পরিচিতি
<table>: পুরো টেবিলের ধারক বা কন্টেইনার।<tr>(Table Row): টেবিলের প্রতিটি আনুভূমিক সারি তৈরি করে।<th>(Table Header): টেবিলের শিরোনাম বা হেডিং সেল তৈরি করে। এর ভেতরের লেখা ডিফল্টভাবে বোল্ড (Bold) এবং মাঝখানে (Center) থাকে।<td>(Table Data): টেবিলের সাধারণ তথ্যের সেল তৈরি করে। এর ভেতরের লেখা নরমাল (Normal) এবং বামে (Left Align) থাকে।<caption>: টেবিলের শিরোনাম বা নাম দেওয়ার জন্য ব্যবহৃত হয় (যেমন: "HSC Result Sheet")। এটি<table>ট্যাগের ঠিক পরেই বসাতে হয়।
গুরুত্বপূর্ণ (Important):
- এইচটিএমএল-এ সরাসরি কলাম তৈরির কোনো ট্যাগ নেই। <tr> এর ভেতরে <td> বা <th> এর সংখ্যাই কলাম নির্ধারণ করে।
- <th> এবং <td> এর মধ্যে মূল পার্থক্য হলো তাদের ডিফল্ট ফরম্যাটিং বা দৃশ্যমান রূপ।
টেবিলের অ্যাট্রিবিউটস: বর্ডার ও এলাইনমেন্ট
শুধুমাত্র ট্যাগ ব্যবহার করে টেবিল তৈরি করলে অনেক সময় বর্ডার বা দাগ দেখা যায় না। টেবিলকে দৃশ্যমান ও সুন্দর করার জন্য <table> ট্যাগের সাথে কিছু অ্যাট্রিবিউট ব্যবহার করতে হয়।
১. Border (বর্ডার)
টেবিলের চারপাশে এবং সেলের বর্ডার দেখানোর জন্য এটি ব্যবহৃত হয়।
- সিনট্যাক্স: <table border="1">
- ব্যাখ্যা: border="1" দিলে চিকন বর্ডার আসবে। মান যত বাড়াবে (যেমন 5 বা 10), বাইরের বর্ডার তত মোটা হবে। যদি border="0" দেওয়া হয় বা অ্যাট্রিবিউটটি না লেখা হয়, তবে টেবিলের কোনো দাগ দেখা যাবে না।
২. Width (প্রস্থ)
টেবিলটি ব্রাউজারের কতটা জায়গা জুড়ে থাকবে তা নির্ধারণ করে। এটি দুইভাবে লেখা যায়:
- পিক্সেল (Pixel): width="500" (নির্দিষ্ট মাপ, স্ক্রিন ছোট-বড় হলে বদলাবে না)।
- শতাংশ (Percentage): width="80%" (ব্রাউজারের উইন্ডোর ৮০% জায়গা নেবে, যা রেস্পন্সিভ ডিজাইনের জন্য ভালো)।
৩. Align (এলাইন)
টেবিলকে পেজের মাঝখানে বা ডানে-বামে সরানোর জন্য ব্যবহৃত হয়।
- সিনট্যাক্স: <table align="center">
পরীক্ষার টিপস (Exam Tip): পরীক্ষায় যদি টেবিলের মাপ নির্দিষ্ট করে দেওয়া না থাকে, তবে width বা height ব্যবহার না করাই ভালো। তবে টেবিলকে মাঝখানে নিতে হলে align="center" ব্যবহার করা নিরাপদ।
Cellpadding এবং Cellspacing এর বিভ্রান্তি নিরসন
শিক্ষার্থীরা প্রায়ই cellpadding এবং cellspacing এর মধ্যে গুলিয়ে ফেলে। নিচের চিত্র এবং ছকটি লক্ষ্য করো।
Cellpadding: টেবিলের সেলের বর্ডার বা সীমানা থেকে সেলের ভেতরের কনটেন্ট বা তথ্যের মধ্যবর্তী ফাঁকা স্থান নির্ধারণের জন্য যে অ্যাট্রিবিউট ব্যবহৃত হয়। এটি সেলের ভেতরের জায়গা বাড়ায় (যেমন: লেখার চারপাশে প্যাডিং দেওয়া)।
Cellspacing: টেবিলের পাশাপাশি বা উপর-নিচ অবস্থিত দুটি সেলের মধ্যবর্তী ফাঁকা স্থান নির্ধারণের অ্যাট্রিবিউট। এটি দুইটি সেলের মাঝখানের দূরত্ব বাড়ায়।
তুলনামূলক পার্থক্য
| বৈশিষ্ট্য | Cellpadding | Cellspacing |
|---|---|---|
| অবস্থান | সেলের ভেতরের দূরত্ব | সেলের বাইরের দূরত্ব |
| কাজ | কনটেন্ট ও বর্ডারের মাঝের ফাঁকা জায়গা তৈরি করে | দুটি সেলের বর্ডারের মাঝের ফাঁকা জায়গা তৈরি করে |
| ডিফল্ট মান | ব্রাউজার ভেদে ভিন্ন হতে পারে (সাধারণত 1-2px) | সাধারণত 2px |
| মনে রাখার উপায় | প্যাডিং (Padding) = গদি (ভেতরের সুরক্ষা) | স্পেসিং (Spacing) = স্পেস বা দূরত্ব (দুটি বস্তুর মাঝে) |
Rowspan এবং Colspan: অ্যাডভান্সড টেবিল ডিজাইন
পরীক্ষায় সৃজনশীল প্রশ্নে (গ বা ঘ অংশে) প্রায়ই এমন টেবিল দেওয়া হয় যেখানে ঘরগুলো সাধারণ গ্রিডের মতো নয়—কিছু ঘর জোড়া লাগানো থাকে। একে সেল মার্জিং (Cell Merging) বলে। এইচটিএমএল-এ এটি করার জন্য rowspan এবং colspan অ্যাট্রিবিউট ব্যবহৃত হয়।
১. Colspan (Column Span)
যখন একটি সেল বা ঘরকে তার ডানপাশের এক বা একাধিক সেলের সাথে একত্রিত (merge) করার প্রয়োজন হয়, তখন colspan ব্যবহৃত হয়। এটি আনুভূমিকভাবে (Horizontally) জায়গা দখল করে।
- সূত্র: colspan = n (যেখানে n হলো মোট কয়টি কলামের জায়গা দখল করবে)।
- উদাহরণ: <td colspan="2">Total</td>
- ব্যাখ্যা: এই সেলটি নিজের জায়গা + ডানপাশের ১টি সেলের জায়গা নেবে। তাই ডানপাশের ওই <td> ট্যাগটি আর লেখার প্রয়োজন নেই।
২. Rowspan (Row Span)
যখন একটি সেল বা ঘরকে তার নিচের এক বা একাধিক সেলের সাথে একত্রিত করার প্রয়োজন হয়, তখন rowspan ব্যবহৃত হয়। এটি উলম্বভাবে (Vertically) জায়গা দখল করে।
- সূত্র: rowspan = n (যেখানে n হলো মোট কয়টি সারির জায়গা দখল করবে)।
- উদাহরণ: <td rowspan="3">Photo</td>
- ব্যাখ্যা: এই সেলটি নিজের সারি + নিচের ২টি সারির একই পজিশনের জায়গা দখল করবে। তাই নিচের ২টি সারিতে (<tr>-এর ভেতরে) ওই পজিশনের জন্য আর <td> ট্যাগ লেখা যাবে না।
উদাহরণ (Example):
ধরি, একটি টেবিলে ৩টি সারি আছে। প্রথম সারির প্রথম ঘরটি লম্বালম্বি ৩টি সারির জায়গাই নিয়েছে।
কোড লজিক:
১ম সারি (<tr>): <td rowspan="3">...</td> (বাকি ঘরগুলো সাধারণ)
২য় সারি (<tr>): প্রথম ঘরটি লিখব না (কারণ ১ম সারিতেই দখল হয়ে গেছে), শুধু বাকিগুলো লিখব।
৩য় সারি (<tr>): প্রথম ঘরটি লিখব না, শুধু বাকিগুলো লিখব।
টেবিলের সাংগঠনিক ট্যাগ (Semantic Tags)
বড় টেবিল বা বিশেষ প্রয়োজনে টেবিলকে তিনটি অংশে ভাগ করা যায়। এটি ব্রাউজারকে টেবিলের গঠন বুঝতে সাহায্য করে এবং প্রিন্ট করার সময় সুবিধা দেয় (যেমন: প্রতি পেজে হেডার প্রিন্ট হওয়া)।
<thead>: টেবিলের হেডার অংশ বা শিরোনাম ধারণ করে। সাধারণত<tr>ও<th>এর সমন্বয়ে গঠিত হয়।<tbody>: টেবিলের মূল ডেটা বা বডি অংশ ধারণ করে।<tfoot>: টেবিলের ফুটার বা নিচের অংশ (যেমন: মোট যোগফল) ধারণ করে।
পরীক্ষার খাতায় জটিল টেবিল সমাধানের কৌশল (Step-by-Step)
পরীক্ষায় আঁকাবাঁকা বা জটিল টেবিল দেখলে ঘাবড়ানোর কিছু নেই। নিচের ধাপগুলো অনুসরণ করলে নির্ভুল কোড লেখা সম্ভব:
ধাপ ১: কাল্পনিক গ্রিড তৈরি
প্রশ্নে দেওয়া টেবিলের দিকে তাকাও। যদি কোনো ঘর বড় হয় (মার্জ করা), পেন্সিল দিয়ে হালকা করে দাগ টেনে সেটাকে ছোট ছোট সাধারণ ঘরে ভাগ করে নাও। একে "ফ্যান্টম গ্রিড" বলে।
ধাপ ২: সর্বোচ্চ সারি ও কলাম গণনা
এখন গুনো, ওই কাল্পনিক গ্রিড অনুযায়ী টেবিলে সর্বোচ্চ কয়টি সারি (Row) এবং কয়টি কলাম (Column) আছে।
ধাপ ৩: কোড লেখা শুরু
<table> ট্যাগ দিয়ে শুরু করো। এরপর একে একে <tr> শুরু করো।
ধাপ ৪: মার্জ লজিক প্রয়োগ
প্রতিটি সেলে আসার পর প্রশ্ন করো—"এটি কি স্বাভাবিক?"
- যদি স্বাভাবিক হয়: <td>Data</td>
- যদি ডানে বড় হয়: <td colspan="সংখ্যা">Data</td> (এবং ডানপাশের ঘরগুলো স্কিপ করো)।
- যদি নিচে বড় হয়: <td rowspan="সংখ্যা">Data</td> (এবং নিচের সারিতে গিয়ে এই পজিশনের ঘর স্কিপ করো)।
প্রো টিপস (Pro Tip): Rowspan ব্যবহারের সময় সবচেয়ে বেশি ভুল হয়। যখনই rowspan="2" লিখবে, সাথে সাথে মনে রাখবে—"পরের সারিতে (tr-এ) একটা td কম লিখতে হবে।"
সংক্ষিপ্ত সারাংশ (Quick Revision)
একনজরে রিভিশন:
- টেবিল শুরু <table> দিয়ে, সারি <tr> দিয়ে।
- হেডিং এর জন্য <th> (বোল্ড, সেন্টার), ডাটার জন্য <td> (নরমাল, লেফট)।
- বর্ডার দেখতে border="1" দিতে হবে।
- সেলের ভেতরের জায়গা বাড়াতে cellpadding, দুই সেলের মাঝখানের জায়গা বাড়াতে cellspacing।
- ডানে-বামে ঘর জোড়া লাগাতে colspan, উপর-নিচ জোড়া লাগাতে rowspan।
- খালি সেল তৈরি করতে <td> </td> ব্যবহার করা হয়।
গুরুত্বপূর্ণ পরিভাষা (Glossary)
| পরিভাষা (Term) | সংজ্ঞা (Definition) |
|---|---|
| Tag (ট্যাগ) | এইচটিএমএল নির্দেশক যা ব্রাউজারকে বলে দেয় কন্টেন্ট কীভাবে দেখাতে হবে (যেমন <table>)। |
| Attribute (অ্যাট্রিবিউট) | ট্যাগের অতিরিক্ত বৈশিষ্ট্য নির্ধারণকারী অংশ (যেমন border, width)। |
| Merge (মার্জ) | একাধিক সেল বা ঘরকে একত্রিত করে একটিতে রূপান্তর করা। |
| Nesting (নেস্টিং) | একই ট্যাগের ভেতরে অন্য ট্যাগ ব্যবহার করা (যেমন <table> এর ভেতর <tr>)। |
| Caption | টেবিলের পরিচিতিমূলক নাম বা শিরোনাম। |