پنجشنبه ۲۸ تیر ۱۴۰۳

Thursday, July 18, 2024 GMT +3:30

ایجاد جدول با تگ table در HTML

html-table

از جمله مباحثی که علاوه بر استفاده های عمومی برای حرفه ای ترهای دنیای وب نیز همواره کاربردی بوده مبحث ایجاد جدول در صفحات وب است که خوشبختانه مانند ترسیم جدول در برنامه هایی نظیر Microsoft Word این امکان با کدنویسی در اسناد HTML نیز فراهم شده است، همان طور که در آموزش های گذشته دیدیم برای خلق هر قسمت از صفحات وب با زبان HTML از علائم نشانه گذاری تحت عنوان تگ (Tag) استفاده می شود که در نهایت پس از پردازش توسط مرورگر به شکل عناصر قابل درک برای انسان (متن، تصویر، ویدئو، فرم و...) نمایان می شوند، ایجاد جدول نیز از این قاعده مستثنا نیست و برای آن از تگ استاندارد table استفاده می کنیم، با توجه به تنوع امکانات و پیچیدگی های خاص ایجاد جدول در صفحات وب تگ table به همراه زیر مجموعه ها و ویژگی هایی استفاده می شود که در ادامه در این خصوص مفصل خواهیم گفت.

کاربرد جدول در صفحات وب


جداول در زندگی روزمره کاربردهای زیادی دارند و بسیاری از اطلاعات در فرمت ردیف های سطر (Row) و ستون (Column) مرتبط به هم نمایش داده می شوند، نمایش محتوا در جدول این امکان را می دهد که با سرعت بیشتری اطلاعات پیچیده را تحلیل و به ارتباطات بین آنها پی ببریم و در نهایت به نتیجه مورد نظر برسیم، فلسفه اصلی به کارگیری جداول در صفحات وب نیز از این قاعده مستثنی نیست و برای دسته بندی و نمایش محتوایی که نیاز به سطر و ستون دارند به طور مثال اطلاعات آماری، نمایش نمرات، مقایسه محصولات، داده های تحلیلی و هر چیزی که به اصطلاح جدولی یا Tabular است استفاده می شود، البته به دلیل استحکام ساختار و راحتی کار مدتها از جدول در امر طراحی لایه ها و فرم بندی ظاهر صفحات وب نیز استفاده می شد که امروزه به دلیل معرفی زبان استایل نویسی CSS توصیه می شود از کاربرد جدول بخصوص در طراحی قالب پروژه هایی که به کسب رتبه بهتر در موتورهای جستجو و اصول سئو (SEO دانش بهینه سازی صفحات وب برای موتورهای جستجو) متکی هستند اجتناب کنیم، برای طراحی قالب های جدید تگ های دیگری مانند div گزینه بهتر و توصیه شده است.

ایجاد جدول با تگ table


برای ایجاد جدول در صفحات وب از تگ table استفاده می کنیم که در کنار تگ های زیرمجموعه شامل tr، th و td تکمیل می شود، table از تگ های فرعی دیگری شامل caption، col، colgroup، thead، tbody و tfoot نیز پشتیبانی می کند که هر کدام کاربرد و اثر خاصی دارند، نمونه کد زیر شروع ساختار ایجاد یک جدول در صفحات وب را نمایش می دهد:
<table>
<tr>
<td></td>
</tr>
</table>
هر جدول حداقل باید دارای یک ردیف با تگ tr (مخفف Table Row) باشد که هر ردیف می تواند یک یا چند سلول اطلاعات با تگ td (مخفف Table Data) را شامل شود، به عبارتی از نظر استاندارد کدنویسی تگ table حداقل باید یک تگ tr و یک تگ td در زیرمجموعه خود داشته باشد، علاوه بر تگ ها خاصیت های زیادی را نیز می توان به تگ table و عناصر آن نسبت داد که در ادامه و پیش از بررسی تگ های زیرمجموعه به آنها اشاره می کنیم.
نکته: به این خاصیت ها در اصطلاح برنامه نویسی Attributes گفته می شود، Attribute در واقع صفت های اضافه اند که در تگ های آغازین قابل استفاده هستند و ویژگی ها و انعطاف پذیری بیشتری به تگ مورد نظر می دهند.

خاصیت align


خاصیت align تنظیم کننده موقعیت جدول به صورت افقی در سمت راست، چپ یا وسط صفحه است و با سه مقدار زیر تکمیل می شود:
center: تنظیم جدول در وسط صفحه
left: تنظیم جدول در سمت چپ صفحه
right: تنظیم جدول در سمت راست صفحه
<table border="1" align="right">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
در شیوه های نوین طراحی وب توصیه می شود ویژگی های ظاهری مانند چینش با استایل نویسی CSS تنظیم شوند نه خاصیت های HTML، لذا در این آموزش علاوه بر خاصیت های ذاتی تگ table روش توصیه شده با CSS را هم بررسی خواهیم کرد.
تعریف align برای جدول با استایل CSS (روش توصیه شده):
<style>
#table-1{
    margin-left:auto;
    margin-right:0;
}
</style>
<table id="table-1" border="1">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
برای تنظیم فاصله جدول از گوشه های صفحه نمایش از ویژگی margin در CSS استفاده می کنیم.
نکته: در خصوص خاصیت border در ادامه آموزش حاضر توضیح خواهیم داد.

