Configuring Keyboard Navigation for 1C-Bitrix

When developing corporate websites on 1C-Bitrix, keyboard accessibility is often overlooked. Over 4 years, we audited more than 30 projects—and **in 80% of cases** found issues with **Tab order** and visible focus. For website keyboard accessibility, corporate users, call-center operators, and peopl

Our competencies:

Frequently Asked Questions

When developing corporate websites on 1C-Bitrix, keyboard accessibility is often overlooked. Over 4 years, we audited more than 30 projects—and in 80% of cases found issues with Tab order and visible focus. For website keyboard accessibility, corporate users, call-center operators, and people with hand injuries are not a niche—they represent direct conversion losses. If Tab order is broken, B2B clients don't complete their orders. Up to 30% time savings for users reduces support costs by 25%, and the cost of fixes starts at $2,000 after an audit. Typical investment ranges from $2,000 to $5,000, with ROI within 6 months. Enterprises report average savings of $3,000 per month after implementation, and conversion rates improve by 22%.

Manual Check of Keyboard Accessibility

A full check is done manually: disable the mouse, go through the entire purchase scenario using only Tab, Enter, Space, and arrow keys. The traversal time is a real indicator of usability. If the focus jumps chaotically or disappears, there is a problem. Proper focus setup ensures a logical navigation order. In our practice, over 40% of users interrupt their order due to navigation issues. Also use developer tools: inspect elements for outline and tabindex.

Visible Focus: The Most Common Problem

CSS reset outline: none or outline: 0 kills the visible focus indicator for all elements. It is often added in global styles of Bitrix templates "to avoid an ugly blue rectangle." This violates WCAG 2.4.7 Focus Visible.

Correct approach—not to remove outline globally, but to style it:

/* Remove outline only for mouse navigation */ :focus:not(:focus-visible) { outline: none; } /* Show nice focus for keyboard navigation */ :focus-visible { outline: 2px solid #0066cc; outline-offset: 2px; border-radius: 2px; } 

The pseudo-class :focus-visible is supported by 96% of browsers—it triggers only during keyboard navigation, not on mouse click. It is simpler and more reliable than JavaScript solutions.

Why Native CSS :focus-visible Is Better Than JavaScript Solutions?

Method Complexity Browser Support Performance
CSS :focus-visible One line 96%+ No overhead
JavaScript keyboard tracking 50+ lines 100% Additional handlers
ARIA attributes Component-dependent 90%+ Moderate

Using :focus-visible cuts code in half and simplifies maintenance.

Tab Order and tabindex in Bitrix Templates

Tab focus order is determined by DOM order plus tabindex attribute. In Bitrix, problems often arise from:

  • CSS order in Flexbox/Grid changes visual order but not DOM order—Tab follows DOM, not visual
  • tabindex="0" added to non-focusable elements (div, span) without roles—they receive focus but do nothing on Enter
  • tabindex="-1" on interactive elements—focus is skipped

For Bitrix menus (bitrix:menu), arrow key support for submenus must be added via JavaScript: when a dropdown is open, ArrowDown/ArrowUp moves focus through items, Escape closes the menu and returns focus to the parent item.

Standard Bitrix Components and Focus

Standard components like modal windows or catalog filter do not implement a focus trap and do not manage focus. When a modal opens, focus should move inside, and Tab should not leave it. When closed, focus returns to the element that opened the modal. Without this, a keyboard user can get stuck or lose context.

Implementing a Focus Trap in Bitrix Modals

Minimal implementation:

function trapFocus(modal) { const focusable = modal.querySelectorAll( 'a[href], button:not([disabled]), input, select, textarea, [tabindex="0"]' ); const first = focusable[0]; const last = focusable[focusable.length - 1]; modal.addEventListener('keydown', function(e) { if (e.key !== 'Tab') return; if (e.shiftKey) { if (document.activeElement === first) { e.preventDefault(); last.focus(); } } else { if (document.activeElement === last) { e.preventDefault(); first.focus(); } } }); } 

This code can be adapted for any modal in Bitrix. Savings on maintenance can be over $5,000 per year for a medium-sized site.

Catalog Filter Component

The bitrix:catalog.smart.filter component generates checkboxes and range sliders. Custom sliders (jQuery UI Slider) are not keyboard accessible by default. You need to add tabindex="0", role="slider", and ArrowLeft/ArrowRight key handlers to change the value. This is a significant amount of work—simpler to replace the slider with a native <input type="range">. The cost of such a modification starts at $1,200 after an audit.

What's Included in Keyboard Navigation Setup

  • Documentation: audit report with issue list and recommendations
  • CSS improvements: remove outline: none, implement :focus-visible
  • Modification of component templates (menu, filter, modals)
  • Focus trap implementation for all dialogs
  • Testing with screen readers (JAWS, NVDA)
  • Handover of access and team training

Step-by-Step Implementation Guide

  1. Perform an accessibility audit and document findings.
  2. Remove global outline: none and implement :focus-visible.
  3. Modify component templates for menus, modals, and filters.
  4. Add focus trap to all dialogs and modals.
  5. Test with screen readers (JAWS, NVDA) and keyboard-only navigation.
  6. Deploy and train team on maintenance.

Typical Mistakes in Keyboard Navigation Setup

Error Consequence Solution
Global outline: 0 Invisible focus Use :focus-visible
tabindex="-1" on buttons Skipping interactive elements Remove or change to tabindex="0"
Missing focus trap Focus exits modal Implement focus cycle
Custom sliders without keyboard Filter inaccessible Replace with native elements

Our expert team with over 10 years of experience guarantees a comprehensive audit and proven solutions. Contact us for a free initial consultation to improve your site's keyboard accessibility.

Learn more about WCAG 2.4.7 on MDN.