)]}'
{"id": 5109685301673984, "name": "CSS scroll-marker-group modes", "summary": "The scroll-marker-group property is enhaced to support modes:\n1) 'links' - The generated ::scroll-marker-group operates in \"links\" mode, functioning like a navigation list. This is the default mode if omitted.\n2) 'tabs' - The generated ::scroll-marker-group operates in \"tabs\" mode, functioning like a tablist.\n\nEach mode changes focus order and accessibility behavior of ::scroll-marker-group and ::scroll-markers, following WAI-ARIA patterns.\n\nMore details:\n# The links mode (default)\nThis mode is designed to mimic standard Navigation Landmarks combined with fragment anchors.\n\n## Semantic roles\nThe ::scroll-marker-group takes on the navigation role, and the ::scroll-marker elements take on the link role. This perfectly maps to the <nav> + <a> structural pattern.\n\n## Keyboard navigation\nAll ::scroll-marker elements are sequential tab stops, natively acting like a list of standard anchor links.\n\n## Unaffected targets\nThe originating elements do not get forced into any role, leaving the document's natural semantic structure intact.\n\n## Activation focus management\nWhen a link marker is activated, it sets the sequential focus navigation starting point to the target element (the originating element), and focus is lost from the marker. This mimics the native behavior of clicking a standard internal <a href=\"#target\"> link.\n\n# The tabs mode\nThis mode is designed to natively replicate the Tabs Pattern and serves as the interactive foundation for the Tabbed Carousel Pattern.\n\n## Semantic roles\nThe ::scroll-marker-group is implicitly assigned the tablist role, ::scroll-marker elements act as tab roles, and their originating elements get the tabpanel role. This mirrors the required WAI-ARIA Tabs structure.\n\n## Keyboard navigation (roving tabindex)\nIt follows the complex keyboard interactions outlined in standard practices. Only the active ::scroll-marker acts as a tab stop. Users use arrow keys to navigate the focusgroup (switching between markers), preventing the \"tab trap\" of having to tab through 20 carousel dots.\n\n## Focus scope management\nThe marker acts as a focus navigation scope owner. Pressing Tab from the active marker moves focus directly into the active tabpanel content, matching the specification for tabbed interfaces.\n\n## Tree pruning\nContent from inactive tabs is explicitly hidden from the accessibility tree. This mimics the expected behavior of aria-hidden=\"true\" or inert on inactive tab panels, saving developers from manually scripting state changes.\n\n## Activation focus\nWhen a marker is activated, focus is retained on the marker, which is exactly how standard tabs operate.\n\n", "markdown_fields": [], "blink_components": ["Blink>CSS"], "star_count": 23, "search_tags": [], "created": {"by": "sakhapov@chromium.org", "when": "2026-06-26 17:27:34.183405"}, "updated": {"by": "sakhapov@chromium.org", "when": "2026-08-31 09:05:26.436577"}, "category": "CSS", "category_int": 15, "feature_notes": null, "web_feature": "Missing feature", "is_official_web_feature": false, "webdx_usecounter_enum": null, "enterprise_feature_categories": [], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": false, "is_releasenotes_publish_ready": false, "stages": [{"id": 5128311987634176, "created": "2026-06-26 17:27:34.831857", "feature_id": 5109685301673984, "stage_type": 220, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 6254211894476800, "created": "2026-06-26 17:27:34.833220", "feature_id": 5109685301673984, "stage_type": 230, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 4846837010923520, "created": "2026-06-26 17:27:34.834529", "feature_id": 5109685301673984, "stage_type": 250, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5972736917766144, "created": "2026-06-26 17:27:34.835745", "feature_id": 5109685301673984, "stage_type": 260, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a57e20c.854c7482.198413.02a4.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 154, "android_first": 154, "ios_first": null, "webview_first": 154, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-08-31 09:05:26.436577", "creator_email": "sakhapov@chromium.org", "updater_email": "sakhapov@chromium.org", "owner_emails": ["sakhapov@chromium.org"], "editor_emails": [], "cc_emails": [], "spec_mentor_emails": [], "unlisted": false, "deleted": false, "editors": [], "cc_recipients": [], "spec_mentors": [], "creator": "sakhapov@chromium.org", "feature_type": "Chromium catches up", "feature_type_int": 1, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 5972736917766144, "bug_url": "https://issues.chromium.org/issues/425931511", "launch_bug_url": null, "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Blink>CSS&blocking=425931511&cc=sakhapov@chromium.org", "screenshot_links": [], "first_enterprise_notification_milestone": null, "enterprise_impact": 1, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": null, "finch_name": null, "non_finch_justification": null, "ongoing_constraints": null, "rollout_plan": 0, "rollout_plan_displayname": "Will ship enabled for all users", "motivation": null, "devtrial_instructions": null, "activation_risks": null, "measurement": null, "availability_expectation": null, "adoption_expectation": null, "adoption_plan": null, "initial_public_proposal_url": null, "explainer_links": ["https://gist.github.com/danielsakhapov/aa8e744701224994609aebb3e9e316e3"], "requires_embedder_support": false, "spec_link": "https://drafts.csswg.org/css-overflow-5/#scroll-marker-modes", "api_spec": false, "automation_spec": false, "interop_compat_risks": null, "all_platforms": true, "all_platforms_descr": null, "non_oss_deps": null, "anticipated_spec_changes": null, "security_risks": null, "ergonomics_risks": null, "wpt": true, "wpt_descr": "https://wpt.fyi/css/css-overflow/scroll-markers", "webview_risks": null, "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": null, "doc_links": [], "sample_links": ["https://codepen.io/Daniil-Sakhapov/pen/ogzQQYZ", "https://codepen.io/Daniil-Sakhapov/pen/ZYpmmJE"], "prefixed": null, "tags": [], "tag_review": null, "tag_review_status": "Not applicable", "tag_review_status_int": 4, "security_review_status": "Pending", "security_review_status_int": 1, "privacy_review_status": "Pending", "privacy_review_status_int": 1, "security_continuity_id": null, "security_launch_issue_id": null, "updated_display": null, "resources": {"samples": ["https://codepen.io/Daniil-Sakhapov/pen/ogzQQYZ", "https://codepen.io/Daniil-Sakhapov/pen/ZYpmmJE"], "docs": []}, "comments": null, "ff_views": 5, "safari_views": 5, "web_dev_views": 4, "browsers": {"chrome": {"bug": "https://issues.chromium.org/issues/425931511", "blink_components": ["Blink>CSS"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["sakhapov@chromium.org"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": true, "desktop": 154, "android": 154, "webview": 154, "ios": null}, "ff": {"view": {"url": "https://github.com/mozilla/standards-positions/issues/1161", "notes": null, "text": "No signal", "val": 5}}, "safari": {"view": {"url": "https://github.com/WebKit/standards-positions/issues/447", "notes": null, "text": "No signal", "val": 5}}, "webdev": {"view": {"text": "No signals", "val": 4, "url": null, "notes": null}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": "https://github.com/w3c/css-aam/issues/18"}}}, "standards": {"spec": "https://drafts.csswg.org/css-overflow-5/#scroll-marker-modes", "maturity": {"text": "Specification currently under development in a Working Group", "short_text": "Working draft", "val": 4}}, "is_released": false, "is_enterprise_feature": false, "experiment_timeline": null, "ai_test_eval_report": null, "ai_test_eval_run_status": null, "ai_test_eval_status_timestamp": null}