خاصیت valign


برای تنظیم موقعیت محتوای داخل سلول های جدول به صورت عمودی (vertical) از خاصیت valign برای تگ های th و td استفاده می کنیم، این خاصیت با چند مقدار زیر قابل تنظیم است:
- top (بالا)
- baseline (خط مبنا)
- bottom (پائین)
- middle (وسط)
استفاده از خاصیت valign در مواردی که سلول بیش از یک واحد ارتفاع دارد می تواند کاربردی باشد، مثال:
<table border="1">
<tr>
<td rowspan="2" valign="top">اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
در خصوص خاصیت rowspan در ادامه آموزش با مثال توضیح خواهیم داد.
تعریف valign برای تگ های جدول با استایل CSS (روش توصیه شده):
<style>
#table-1 td {
    vertical-align: top;
}
</style>
<table border="1" id="table-1">
<tr>
<td rowspan="2">اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
برای تنظیم چینش عمودی محتوا در سلول های جدول با CSS از خاصیت vertical-align استفاده می کنیم.

خاصیت background


اگر بخواهیم به جدولمان تصویر پس زمینه اختصاص دهیم خاصیت background برای این منظور در نظر گرفته شده است که مقادیر آن باید با آدرس URL مطلق (Absolute) یا نسبی (Relative) تصویر مورد نظر جایگزین شود، به طور مثال:
<table border="1" background="../background.png">
<tr>
<td>آدرس دهی نسبی</td>
</tr>
</table>
<table background="http://example.com/image/background.png">
<tr>
<td>آدرس دهی مطلق</td>
</tr>
</table>
گفتیم که خاصیت های مربوط به ظاهر عناصر وب را بهتر است با CSS تنظیم کنیم، برای تصویر پس زمینه نیز این حالت صدق می کند.
تنظیم تصویر پس زمینه جدول با CSS (روش توصیه شده):
<style>
#table-1{
    background: url('../image/background.png') no-repeat;
}
</style>
<table id="table-1" border="1">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
نکته: در آدرس دهی نسبی استفاده از دو نقطه (..) به این معنی است که محل قرارگیری فایل تصویر در دایرکتوری سطح بالاتر از محل قرارگیری فایل HTML است، به فرض اگر در قسمت آدرس بعد از دو نقطه صرفا نام فایل تصویر درج شود:
../background.png
نمونه ساختار:
template/background.png
template/publish/index.html
یعنی تصویر یک دایرکتوری بالاتر از فایل HTML قرار دارد و به همین ترتیب اگر چند دایرکتوری در آدرس باشد:
../../image/background.png
نمونه ساختار:
template/image/background.png
template/include/publish/index.html
به همان تعداد تصویر در دایرکتوری های بالاتر قرار دارد، بر همین اساس اگر از دونقطه استفاده نشود یعنی محل قرارگیری تصویر هم سطح یا پائین تر از محل قرارگیری فایل HTML است:
image/background.png
نمونه ساختار:
template/image/background.png
template/index.html
برای درک بهتر شیوه نسبی می توانیم چند فولدر به شکل ساختارهای بالا ایجاد و آدرس دهی نسبی را تست و بررسی کنیم.

خاصیت bgcolor


علاوه بر تصویر پس زمینه این امکان وجود دارد که رنگ پس زمینه جدول را با خاصیت bgcolor تعیین کنیم، مقادیر خاصیت bgcolor می تواند کدهای رنگی هگز یا نام رنگ مورد نظر باشد، مثال:
<table border="1" bgcolor="#0066cc">
<tr>
<td>تنظیم رنگ با کدهای هگز</td>
</tr>
</table>
<table bgcolor="blue">
<tr>
<td>تنظیم رنگ با نام</td>
</tr>
</table>
تنظیم رنگ پس زمینه جدول با CSS (روش توصیه شده):
<style>
#table-1{
    background: #0066cc;
}
</style>
<table id="table-1" border="1">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
در لینک زیر جدول رنگ های با نام CSS و کد هگز معادل آنها درج شده است که می توانیم برای خاصیت های مربوط به تعیین رنگ از آنها استفاده کنیم:
جدول رنگ های با نام و کد هگز معادل آنها در CSS

خاصیت border


از خاصیت border برای نمایش خط حاشیه جدول و سلول های داخلی می توانیم استفاده کنیم، مقادیر آن به صورت عددی در مقیاس پیکسل تعیین می شود، مثال:
<table border="1">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
نمایش خط حاشیه جدول با CSS (روش توصیه شده):
<style>
#table-1, #table-1 td {
    border: 1px solid;
}
</style>
<table id="table-1">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
دقت کنیم در حالت صرف HTML تعیین مقدار برای خاصیت border به صورت خودکار به تگ هایی مانند td و th سرایت می کند اما در حالت استایل CSS باید این تگ ها را انتخاب (Select) کنیم که بدین منظور از قوانین سلکتور در CSS استفاده می کنیم (به فرض ما تگ td را در کد بالا به این شیوه جهت اعمال استایل انتخاب کرده ایم)، البته در این مرحله قصد ما آموزش CSS نیست و در حد آشنایی اولیه کفایت می کند.

