Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Navbar item with icon and text renders an unnamed role="img" icon

Đang mở Phù hợp với người mới
#15,123 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
javascript, yaml
Lĩnh vực
accessibility, frontend

Hướng nghiên cứu

Bắt đầu với navicon.ejs, sau đó kiểm tra cách nó được dùng trong sidebaritem.ejs, navitem-dropdown.ejs và nav-footer-navitem.ejs để hiểu cách phân biệt các mục có văn bản với các mục chỉ có biểu tượng. Tái hiện bằng _quarto.yml và index.qmd được cung cấp, rồi chạy quarto render và lệnh axe được nêu. Hoàn tất khi các biểu tượng đi kèm văn bản mang tính trang trí và trường hợp chỉ có biểu tượng vẫn giữ được tên có thể truy cập.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

accessibility bug website-navigation
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

A navbar item with both icon and text renders its icon as role="img" with no accessible name.
axe reports role-img-alt (WCAG 1.1.1) on every page.

The link text already names the link, so the icon is decorative.
There is no option to say so: icon takes only a string, and navicon.ejs always writes role="img".
The only attribute it passes on is the item's aria-label, which goes on the icon, not the link.
The link then reads its name twice, for example "external link Blog".

navicon.ejs is also used by sidebaritem.ejs, navitem-dropdown.ejs and nav-footer-navitem.ejs, so sidebar, menu and footer items with an icon and text behave the same way.

  • #15038 covers icon-only navbar links, which is a different case.
Steps to reproduce

_quarto.yml:

project:
  type: website
website:
  title: "Navbar icon"
  navbar:
    left:
      - text: "Overview"
        icon: house
        href: index.qmd

index.qmd:

---
title: "Home"
---

Home page.

Then:

quarto render
quarto call axe _site --viewports 1440x900
jq -r '.findings[].signature' _axe-checks/findings.json
Actual behavior
<a class="nav-link active" href="./index.html" aria-current="page"> <i class="bi bi-house" role="img"> </i> <span class="menu-text">Overview</span></a>

findings.json lists role-img-alt :: i (plus region :: #quarto-skip-link, which is unrelated).

Expected behavior

When the item has text, the icon is decorative: <i class="bi bi-house" aria-hidden="true"></i>.
role="img" with a name is only needed for icon-only items, and the item's aria-label names the link rather than the icon.

Your environment
  • IDE: none, command line.
  • OS: macOS 27.0.
  • The same output comes from a current development build (99.9.9).
Quarto check output
Quarto 1.11.6
[✓] Checking environment information...
      Quarto cache location: /Users/mcanouil/Library/Caches/quarto
      Project root: /private/tmp/claude-501/-Users-mcanouil-Projects-quarto-dev-quarto-web/e598806e-b79f-4883-9554-648d53816f11/scratchpad/repro-sidebar
      Project config: /private/tmp/claude-501/-Users-mcanouil-Projects-quarto-dev-quarto-web/e598806e-b79f-4883-9554-648d53816f11/scratchpad/repro-sidebar/_quarto.yml

[✓] 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 versions of quarto dependencies......OK

[✓] Checking Quarto installation......OK
      Version: 1.11.6
      Path: /private/tmp/claude-501/-Users-mcanouil-Projects-quarto-dev-quarto-web/e598806e-b79f-4883-9554-648d53816f11/scratchpad/quarto-1.11.6/bin

[✓] Checking tools....................OK
      TinyTeX: v2026.07
      Chrome Headless Shell: (not installed)
      VeraPDF: (not installed)

[✓] Checking LaTeX....................OK
      Using: TinyTex
      Path: /Users/mcanouil/Library/TinyTeX/bin/universal-darwin
      Version: 2026

[✓] Checking Chrome Headless....................OK
      Using: Chrome from QUARTO_CHROMIUM
      Path: /Applications/Brave Browser.app/Contents/MacOS/Brave Browser

[✓] Checking basic markdown render....OK
ℹ R version 4.6.1 (2026-06-24)
! Config '~/.Rprofile' was loaded!

[✓] Checking R installation...........OK
      Version: 4.6.1
      Path: /Library/Frameworks/R.framework/Versions/4.6/Resources
      LibPaths:
        - /Users/mcanouil/Library/R/arm64/4.6/library
        - /Library/Frameworks/R.framework/Versions/4.6/Resources/library
      knitr: 1.51
      rmarkdown: 2.31

[✓] Checking Knitr engine render......OK

[✓] Checking Python 3 installation....OK
      Version: 3.12.13
      Path: /Users/mcanouil/Projects/quarto-dev/quarto-web/.venv/bin/python3
      Jupyter: 5.9.1
      Kernels: julia-1.12, python3
[IPKernelApp] WARNING | Kernel is running over TCP without encryption. All communication (including code and outputs) is sent in plain text and is susceptible to eavesdropping. Use IPC transport or launch with kernel manager-provisioned CurveZMQ keys to enable transport encryption.

[✓] Checking Jupyter engine render....OK

[✓] Checking Julia installation...
Ngôn ngữ chính
JavaScript
Star
6.1k
Fork
471
Merge trung bình
22 giờ 56 phút
Pull request đã merge (30 ngày)
98

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của quarto-dev/quarto-cli

Tất cả issue của quarto-dev/quarto-cli

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.