htmlaccessibilitysemantic-markupscreen-readers

Making an h2 tag with a strong tag inside accessible


So this may seem like a very simple question but I can't get my head around it. I have the following HTML:

<h2>word 1 - <strong> word 2 </strong></h2>

I know that this isn't semantically correct and I shouldn't have a strong inside a heading, but due to design requirements I need to bold the second word but not the first one.

I'm trying to make sure that this text is still accessible, but when I use a screen reader it gives me weird readings. I'm guessing it is because of the <strong> tag inside the <h2> tag.

When I hover on the heading it shows word 1 and I have to hover over word 2 to show it in the reader, where the desired behavior would be: hover the heading and read word 1 and 2.

Using <span> and <b> tags produces the same behavior.

Does anyone know a better way to do this? Am I missing something?


Solution

  • You can perfectly put a strong element inside a heading. It is semantically correct.

    https://www.w3.org/TR/html5/text-level-semantics.html#the-strong-element

    Importance: The strong element can be used in a heading, caption, or paragraph to distinguish the part that really matters from other parts of the that might be more detailed, more jovial, or merely boilerplate.

    Your problem of "weird reading" reflects a problem within the use or behavior of your screen reader, not from your syntax.