خاصیت bordercolor


خاصیت bordercolor رنگ خط حاشیه جدول و سلول های داخلی آن را مشخص می کند، مقادیر این ویژگی نیز با نام رنگ ها یا کدهای هگز تنظیم می شود، مثال:
<table border="1" bordercolor="#FF6600">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
علاوه بر خاصیت bordercolor می توانیم از خاصیت های bordercolorlight و bordercolordark استفاده کنیم، البته این خاصیت ها به جزء در مرورگر اینترنت اکسپلورر ممکن است در برخی مرورگرها با اشکالاتی همراه باشند یا به خوبی پشتیبانی نشوند، در هر صورت bordercolorlight رنگ زاویه بالایی جدول و bordercolordark رنگ زاویه پائینی آن را تنظیم می کند، مثال:
<table border="1" bordercolor="#FF6600" bordercolorlight="#FF6600" bordercolordark="#FF6600">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
تنظیم رنگ خط حاشیه جدول با CSS (روش توصیه شده):
همانند تنظیم رنگ با استایل CSS برای خاصیت boder این امکان برای خاصیت bordercolor نیز وجود دارد، مثال:
<style>
#table-1, #table-1 td {
    border: 1px solid #FF6600;
}
</style>
<table id="table-1">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
بر خلاف خاصیت های ذاتی HTML که محدود به موارد قراردادی و از قبل تعریف شده هستند، در CSS می توانیم جلوه های متنوع بیشتری به تگ های HTML نسبت دهیم.

خاصیت cellpadding


خاصیت cellpadding در جدول میزان فاصله محتوا از حاشیه سلول را مشخص می کند، مقدار این خاصیت نیز به پیکسل است و هر چه عدد تعیین شده بزرگتر باشد فضای خالی داخلی سلول ها نیز وسیعتر شده و محتوای درون آنها با فاصله بیشتری از حدود دربرگیرنده نمایش داده می شود، مثال:
<table border="1" cellpadding="8">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
تنظیم حاشیه سلول در جدول با CSS (روش توصیه شده):
برای تنظیم میزان حاشیه سلول در جدول با CSS از خاصیت padding استفاده می کنیم.
<style>
#table-1, #table-1 td {
    border: 1px solid #FF6600;
}
#table-1 td {
    padding: 8px;
}
</style>
<table id="table-1">
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
بر خلاف cellpadding که بر تگ های td و th تاثیرگذار است، خاصیت padding را می توان به تگ table نیز نسبت داد.

خاصیت cellspacing


خاصیت cellspacing در جدول میزان فضا و فاصله بین سلول های داخلی از هم و از حاشیه جدول را مشخص می کند، مقادیر این خاصیت نیز به صورت پیکسل تعیین می شود، مثال:
<table border="1" cellpadding="8" cellspacing="12">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
تنظیم فاصله بین سلول ها در جدول با CSS (روش توصیه شده):
برای تنظیم فاصله بین سلول ها در جدول با CSS از خاصیت border-spacing و در صورت نیاز به تنظیمات بیشتر border-collapse استفاده می کنیم.
<style>
#table-1, #table-1 td {
    border: 1px solid #FF6600;
    border-spacing: 12px;
    border-collapse: separate;
}
#table-1 td {
    padding: 8px;
}
</style>
<table id="table-1">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
با خاصیت border-collapse می توانیم تعیین کنیم که تاثیرپذیری خطوط سلول های جدول با هم مشترک (مقدار collapse) باشند یا از هم مستقل (مقدار separate) و در نتیجه کار تفاوت را مشاهده کنیم.

خاصیت height


برای تنظیم ارتفاع کلی جدول از خاصیت height استفاده می کنیم، مقادیر این خاصیت به پیکسل تعیین می شود، مثال:
<table border="1" cellpadding="8" cellspacing="12" height="500">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
تنظیم ارتفاع جدول با CSS (روش توصیه شده):
برای تنظیم ارتفاع کلی جدول با استایل CSS از خاصیت height برای تگ table می توانیم استفاده کنیم.
<style>
#table-1{
    height: 500px;
}
#table-1, #table-1 td {
    border: 1px solid #FF6600;
    border-spacing: 12px;
    border-collapse: separate;
}
#table-1 td {
    padding: 8px;
}
</style>
<table id="table-1">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
در حالت پیش فرض با تغییر ابعاد جدول اندازه سلول های اطلاعات (تگ td) نیز به صورت خودکار تغییر می کند.

خاصیت width


برای تنظیم عرض کلی جدول از خاصیت width استفاده می کنیم، مقادیر این خاصیت نیز به پیکسل تعیین می شود، مثال:
<table border="1" cellpadding="8" cellspacing="12" height="500" width="400">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
تنظیم عرض جدول با CSS (روش توصیه شده):
برای تنظیم عرض کلی جدول با استایل CSS از خاصیت width برای تگ table استفاده می کنیم.
<style>
#table-1{
    height: 500px;
    width: 400px;
}
#table-1, #table-1 td {
    border: 1px solid #FF6600;
    border-spacing: 12px;
    border-collapse: separate;
}
#table-1 td {
    padding: 8px;
}
</style>
<table id="table-1">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
با CSS این امکان وجود دارد که برای تگ های زیرمجموعه table ارتفاع و عرض مجزا تعریف کنیم.

