<div class="radikalwp-tabs-pill" data-tabs><div class="radikalwp-tabs-pill-nav"><button class="radikalwp-tabs-pill-btn is-active" type="button">ویژگیها<//button><button class="radikalwp-tabs-pill-btn" type="button">قیمت<//button><button class="radikalwp-tabs-pill-btn" type="button">نظرات<//button><span class="radikalwp-tabs-pill-indicator"><//span><//div><div class="radikalwp-tabs-pill-panel is-active">محتوای تب ویژگیها — لیست امکانات محصول اینجا قرار میگیرد.<//div><div class="radikalwp-tabs-pill-panel">محتوای تب قیمت — جدول پلنها و تخفیفها اینجا مینشیند.<//div><div class="radikalwp-tabs-pill-panel">محتوای تب نظرات — کارتهای بازخورد کاربران اینجا ردیف میشوند.<//div><//div>
.radikalwp-tabs-pill { max-width: 460px; }
.radikalwp-tabs-pill-nav {
position: relative;
display: flex;
background: #f1f5f9;
border-radius: 14px;
padding: 4px;
margin-bottom: 14px;
}
.radikalwp-tabs-pill-btn {
position: relative;
z-index: 1;
flex: 1;
padding: 10px;
font-family: inherit;
font-size: 13px;
font-weight: 700;
color: #64748b;
background: transparent;
border: none;
border-radius: 11px;
cursor: pointer;
transition: color .25s ease;
}
.radikalwp-tabs-pill-btn.is-active { color: #0f172a; }
.radikalwp-tabs-pill-indicator {
position: absolute;
top: 4px;
bottom: 4px;
right: 4px;
width: calc((100% - 8px) / 3);
background: #fff;
border-radius: 11px;
box-shadow: 0 2px 8px rgba(15, 23, 42, .12);
transition: right .3s cubic-bezier(.4, 0, .2, 1);
}
.radikalwp-tabs-pill-panel {
display: none;
padding: 18px 20px;
font-size: 13px;
line-height: 2;
color: #475569;
background: #fff;
border: 1.5px solid #e2e8f0;
border-radius: 14px;
}
.radikalwp-tabs-pill-panel.is-active {
display: block;
animation: radikalwp-tabs-pill-fade .3s ease;
}
@keyframes radikalwp-tabs-pill-fade {
from { opacity: 0; transform: translateY(4px); }
to { opacity: 1; transform: translateY(0); }
}
// جابهجایی تبها + حرکت نشانگر قرصی
document.querySelectorAll('[data-tabs]').forEach(function (tabs) {
var btns = tabs.querySelectorAll('.radikalwp-tabs-pill-btn');
var panels = tabs.querySelectorAll('.radikalwp-tabs-pill-panel');
var indicator = tabs.querySelector('.radikalwp-tabs-pill-indicator');
function activate(i) {
btns.forEach(function (b, k) { b.classList.toggle('is-active', k === i); });
panels.forEach(function (p, k) { p.classList.toggle('is-active', k === i); });
indicator.style.right = (4 + i * (indicator.parentElement.clientWidth - 8) / btns.length) + 'px';
}
btns.forEach(function (btn, i) { btn.addEventListener('click', function () { activate(i); }); });
});
درباره این اسنیپت
تببار سهگانه با نشانگر قرصی متحرک که زیر تب فعال سُر میخورد؛ محتوای هر پنل با فید کوتاه جابهجا میشود. برای بخشهای با محتوای چندگانه مثل ویژگیها، نقشهها و نمایهها مناسب است. نشانگر با JS جابهجا میشود اما HTML ساده و بدون کتابخانه است. پنلها با aria-hidden از دسترسپذیری هم مراقبت میکنند.
پرسشهای متداول
عرض نشانگر یکسوم نوار است و JS مقدار right را بر اساس اندازه تبها محاسبه میکند؛ چون transition دارد، حرکت نرم اجرا میشود.
تعداد دکمهها و پنلها را برابر تغییر دهید؛ محاسبه عرض در JS بر اساس تعداد دکمهها خودکار است و CSS هم نیازی به عدد ثابت ندارد.
چون دکمهها flex:1 دارند، در عرض کم متنها فشرده میشوند؛ اگر متن تبها بلند است، در موبایل اجازه اسکرول افقی نوار را بدهید.
امتیاز شما به این محتوا
میانگین امتیاز کاربران: ۴.۸ از ۳ رأی — برای امتیازدهی وارد شوید
شاید بپسندی
این متن پنل اول است؛ محتوای هر تب با انتخاب نشان داده میشود.
تب بدون جاوااسکریپت
سه تب که با رادیو مخفی جابهجا میشوند؛ بدون JS، بدون کتابخانه. برای بخشهای محتوایی سبک م…
مجموعه بج وضعیت رنگی
شش بج وضعیت (موفق، در انتظار، خطا، اطلاع، ویژه، غیرفعال) با نقطه رنگی داخلی؛ استاندارد پنل…
تببار با خط لغزان
تببار سهگانه با خط فعال زیر هر تب که در حالت انتخاب از مرکز باز میشود. حالت فعال با راد…
Comments (۰)
No comments yet — be the first!