خط زیرین زبانه جایگاه‌سازی لنگر

در منو زبانه‌ای، باید نشانه‌های دیداری به کاربران ارائه دهید تا بدانند در کدام صفحه هستند. یک گزینه این است که زیر برگه خط کشیده شود. با موقعیت‌یابی لنگر، می‌توانید پویانمایی روانی بین موقعیت‌های خط زیرین ایجاد کنید. اگر تغییر زبانه فعال باعث بار شدن صفحه وب جدیدی شود، این ویژگی کار نمی‌کند.

همچنین می‌توانید از این جلوه برای افزودن نقطه پویانمایی‌شده برای نشان دادن زبانه فعال در نوار زبانه عمودی استفاده کنید.

خط زیرین را بااستفاده از شبه‌عنصر ::before در <ul> که حاوی عناصر <li> است ایجاد کنید. استفاده از شبه‌عنصر رویکرد ترجیحی است زیرا DOM را تمیز نگه می‌دارد و از افزودن عناصر اضافی برای جلوه‌های صرفاً تزئینی جلوگیری می‌کند.

ul::before {
  /* Use a pseudo-element on the container to represent the animated indicator */
  content: '';
}

با افزودن ویژگی anchor-name که مقداری دارد که با -- شروع می‌شود، مورد فهرست فعال را به لنگر تبدیل کنید.

li.active {
  /* Make a unique anchor-name for the active element. */
  anchor-name: --active;
}

خط زیرین را با position-anchor که با anchor-name روی لنگر مطابقت دارد به لنگر مورد فعال متصل کنید و آن را position: absolute کنید.

ul::before {
  /* Tether the underline to the active element. */
  position: absolute;
  position-anchor: --active;
}

بااستفاده از ویژگی‌های درج و توابع anchor()، خط زیرین را نسبت به لنگر قرار دهید.

ul::before {
  /* DO NOT use position-area, which can not be transitioned. */
  /* Use calc() to offset the top slightly */
  inset-block-start: calc(anchor(bottom) + .1lh);
  inset-inline-start: anchor(left);
  inset-inline-end: anchor(right);
}

ارتفاع و سبک‌های دیداری دیگر را اضافه کنید.

ul::before {
  /* Apply your project's styles for the indicator */
  block-size: .25lh;
  background: red;
}

در آخر، یک انتقال به ویژگی‌های inset اضافه کنید.

ul::before {
  @media (prefers-reduced-motion: no-preference) {
    /* MANDATORY: The transition must be wrapped in a prefers-reduced-motion media query to respect user preferences. */
    transition: inset .2s;
  }
}

این فقط یک نشانگر بصری است و نباید جایگزینی برای تنظیم مقادیر aria مناسب aria-current="page" یا aria-selected باشد.

<!-- MANDATORY: Provide explicit assistive technology state alongside the visual tab underline -->
<nav aria-label="Primary">
  <ul>
    <li class="active">
      <a href="/home" aria-current="page">Home</a>
    </li>
    <li>
      <a href="/about">About</a>
    </li>
  </ul>
</nav>

راهبردهای جایگزین

اگر موقعیت‌یابی لنگر در مرورگر پشتیبانی نمی‌شود، از border-bottom برای افزودن خط زیرین استفاده کنید. پویانمایی نخواهد شد.

ul li.active {
  @supports not (position-anchor: auto) {
    /* Choose a color appropriate to the app theme. */
    border-bottom: .25lh var(--primary) solid;
  }
}