خاصیت rules


خاصیت rules برای تعیین نحوه ترسیم خطوط میانی جدول به کار می رود، در حالت پیش فرض با تعیین خاصیت border در جدول برای تمام سلول ها (تگ td)، ستون ها (تگ th) و ردیف ها (تگ tr) خطوط ترسیم می شود، اما با تعیین ویژگی rules می توانیم نمایش خطوط را سفارشی کنیم، ویژگی rules با چند مقدار زیر تنظیم می شود:
all: خطوط برای تمام سلول ها، ردیف ها و ستون ها ایجاد می شود (حالت پیش فرض).
cols: خطوط صرفا برای ستون ها (تگ th) ترسیم می شود.
rows: خطوط صرفا برای ردیف ها (تگ tr) ترسیم می شود.
groups: خطوط برای گروهی از ردیف ها یا ستون ها ترسیم می شود.
none: هیچ خطی داخل جدول ترسیم نمی شود.
<table border="1" cellpadding="8" cellspacing="12" height="500" width="400" rules="cols">
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>

<table border="1" cellpadding="8" cellspacing="12" height="500" width="400" rules="rows">
<tr>
<td>اطلاعات جدول</td>
</tr>
<tr>
<td>اطلاعات جدول</td>
</tr>
<tr>
<td>اطلاعات جدول</td>
</tr>
</table>
در ادامه آموزش حاضر در خصوص نحوه گروه بندی در جدول و استفاده از مقدار groups توضیح خواهیم داد.

خاصیت title


از خاصیت title برای ایجاد عنوان متنی جدول استفاده می شود، این عنوان در هنگامی که نشانه گر ماوس را داخل جدول ببریم به صورت بالن (Tooltip) ظاهر می شود.
<table border="1" cellpadding="8" cellspacing="12" height="200" width="200" title="عنوانی برای جدول">
<tr>
<td>نشانه گر ماوس را در این قسمت نگهدارید</td>
</tr>
</table>
در نظر گرفتن عنوان برای جدول علاوه بر استفاده های معمول می تواند از نظر سئو (SEO یا بهینه سازی صفحات وب برای موتورهای جستجو) مفید باشد و به فهم بهتر محتوای جدول توسط ربات ها کمک کند.

ایجاد سطر جدید در جدول با تگ tr


از تگ tr (مخفف Table Row) برای ایجاد سطر جدید در جدول استفاده می شود، این تگ یکتا نیست و باید پایان آن بسته شود، تگ tr می تواند شامل یک یا چند تگ th یا td باشد، مثال:
<table border="1">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
با پردازش کدها مرورگر سلول های هر ردیف را در یک راستا نمایش می دهد و ردیف بعدی به یک سطح پایین تر منتقل می شود.

ایجاد سرتیتر در جدول با تگ th


تگ th (مخفف Table Header) در جدول نشانگر سرتیتر است، با استفاده از این تگ می توانیم اطلاعات جدول را در عناوین مختلف دسته بندی کنیم، مثال:
<table border="1">
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
<tr>
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
در حالت معمول هر تگ th به اندازه یک سلول فضا ایجاد می کند و معمولا تعداد سرتیترها به اندازه سلول های ردیف ها در نظر گرفته می شود، البته با خاصیت هایی مانند colspan می توانیم اندازه سرتیتر را بیش از یک سلول تنظیم کنیم (در ادامه خواهیم گفت).

ایجاد سلول در جدول با تگ td


گفتیم تگ table به تنهایی کاربردی ندارد و معمولا باید هر جدول حداقل شامل تگ های tr و td باشد، تگ td (مخفف Table Data) سلول های داخلی جدول را می سازد که دربرگیرنده اطلاعات هستند، مثال:
<table border="1">
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
سه تگ tr، th و td بیشترین کاربرد را در ایجاد جداول با تگ table در صفحات وب دارند.

ایجاد عنوان جدول با تگ caption


از تگ caption برای ایجاد عنوان جدول استفاده می شود، این عنوان در قسمت بالای جدول قرار می گیرد و معرف محتوای آن است، برای هر جدول تنها می توان از یک caption استفاده کرد و این تگ باید بلافاصله بعد از تگ table قرار گیرد، مثال:
<table border="1">
<caption>عنوانی برای جدول</caption>
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>
در اصطلاح برنامه نویسی تگ table (تگ سطح بالاتر) را والد (Parent) و تگ caption (تگ زیرمجموعه) را فرزند (Child) می گویند، caption باید نخستین فرزند والد خود باشد.

گسترش عرض سلول با خاصیت colspan


