پیش‌نمایش زنده (iframe sandbox) تمام‌صفحه
در حال بارگذاری پیش‌نمایش زنده...
<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 رادیو
۱۰۰
۴.۲ (۱۶)
تأیید شدهدر انتظاررد شدهاطلاعویژهغیرفعال
پیش‌نمایش زنده اسنیپت

مجموعه بج وضعیت رنگی

بج وضعیت پنل
۲۷
۴.۵ (۴)
پیش‌نمایش زنده اسنیپت

تب‌بار با خط لغزان

ناوبری تب خط فعال
۱۰۰
۴.۲ (۱۶)