في قائمة علامات التبويب، يجب عليك تقديم تلميحات مرئية للمستخدمين حول الصفحة التي يتواجدون فيها. أحد الخيارات هو وضع خط تحت علامة التبويب. باستخدام ميزة "تحديد موضع الارتساء"، يمكنك إنشاء تأثيرات متحركة سلسة بين مواضع الخط السفلي. لا يعمل هذا الإجراء عندما يؤدي تغيير علامة التبويب النشطة إلى تحميل صفحة ويب جديدة.
يمكنك أيضًا استخدام هذا التأثير لإضافة نقطة متحركة تشير إلى علامة التبويب النشطة في شريط علامات التبويب العمودي.
أنشِئ الخط السفلي باستخدام عنصر زائف ::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;
}
}