در حالت معمول هر تگ th یا td در جدول به اندازه یک سلول ستون ابعاد (عرض و ارتفاع) خود را گسترش می دهد، اگر بخواهیم این حالت را تغییر دهیم و به فرض در جهت افقی هر تگ بیش از یک سلول فضا اشغال کند می توانیم از خاصیت colspan برای تگ های th یا td استفاده کنیم، مقادیر این خاصیت نشانگر حداکثر تعداد سلولی است که عرض تگ هدف می تواند به اندازه آن به صورت افقی کشیده شود و در واقع بیش از یک سلول فضا اشغال کند، مثال:
<table border="1">
<tr>
<th colspan="2">تیتر جدول</th>
<th colspan="3">تیتر جدول</th>
</tr>
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
</table>

<table border="1">
<tr>
<th colspan="3">تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
<tr>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
<td>اطلاعات جدول</td>
</tr>
<tr>
<td colspan="4">اطلاعات جدول</td>
</tr>
</table>
نکته: تنظیم colspan با عدد صفر تنها برای ستون های گروهی کاربرد دارد، در خصوص ایجاد گروه در جدول در ادامه خواهیم گفت.

گسترش ارتفاع سلول با خاصیت rowspan


در کنار خاصیت colspan که جهت توسعه عرض تگ های th و td در جداول کاربرد دارد خاصیت دیگری تحت عنوان rowspan برای این تگ ها قابل استفاده است که ارتفاع سلول را گسترش می دهد، با در نظر گرفتن مقادیر عددی برای خاصیت rowspan تگ هدف می تواند به همان اندازه به صورت عمودی تغییر ارتفاع دهد و بیش از یک سلول فضا اشغال کند، مثال:
<table border="1">
<tr>
<th rowspan="2">تیتر جدول</th>
<td>اطلاعات جدول</td>
<td rowspan="2">اطلاعات جدول</td>
</tr>
<tr>
<td>اطلاعات جدول</td>
</tr>
<tr>
<th>تیتر جدول</th>
<td colspan="2">اطلاعات جدول</td>
</tr>
</table>
دقت کنیم خاصیت rowspan به طرفین (در حالت معمول از چپ به راست) و colspan به سمت پائین سلول را گسترش می دهد، میزان تعیین شده برای این گسترش اجباری نیست و در صورتی اعمال می شود که فضای مناسب برای آن وجود داشته باشد و به فرض با تگ دیگری تداخل نکند، به عبارتی مقادیر تعیین شده حداکثر مقدار قابل اعمال هستند، با آزمایش و خطا می توانیم با نحوه اثر این خاصیت ها بر روی عناصر جدول بیشتر آشنا شویم.

گروه بندی ستون ها با تگ colgroup و col


از تگ colgroup و col برای فرمت بندی و استایل دهی به ستون های جدول به صورت تفکیک شده و گروهی استفاده می کنیم، به فرض در یک جدول با سه ستون می توانیم سه فرمت بندی متفاوت داشته باشیم، تگ colgroup و col را باید بلافاصله بعد از تگ table قرار داد (نخستین فرزند والد خود باشد)، از colgroup به همراه تگ یکتای col استفاده می کنیم، مثال:
<table border="1">
<colgroup>
<col style="background-color:#6CF">
<col style="background-color:#CCC">
<col style="background-color:#FC0;">
</colgroup>
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
<tr>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
</tr>
</table>
تنظیم استایل تگ colgroup و col با کلاس های CSS (روش توصیه شده):
<style>
#table-1, #table-1 td {
    border: 1px solid #E5E5E5;
}
#table-1 .col-1 {
    background-color:#6CF;
}
#table-1 .col-2 {
    background-color:#CCC;
}
#table-1 .col-3 {
    background-color:#FC0;
}
</style>

<table id="table-1">
<colgroup>
<col class="col-1">
<col class="col-2">
<col class="col-3">
</colgroup>
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
<tr>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
</tr>
</table>
در هر دو نمونه کد بالا از CSS استفاده کرده ایم منتها روش دوم مبتنی بر استایل غیرخطی و از نظر سئو بهینه تر است (در مرحله فراگیری HTML آشنایی در حد مثال های بالا کفایت می کند، برای گام های بعدی در این خصوص در آموزش های CSS توضیح خواهیم داد).

فرمت بندی با تگ های thead، tbody و tfoot


سه تگ thead، tbody و tfoot شیوه ی دیگری از فرمت بندی را در جداول HTML ارائه می کنند، با thead می توانیم سرتیترها را به صورت گروهی و متمایز نشان دهیم، تگ tbody بر روی عناصر داخلی جدول تاثیر گذار است و tfoot ردیف پایانی یک جدول را تحت تاثیر قرار می دهد، این تگ ها به خودی خود تغییر خاصی ایجاد نمی کنند و باید با ویژگی های CSS تنظیم شوند، مثال:
<table border="1">
<thead style="color:#F60;">
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
</thead>
<tbody style="color:#FC0">
<tr>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
</tr>
</tbody>
<tfoot style="color:#CCC">
<tr>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
</tr>
</tfoot>
</table>
استفاده از CSS برای تنظیم استایل تگ های thead، tbody و tfoot (روش توصیه شده):
<style>
#table-1, #table-1 td {
    border: 1px solid #E5E5E5;
}
#table-1 thead {
    background-color:#6CF;
}
#table-1 tbody {
    background-color:#CCC;
}
#table-1 tfoot {
    background-color:#FC0;
    text-align: center;
}
</style>
<table id="table-1">
<thead>
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
</thead>
<tbody>
<tr>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3">محتوای جدول</td>
</tr>
</tfoot>
</table>
استفاده از این تگ ها اختیاری است و علاوه بر بحث استایل دهی می تواند به خواناتر شدن ساختار کدنویسی جدول مخصوصا برای موتورهای جستجو کمک کننده باشد.

