Ir para o conteúdo
uiify

Table of contents

Navegação compacta por títulos com ampliação ao passar o ponteiro e acompanhamento da rolagem.

Navegadores
Chrome 123+Firefox 121+Safari 17.5+
Nível
2
Tamanho compactado
4.14 kB
Limite de layout forçado
0 ms
Limite do axe
0
Compatível com SSR
Sim
Contrato publicado
Ambiente de teste

Experimentar

Overview

A table of contents gives readers a quick map of a long page. Follow a heading to jump directly to its section, or keep reading and let the current position update as you scroll.

Installation

Import the client entry to enable scroll tracking and pointer interaction. The native button and heading links are already usable before the page finishes loading.

Configuration

Match every line and link to a unique heading ID. Choose a scroll container and a content boundary when the article lives inside another page.

Examples

Hover a line to see its heading in the contents list. Click the line to jump there. On a touch screen, open the list and select the heading you want to read.

Accessibility

The contents are ordinary navigation links. Use the keyboard to open the list, move through its headings, and dismiss it with Escape. Scrolling never moves keyboard focus.

Styling

Adjust line length, spacing and the panel width with CSS variables. The current section uses bolder text; the heading under the pointer gets a separate hover background.

Conclusion

The same component works beside a document or inside a reader. Its compact rail stays available while the article scrolls, without taking a separate content column.

API

TableOfContents.Root (/client)

PropTipoPadrãoDescrição
scrollSpybooleantrueAcompanhe os destinos da mesma página na ordem do documento após a hidratação.
scrollTargetstring—ID do elemento rolável. Omita para acompanhar a janela do documento; um ID não encontrado não usa uma alternativa.
contentTargetstring—ID do elemento de conteúdo, que limita a descoberta de destinos e determina o fim do artigo.
offsetnumber0Distância em pixels a partir do início da área visível de rolagem usada para selecionar o título atual.
valuestring | null—ID controlado do destino atual. null limpa a seleção.
defaultValuestring | nullnullID inicial do destino atual.
onValueChange(value: string | null) => void—Informa alterações do acompanhamento de rolagem sem mover o foco.
openboolean—Estado controlado da janela flutuante.
defaultOpenbooleanfalseEstado de abertura inicial aplicado após a hidratação.
onOpenChange(open: boolean) => void—Informa solicitações por passagem do ponteiro, ativação e fechamento nativo.
openOnHoverbooleantrueAbre ao passar o ponteiro do mouse; com toque, usa o botão nativo.
openDelaynumber100Atraso de abertura ao passar o mouse, em milissegundos.
closeDelaynumber200Período de tolerância para mover o ponteiro entre acionador e lista.
renderReactElement | ((props, state) => ReactElement)—Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade.

TableOfContents.Trigger

PropTipoPadrãoDescrição
target*string—ID único de Content, conectado por popovertarget nativo.
aria-labelstring—Nome acessível obrigatório quando o acionador contém apenas a faixa decorativa.

TableOfContents.Indicator

PropTipoPadrãoDescrição
value*string—ID de destino correspondente a um fragmento de Link; um indicador por seção.
level1 | 2 | 3 | 4 | 5 | 62Nível do título disponível em --uiify-toc-level.
selectedbooleanfalseSeleção na entrada de servidor; o cliente deriva a seleção de Root.value.
renderReactElement | ((props, state) => ReactElement)—Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade.

TableOfContents.Content

PropTipoPadrãoDescrição
id*string—ID único de janela flutuante correspondente a Trigger.target.
side"top" | "right" | "bottom" | "left""left"Lado da âncora CSS nativa; o layout é invertido quando necessário.
align"start" | "center" | "end""start"Alinhamento junto ao acionador.
renderReactElement | ((props, state) => ReactElement)—Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade.

TableOfContents.Link

TableOfContents.Rail / List

PropTipoPadrãoDescrição
renderReactElement | ((props, state) => ReactElement)—Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade.

Teclado

TeclaAção
Enter / SpaceAlterne a janela flutuante do sumário pelo acionador
Tab / Shift+TabNavegue pelos links comuns dos títulos
EscapeFeche a janela flutuante; devolva o foco da lista ao acionador

Acessibilidade

Dê um rótulo à região de navegação e ao acionador que tem apenas ícone. A entrada de servidor permite ativar e fechar a janela flutuante nativa e usar links de fragmento antes da hidratação; a entrada /client acrescenta abertura ao passar o ponteiro, fixação por clique, ampliação e acompanhamento da rolagem. Os links atuais expõem aria-current=location, e indicadores decorativos ficam ocultos das tecnologias assistivas. O acompanhamento da rolagem nunca move o foco nem anuncia a rolagem. Com movimento reduzido, o visual opcional desativa transições de linhas.

Pontos de integração de estilos

data-uiify-table-of-contentsdata-partdata-selecteddata-highlighteddata-statedata-sidedata-aligndata-positioning--uiify-toc-line-size--uiify-toc-line-max-size--uiify-toc-line-thickness--uiify-toc-row-size--uiify-toc-magnify-radius--uiify-toc-indent--uiify-toc-panel-size--uiify-toc-duration--uiify-toc-level--uiify-toc-index--uiify-toc-pointer
Esta página foi traduzida automaticamente e ainda não foi revisada.