a11y: `opacity: 0.9` on h3 to h6 pushes links in headings below WCAG AA contrast
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 83/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- css, html, sass
- Área
- accessibility, frontend
Línea de trabajo
Empieza en src/resources/formats/html/bootstrap/_bootstrap-rules.scss, en la regla de opacidad de los encabezados enlazada en el informe. Renderiza el ejemplo QMD proporcionado y ejecuta axe-core para comprobar el contraste de los enlaces en h4, h5 y h6. Se da por terminado cuando esos enlaces conservan el contraste del color de enlace del tema y axe-core deja de informar de la infracción color-contrast.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I have:
- searched the issue tracker for similar issues
- installed the latest version of Quarto CLI
- formatted my issue following the Bug Reports guide
Bug description
The HTML stylesheet sets opacity: 0.9 on h3, h4, h5 and h6.
Opacity blends every descendant toward the page background, so a link colour that passes on its own fails inside a heading.
The built-in link colours are close to the 4.5:1 line, so there is no margin for the fade.
axe-core color-contrast (serious, WCAG 2.2 SC 1.4.3) flags a link inside h4, h5 and h6:
| Theme | Link colour after the fade | Background | Ratio |
|---|---|---|---|
| default | #257dfd |
#ffffff |
3.86:1 |
cosmo |
#3d71e6 |
#ffffff |
4.46:1 |
A link inside h3 is not flagged, because h3 is large text and only needs 3:1.
Plain heading text is not flagged either.
#14679 reports the same mechanism for the appendix with opacity: 0.9.
This is a separate rule in a different place, so a fix for the appendix does not cover headings.
Steps to reproduce
---
title: "Heading link contrast test"
---
## Two
### Three [with a link](https://example.org)
#### Four [with a link](https://example.org)
##### Five [with a link](https://example.org)
###### Six [with a link](https://example.org)
Render it, then run axe-core on the page, for example with axe: output: document or with the axe.min.js that ships with Quarto.
Actual behavior
axe-core reports color-contrast on the links in the h4, h5 and h6 headings, with the ratios in the table above.
Expected behavior
Links inside headings keep the contrast of the theme's link colour, so they meet 4.5:1 whenever the link colour does.
Your environment
- IDE: none, terminal only
- OS: macOS (Darwin 27.0.0, Apple Silicon)
Quarto check output
Quarto 99.9.9
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.10.0: OK
Dart Sass version 1.101.0: OK
Deno version 2.7.14: OK
Typst version 0.15.1: OK
[✓] Checking Quarto installation......OK
Version: 99.9.9
commit: 69592e5c1718d3e1b2f3d11e757d32e23a16af67
- Lenguaje dominante
- JavaScript
- Estrellas
- 6.1k
- Forks
- 476
- Merge medio
- 17 h 7 min
- PR fusionados (30 d)
- 112
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de quarto-dev/quarto-cli
-
enhancement websites
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
quarto-dev/quarto-cli#15255 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Website announcement dismiss control cannot be reached or used with a keyboardPosiblemente ocupada @Xander-AJ la tomó hoy. Abiertoaccessibility bug websites
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
quarto-dev/quarto-cli#15235 ·
Los mantenedores suelen responder en 1 día
-
quarto.json.decode does not raise on invalid JSON, so pcall cannot catch itPosiblemente ocupada @sogav21 la tomó hace 1 día. Abiertobug lua
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
quarto-dev/quarto-cli#15226 ·
Los mantenedores suelen responder en 1 día
-
arrow-dark gives region markers a light band that fails contrastPosiblemente ocupada @vav7 la tomó hace 1 día. Abiertoaccessibility bug themes
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
quarto-dev/quarto-cli#15222 ·
Los mantenedores suelen responder en 1 día
-
bug code-annotation
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
quarto-dev/quarto-cli#15215 ·
Los mantenedores suelen responder en 1 día
Todos los issues de quarto-dev/quarto-cli
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
remotion-dev/remotion#12905 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
mongoosejs/mquery#142 ·
-
`Scope.filteringRequestBody()` and `filteringPath()` are typed as taking zero arguments in v15Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Site Suggestion: bullseyeAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Add toro4n to the data modeling toolsPosiblemente ocupada @henriklantzhedstrom-prog la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
neo4j/docs-getting-started#546 ·