مثال و پیش نمایش آنلاین


برای آشنایی بیشتر با نحوه ترسیم جداول و خواص آنها در صفحات HTML چند جدول متفاوت را در نمونه کدهای زیر ترسیم کرده ایم که می توانیم به صورت آنلاین پیش نمایش را بررسی کنیم.
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ترسیم جداول در صفحات وب</title>
<!-- Webgoo.ir -->
<style>
body {
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 12px;
    direction: rtl;
}
#table-1 {
    width: 400px;
    margin: 0 auto;
    text-align: center;
    border: 1px solid #E5E5E5;
}
#table-1 th {
    background: #CCC;
    border: 1px solid #E5E5E5;
}
#table-1 td {
    padding: 2px;
    margin: 2px;
    border: 1px solid #E5E5E5;
}
#table-2 {
    width: 400px;
    margin: auto 0 auto auto;
    text-align: center;
    border: 1px solid #E5E5E5;
}
#table-2 th {
    background: #CCC;
    border: 1px solid #E5E5E5;
}
#table-2 td {
    padding: 2px;
    margin: 2px;
    border: 1px solid #E5E5E5;
}
#table-3 {
    width: 400px;
    margin: auto auto auto 0;
    text-align: center;
    border: 1px solid #E5E5E5;
}
#table-3 th {
    background: #CCC;
    border: 1px solid #E5E5E5;
}
#table-3 td {
    padding: 2px;
    margin: 2px;
    border: 1px solid #E5E5E5;
}
#table-4 {
    width: 400px;
    margin: auto 0 auto auto;
    text-align: center;
    border: 1px solid #E5E5E5;
}
#table-4 th {
    background: #CCC;
    border: 1px solid #E5E5E5;
}
#table-4 td {
    padding: 2px;
    margin: 2px;
    border: 1px solid #E5E5E5;
}
.col-1 {
    background-color:#6CF;
}
.col-2 {
    background-color:#CF0;
}
.col-3 {
    background-color:#FC0;
}
.clear {
   width: 100%;
   clear: both;
}
</style>
</head>
<body>
<!-- جدول شماره 1 -->
<table id="table-1">
<caption>
جدول شماره 1
</caption>
<tr>
<th colspan="2">تیتر th colspan</th>
<th>تیتر th</th>
</tr>
<tr>
<td>سلول td 1</td>
<td>سلول td 2</td>
<td>سلول td 3</td>
</tr>
<tr>
<td>سلول td 4</td>
<td>سلول td 5</td>
<td>سلول td 6</td>
</tr>
</table>
<!-- جدول شماره 2 -->
<table id="table-2">
<caption>
جدول شماره 2
</caption>
<colgroup>
<col class="col-1">
<col class="col-2">
<col class="col-3">
</colgroup>
<tr>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
<th>تیتر جدول</th>
</tr>
<tr>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
</tr>
<tr>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
<td>محتوای جدول</td>
</tr>
</table>
<!-- جدول شماره 3 -->
<table id="table-3">
<caption>
جدول شماره 3
</caption>
<tr>
<th class="col-1">تیتر th</th>
<th class="col-1">تیتر th</th>
<th class="col-1" rowspan="3">تیتر th rowspan</th>
</tr>
<tr>
<td>سلول 1</td>
<td>سلول 2</td>
</tr>
<tr>
<td>سلول 3</td>
<td>سلول 4</td>
</tr>
</table>
<div class="clear"></div>
<!-- جدول شماره 4 -->
<table id="table-4">
<caption>
جدول شماره 4
</caption>
<tr>
<th>تیتر 1</th>
<td class="col-1">سلول 1</td>
<td class="col-1">سلول 2</td>
</tr>
<tr>
<th>تیتر 2</th>
<td class="col-2">سلول 3</td>
<td class="col-2">سلول 4</td>
</tr>
<tr>
<th>تیتر 3</th>
<td class="col-3">سلول 5</td>
<td class="col-3">سلول 6</td>
</tr>
</table>
</body>
</html>
پیش نمایش آنلاین
دسته بندی: آموزش مقدماتی » HTML
related مطالب بیشتر:
متاتگ ها (Meta Tags) و کاربرد آنها در صفحات وب (HTML)
لایه بندی در HTML با تگ div و span
کار با تگ فرم (form) در HTML
کاربرد تگ img و نمایش تصاویر در HTML
آشنایی با مفهوم Semantic در HTML
دیدگاه
more ۳۸ دیدگاه برای این مطلب ارسال شده است.
more دیدگاه جدید بر اساس تاریخ ارسال در انتهای دیدگاه های موجود نمایش داده می شود.
محمد محمودی
۰۰:۳۸ ۱۳۹۲/۰۲/۰۶
این آموزشی خوب همراه با توضیحی خوب بود. اگر آموزش کامل html5 و css3 رو به صورت pdf بتونید به ایمیلم بفرستید ممنون میشم.
متاسفانه امکان ارسال آموزش به ایمیل وجود ندارد، مطالب صرفا از طریق سایت منتشر می شوند.
حسام
۱۸:۱۹ ۱۳۹۲/۰۴/۰۴
سلام
خسته نباشيد
من مي خوام يه همچين جدولي درست كنم
راهنماييم مي كنيد؟
http://8pic.ir/images/68899477069823482367.png
در آموزش به طور کامل نحوه طراحی جدول و استفاده از خاصیت ها توضیح داده شده، به طور مثال در پیش نمایش، جدول شماره 1 تقریبا همان چیزی است که نیاز شما است، ضمن اینکه برای سفارشی سازی ظاهری باید با CSS آشنایی داشته باشید.
مجتبی
۱۷:۲۷ ۱۳۹۲/۰۹/۱۵
سلام
من ویژگی colspan رو نفهمیدم
میتونید راهنماییم کنید؟
لطفا نمونه کدهایی که در آموزش (زیر توضیحات colspan و rowspan) آمده را در یک فایل HTML قرار داده و آن را تست کنید.
مجتبی
۱۷:۲۲ ۱۳۹۲/۰۹/۱۸
سلام
ویژگی rules برای چیست و چه موقع هایی استفاده می شود؟
لطفا آموزش را مطالعه کنید، در حد توان کامل توضیح داده شده!
۱۲:۳۲ ۱۳۹۲/۱۰/۰۳
واقعا کامل ترین آموزش html بود خیلی ممنون
مریم
۰۱:۲۶ ۱۳۹۲/۱۰/۲۵
کامل بود. مرسی
سجاد
۰۹:۳۱ ۱۳۹۲/۱۱/۱۴
سلام؛
ضمن تشکر از مطالب بسیار خوب و جامع شما، سوالی داشتم ...
در قسمت تگ <th> خاصیتی به نام bgcolor را معرفی کردید، برای رنگ پس زمینه ی سلول! این کد در صفحه ی HTML معمولی - نوت پد و تبدیل آن به web page - جواب می دهد، اما در برنامه ی Visual Studio 2013 این کد ناشناخته است! مشکل از کجاست ؟
با تشکر ...
خاصیت مذکور استاندارد HTML است و ارتباطی به سایر موارد ندارد، تنها در صورتی قابل استفاده است که خروجی شما HTML باشد یا اینکه از استاندارد آن پیروی کند.
نسرین رفعتی
۱۵:۰۱ ۱۳۹۲/۱۱/۱۵
سلام من میخوام برای جدول عکس پس زمینه بذارم عکسم هم در همان مسیر فایل اصلیم هست مگه نباید اول اسم عکس
./
را بذارم پس چرا عکس رو نشون نمیده؟
اگر عکس در کنار فایل HTML است، نیاز به استفاده از علامت دایرکتوری بالاتر نیست (چون تصویر در دایرکتوری بالاتر نیست!)، لذا کافی است نام تصویر را (به صورت کامل و با فرمت) استفاده کنید.
حسن
۲۳:۲۶ ۱۳۹۲/۱۱/۲۳
سلام خسته نباشید!
من یک table دارم با دو ستون ، در ستون سمت راست مطالب زیادی هست ولی در ستون سمت چپ فقط 1 مطلب قرار دارد!
بدلیل وجود مطالب زیاد در ستون سمت راست ارتفاع جدول زیاد می شود و مطلبی که در ستون سمت چپ قرار دارد ، در وسط ستون سمت چپ قرار می گیرد!
چیکار کنم که مطلب موجود در ستون سمت چپ هم از بالا شروع شود و در وسط ستون قرار نگیرد!
در صورتی که با CSS آشنایی داشته باشید می توانید از خاصیت vertical-align با مقادیر top استفاده کنید، در غیر این صورت تگ td را مطابق نمونه زیر تنظیم کنید:
<td valign="top"></td>
مهدی
۱۴:۴۷ ۱۳۹۲/۱۲/۰۹
خیلی عالی و کامل ممنون
مهدی
۱۶:۲۵ ۱۳۹۳/۰۱/۰۴
سلام
آیا امکانش هست با استفاده از table فضای مورد نظر عناصر سایتمون را مشخص کنیم و بعد مقدار border=0 قرار بدیم ؟ اینکار تو بهینه سازی سایتمون تاثیر نمیزاره؟
بهتر است به جای table از بلاک های div برای فرمت بندی صفحات HTML استفاده کنید، امروزه جدول کاربردهای خاص خود (از جمله ارائه اطلاعات آماری و جدول بندی شده) را دارد و نباید در طراحی صفحه وب استفاده شود، سعی کنید برای طراحی وب CSS را یاد بگیرید.
حسین
۱۵:۱۲ ۱۳۹۳/۰۲/۰۲
نمی شه پی دی افش رو هم بزارید تا هی کپی پیست نکنیم.
مطالب جهت یادگیری است نه کپی پیست؟! :-)
اگر منظور مشاهده آفلاین است، می توانید صفحه را ذخیره کنید (در آینده امکانی برای پرینت و ذخیره مقاله به صورت مستقیم فراهم خواهد شد).
محمد
۱۴:۵۹ ۱۳۹۳/۰۸/۱۰
اسم اینجور کد نویسی چیه؟ منظورم اینه که کدها داخل یک فیلد هستش مثلا تو زبان فارسی اگه بخوای کدها رو همینجوری بنویسی حروف انگلیسی قاطی پاتی میشه / اسم این ترفند چیه ؟؟؟ :))
این ترفند نیست دوست گرامی!
باید به تگ pre در HTML خاصیت direction:ltr و استایل CSS دلخواه اختصاص دهید!
۲۰:۴۲ ۱۳۹۳/۱۰/۲۳
سلام خسته نباشید. من 2 جدول با تگ های td ایجاد کردم جدول شماره یک رو چپ قرار دادم حالا میخوام جدول شماره 2 رو وسط و هم خط جدول 1 قرار بدم. چه طور میتونم این کار رو بکنم.
اینو ببینید مشکلم اینه
http://www.kordavang.ir/music/ghaleb
- نکته اول اینکه طراحی قالب وب با جدول روشی منسوخ شده است و نباید دیگر استفاده شود! از جدول صرفا برای نمایش آمار و اطلاعات درون محتوایی می توان استفاده کرد، به جای جدول از بلاک های div و استایل CSS استفاده کنید.
- نکته دوم اینکه ظاهرا تگ های جدول را با تگ div تلفیق کرده اید، در این صورت باید با CSS آشنا باشید تا بتوانید استایل inline به بلاک ها اختصاص دهید و عرض آنها را طوری تنظیم کنید که در یک خط باشند.
نتیجه: از جدول برای فرمت بندی قالب وب استفاده نکنید، سعی کنید استایل نویسی CSS را در کنار کار با بلاک های div فرا بگیرید.
مهدی
۱۱:۱۳ ۱۳۹۳/۱۲/۱۷
سلام .خسته نباشید
من از تگ table استفاده میکنم اما نتیجه در مرورگر مشاهده نمیشود . مشکل از کجاست لطفا راهنمایی کنید . مرسی!!!!!
نیاز به بررسی سورس صفحات شما است! لطفا آدرس نمونه صفحات یا فایل هایتان را درج کنید.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
3 × 4
20 × 20
=
آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
سیدعباسی
با تشکر از شما خیلی ممنون مشکلم درست شد فقط یه مشکل دارم چطوری می تونم با php متنی که می نویسم یه قسمت...
۱۴۰۳/۰۴/۲۶

