惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LangChain Blog
月光博客
月光博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园_首页
T
Tailwind CSS Blog
P
Proofpoint News Feed
雷峰网
雷峰网
D
Darknet – Hacking Tools, Hacker News & Cyber Security
IT之家
IT之家
V
Vulnerabilities – Threatpost
阮一峰的网络日志
阮一峰的网络日志
C
CERT Recently Published Vulnerability Notes
Attack and Defense Labs
Attack and Defense Labs
S
Schneier on Security
Security Archives - TechRepublic
Security Archives - TechRepublic
L
Lohrmann on Cybersecurity
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
WordPress大学
WordPress大学
The Register - Security
The Register - Security
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
Project Zero
Project Zero
博客园 - 叶小钗
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
Latest news
Latest news
S
SegmentFault 最新的问题
C
Cyber Attacks, Cyber Crime and Cyber Security
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
L
LINUX DO - 最新话题
Google DeepMind News
Google DeepMind News
P
Privacy International News Feed
I
InfoQ
F
Fortinet All Blogs
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Threatpost
T
Tenable Blog
B
Blog RSS Feed

Adrian Roselli

Link + Popover Navigation ∪ of Target Audiences (Accessibility, SEO, AEO/GEO) headingoffset is Not the Document Outline Algorithm Maybe Don’t Rely on Google’s “Modern Web Guidance” WCAG3 Contrast as of April 2026 Accessibility Law of Headlines Your Browser Can Already Speak a Page Honoring Mobile OS Text Size You Know What? Just Don’t Split Words into Letters Barriers from Links with ARIA
Focusgroup Tests
Adrian Roselli · 2026-07-06 · via Adrian Roselli

Chrome 150 has landed support for focusgroup, a feature proposed by Open-UI and not yet in WHATWG HTML as anything more than a feature request. Open-UI has outsized representation from Google and Microsoft folks, so it’s no surprise Chrome would implement it first.

“FOCUS!” set in a stylized geometric font and in stone the color of sand, two characters per line and each maybe ten feet tall, mounted on a wall of similar stone slabs, but the slabs are completely desaturated.
FOCUS!” by Metro Centric, CC BY 2.0; cropped, skewed, and desaturated.

Open-UI has a handy focusgroup explainer, which is the only place (inside or outside of a spec) to understand how to use it and what it’s meant to do. Which means this is your best opportunity to play with it before it gets into a spec.

To hopefully make that easier, I’ve created a series of very basic demos using the properties outlined in the explainer.

Demos

The effort has started with the composite (excepting toolbar) ARIA widgets listbox, menu, menubar, radiogroup, tablist, and toolbar. I’ve linked to the ARIA spec instead of APG. These map to specific behaviors, based on APG’s keyboard guidance.

There is no scripting in any of these demos. The only styles are to honor dark / light mode, make focus styles more obvious, and add some text defaults. None of the controls do anything. The labels are nonsense. I left a set of boring default HTML buttons at the end of each demo as a comparison.

Observe how the axis of movement is based on the default widget visual display. For example, listbox wants up and down arrows because they are generally vertically stacked (block). My demo, however, makes no effort to set a layout. This is not a focusgroup bug, but if you use listbox for something like “pills,” which are generally horizontal (inline), then you would need to address that.

With all the available properties, there are more permutations than I have coded. I also haven’t done complex nor nested demos. I just don’t have the time. But you, dear reader, probably enjoy pointing out things I missed. Please do so. Make your own examples. Play around. Try your own use cases and expectations. Leave comments letting me know what I, or the proposal, got wrong.

If you work in digital accessibility, you have an opportunity to find gaps that others might miss (especially in how roles are exposed). Let’s get those documented before the spec or browsers ossify code that cannot be readily changed in the future. Let’s help ensure developers won’t create more inaccessible experiences simply by using this new property.

You’ll need Chrome 150 to test these today, but as more browsers add support these will still be useful.

listbox

View the listbox demo pen directly or open the listbox demo in debug mode.

See the Pen focusgroup="toolbar" by Adrian Roselli (@aardrian) on CodePen.

View the menu demo pen directly or open the menu demo in debug mode.

See the Pen focusgroup="menu" by Adrian Roselli (@aardrian) on CodePen.

View the menubar demo pen directly or open the menubar demo in debug mode.

See the Pen focusgroup="menubar" by Adrian Roselli (@aardrian) on CodePen.

