مطمئنا در سایت های مختلف قسمت هایی را دیده اید که به صورت تب کنار هم قرار گرفته اند. تب ها گزینه ای مناسب برای نمایش بخش های مختلف در یک سایت، در حین فشردگی و زیبایی می باشند. در این مقاله قصد دارم نحوه ی ساخت این نوع تب ها را به کمک CSS و اندکی جاوا اسکریپت آموزش بدم هرچند که نسبتا ساده است اما سعی کردم توضیخات کامل باشد. ناگفته نماند که این مقاله رو  سال قبل نوشتم و در انجمن برنامه نویس منتشر کردم، اما به دلیل اضافه شدن بخش css به سایت تصمیم گرفتم مقاله رو در اینجا هم قرار بدم.
 
tab05

این تب یا سربرگ ها به سادگی توسط تگ های ul-li ساخته می شوند. برای شروع، کد html زیر را که از یک div تشکیل شده و درونش تگ های ul-li هستند در نظر بگیرید:

قصد بر این است که با css کاری کنیم که هر تگ li به یک تب تبدیل شود، بنابراین کد های زیر را در فایل css خود قرار دهید: 

#TabContainer
{
    margin: 30px 250px;
    padding: 0;
}
#TabContainer ul.tab
{
    list-style: none;
    border: 1px solid #000000;
    margin: 0;
    padding: 0;
}
#TabContainer ul.tab li
{
    float: right;
    margin-left: 5px;
}

در کد های بالا شناسه TabContainer برای نگهداری tab ها در نظر گرفته شده است و کلاس tab نیز به تگ ul نسبت داده شده که گزینه های آن واضح اند.
برای اینکه هر تگ li به صورت به یک تب تبدیل شود، لازم هست که li ها کنار هم قرار بگیرند، بنابراین خاصیت float:right  را برای تگ های li در نظر می گیریم تا به حالت شناور و در سمت راست ul قرار بگیرند. margin-left نیز برای ایجاد فاصله بین تب ها در نظر گرفته شده است. خوب تا اینجا کار به این شکل شده:

tab

اولین مشکلی که دیده می شود این است که با float کردن li ها ارتفاع ul صفر شده و مثل یک border در بالای li ها قرار گرفته است. برای اینکه این حاشیه در زیر تگ های li قرار گیرد، لازم است که مقداری برایpadding-bottom  تگ ul در نظر بگیریم، با اینکار ul مثل کادری دور تب ها را خواهد گرفت. با توجه به اینکه ما فقط به حاشیه پایینی نیاز داریم پس border را بهborder-bottom  تغییر دهید.
این را هم عرض کنم که padding-bottom را طوری در تگ ul مقدار دهی کنید که دقیقا حاشیه تگ ul روی حاشیه پایینی li ها قرار بگیرد. در این مثال من مقدار21 پیکسل برایpadding-bottom  در نظر گرفتم. در نهایت کلاس tab را به این شکل ویرایش کنید:

#TabContainer ul.tab
{
    list-style: none;
    border-bottom: 1px solid #000000;
    margin:  0;
    padding: 0 50px 21px 0;
}

بعد از انجام مراحل فوق به سراغ تعیین استایل برای تگ های a که درون تگ های li هستند می رویم:

#TabContainer li a:link,#TabContainer li a:visited
{
    display: block;
    font-family: tahoma;
    font-size: .75em;
    background-color: #fcd9af;
    color: #800000;
    border: 1px solid #000;
    padding: 3px;
    text-decoration: none;
}
#TabContainer li a:hover
{
    background-color: #ff9797;
}

فکر نمیکنم در کد های بالا چیزی نامفهوم باشد. فقط یک نکته کوچک اینکه به منظور نمایش تگ a به صورت جعبه ای، خاصیت display آن را برابر block قرار دادم.  با این کار تگ a تمام فضای درون li را می پوشاند و وقتی موس را در هر جای li قرار دهید، علامت دست ظاهر خواهد شد. بعد از آن هم کلاس کاذب hover را برای تغییر رنگ زمینه تگ a هنگام رفتن موس بر روی تگ، استایل دهی کردم.
تا اینجا تب های ما به این شکل شده که تقریبا تب ها آماده شده اند:

tab

برای ساخت قسمتی که آیتم های هر تب درون آن قرار گیرد از یک تگ div  استفاده می کنیم. در ابتدای کار تب ها را درون یک div  با آی دی TabContainer  قرار دادیم. بنابراین تب های ما دقیقا در بین این div مهار شده هستند. پس خیلی راحت با اضافه کردن یک div دیگر به عنوان محل قرار گیری آیتم ها و دادن border به آن می توانیم یک چهارچوب برای تب ها درست کنیم. کد html ما تا این لحظه به صورت زیر می باشد:

 

و این هم کد css برای div جدید:

#TabContainer div.ContentArea
{
    border: 1px solid #000;
    border-top: none;
    padding: 3px;
}

توجه کنید که border-bottom  تگul ، حاشیه بالایی در کلاس ContentArea  را تشکیل می دهد، بنابراین مقدار border-top را در این کلاس حذف کرده ایم.
تا اینجا کار ساخت تب ها به پایان رسیده است. در ادامه باید حالت فعال یا غیر فعال بودن تب ها را ایجاد کنیم، به شکلی که وقتی کاربر بر روی یک تب کلیک کرد، آن تب به حالت فعال در بیاید و فقط آیتم های همان تب نشان داده شود.

tab
برای فعال شدن هر تب از جاوا اسکریپت استفاده می کنیم، به طوری که با کلیک بر روی هر تب تابعی فراخوانی می شود و استایل تب مورد نظر را تغییر می دهد. همچنین در این مرحله آیتم های نمایشی مربوط به تمام تب ها را در تگی که با کلاس ContentArea در مرحله قبل ایجاد شد قرار می دهیم و با جاوااسکریپت خاصیت display آن ها را به گونه ای تغییر میدهیم که هنگام کلیک بر روی هر تب فقط آیتم های همان تب نمایش یابند. به این ترتیب برای هر تگ a یک آی دی در نظر می گیریم و به رویداد onclick  هر یک نیز نام تابع جاوا اسکریپت مورد نظر را اختصاص می دهیم.

  • محبوب ترین مطالب
  • آخرین مطالب
  • افراد آنلاین
  • وضعیت اعضاء
  • به div نگهدارنده آیتم ها هم چند تگ div که هرکدام مربوط به آیتم های یک تب هستند را اضافه کنید:

    most visited
    last content
    online user
    user status