پرتو
سلام ببخشید مزاحم میشم جواب سوال من کو؟
۱۴۰۳/۰۴/۲۵

سیدعباسی
ببخشید برای سوال و کد قبلی که براتون نوشتم میخوام با کد قبلی یک لینک رو بررسی کنم بعد عکسهای اون مطلب رو پیدا کنم...
۱۴۰۳/۰۴/۲۵

سیدعباسی
با تشکر از شما متوجه شدم با این کد چطوری میتونم عکس یک مطلب رو دربیارم و لینکش رو جدا کنم؟ روی کد...
۱۴۰۳/۰۴/۲۵

سیدعباسی
سلام من دو روز پیش یه کد براتون فرستادم واسه ارسال متن به تلگرام اونو درست کردم فقط این کد ازش می خوام...
۱۴۰۳/۰۴/۲۴

سیدعباسی
با سلام من مطالب سایتم رو با این تابع به تلگرام ارسال می کنم فقط مشکلی که باهاش دارم اینکه هیچ تگی رو قبول...
۱۴۰۳/۰۴/۲۲

سارا اکبری
لطفا کد کپچا رو درست کنید هر چی کپچا رو میزنیم میگه اشتباهه حتما باید کپچا رو دستی خودمون رو دکمش بزنیم رفرش بشه بعد...
۱۴۰۳/۰۴/۲۱

سارا اکبری
سلام استاد عزیز وقت بخیر بنده ی تعداد افراد انلاین ساده نوشتم ببینید برای پروژه های بزرگ اوکیه و مشکلی پیش نمیاد ؟...
۱۴۰۳/۰۴/۲۱

پرتو
سلام خوبید؟ خسته نباشید ببخشید مزاحم میشم ممنون از جوابتون راستش بعضی وقتا از بس سوالاتم زیاده روم نمیشه ازتون بپرسم مثل امشب که چیکار...
۱۴۰۳/۰۳/۱۳

پرتو
سلام خوبین؟ خسته نباشید یه سوال من منوی سمت راست قالبم نوشته هاش چسبیده به بردر باید چیکار کنم که درست شه؟ یعنی منظورم اینکه...
۱۴۰۳/۰۳/۰۹

پرتو
سلام خوبید؟ بلاکفا باز دچار مشکل شده یا فقط برای من دچار مشکل شده؟ منظورم اینکه خیلی دیر باز میشه و فقط برای فایرفاکس هم...
۱۴۰۳/۰۳/۰۱
  در انتظار بررسی: ۲
 پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.