radiogroup

View the radiogroup demo pen directly or open the radiogroup demo in debug mode.

See the Pen focusgroup="radiogroup" by Adrian Roselli (@aardrian) on CodePen.

tablist

View the tablist demo pen directly or open the tablist demo in debug mode.

See the Pen focusgroup="tablist" by Adrian Roselli (@aardrian) on CodePen.

toolbar

View the toolbar demo pen directly or open the toolbar demo in debug mode.

See the Pen Untitled by Adrian Roselli (@aardrian) on CodePen.

Notes

In very quick tests, a few things jumped out at me:

  • In the focusgroup="none" test across all patterns, I found the button with focusgroup="none" as well as those flanking it accepted focus from Tab. It presents as the first three buttons accepting focus (the second one has focusgroup="none"). I understand why, but that feels like a bug.
  • The interactive child with focusgroup="none" (to remove it from the focusgroup) keeps its role from the element, instead of assigning it the required accessibility child role. That might feel like a bug if you expect focusgroup="none" to work like a weird disabled state (it’s not).
  • Adding role="presentation" to a node with focusgroup has no effect. The role from the focusgroup is still exposed in the accessibility tree and AAPIs. This is also true for role="none" (none is a synonym for presentation). This means you cannot apply focusgroup and then un-role it to keep the interaction but avoid the other requirements of the role. This feels like a bug?
  • James Scholes has corrected my misunderstanding. When using NVDA or JAWS, the virtual cursor will not let me go letter-by-letter within a button (handy for getting the spelling) unless I leave forms mode (by pressing Esc in JAWS, for example). This is different from how I can typically interact with buttons. That feels buggy but I am not a daily screen reader user.

A table tracking what property behaviors are exposed from my tests.

focusgroup Default Behaviors
Role listbox menu menubar radiogroup tablist toolbar
Direction block block inline both inline inline
Wrapping nowrap wrap wrap wrap wrap nowrap
Default Acc Child option menuitem menuitem radio tab nope

Opinions

I’m frustrated the explainer leans on APG patterns as if they are a, or the, standard while pointing only to MDN instead of the actual ARIA standard. I understand why, but you may know how I feel about APG.

I’m frustrated the menu example refers to web site navigation, when there is years-old evidence showing that as an anti-pattern. I’m working on a web site navigation post to address this.

I’m frustrated yet pleased navigation across a two-axis construct, such as an ARIA grid, is deferred. Though I understand that gets more complex.

While I’m thrilled this isn’t going into CSS, I’m worried that it isn’t completely off the table. I’ve so far been unimpressed with the CSS Working Group’s ability to address accessibility concerns.

I’m excited to see these ARIA concepts finally make it to HTML (if only as a proposal so far). This fits the original model of ARIA as a temporary, bridging technology until HTML caught up. Which hey, maybe that will start to happen.

While I like that using focusgroup brings ARIA roles for free (in the accessibility tree and exposed to AAPIs), I’m worried how readily developers will unintentionally role-up standard HTML just to get free arrow key interactions. One Open-UI explainer menu example fails to remove roles from lists, demonstrating how easy it is to forget unless your testing is robust.

In April, Steve Frenzel shared his own in My thoughts on the “focusgroup” attribute proposal for an older proposal.

6 July 2026. Open-UI’s focusgroup Quickstart (incorrectly) uses the APG menu navigation pattern. In mid-2019 I responded to the APG pattern with a link & disclosure navigation prototype. Today I forked it (debug view) and added focusgroup="menubar", something I half expect authors to try.

See the Pen 2017 Link + Disclosure Nav with `focusgroup` by Adrian Roselli (@aardrian) on CodePen.

I got some interesting results:

Using only focusgroup="menubar":
No roles change.
Using focusgroup="menubar":
Child <li>s lose their role.
Using both:
Child <li>s lose their role.
<button>s in child <li>s role-up to become menuitems.
Dev tools showing focusgroup="menubar" on the <ul> and the <li> reporting its role as listitem. Dev tools showing role="menubar" on the <ul> and the <li> reporting its role as none. Dev tools showing focusgroup="menubar" and role="menubar" on the <ul> and the <button> reporting its role as menuitem.
Using Chrome 150.

I don’t know if this is a bug, but it certainly feels like someplace a dev can get confused when determining where to apply ARIA roles for accessibility children of the navigation.