Making an h2 tag with a strong tag inside accessib

2019-03-04 03:10发布

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.

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

Edit: sorry, you are right "weird readings" doesn't say much. When I hover at 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.

Edit 2: use <span> and <b> tags produces the same behavior

3条回答
干净又极端
2楼-- · 2019-03-04 03:49

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.

查看更多
淡お忘
3楼-- · 2019-03-04 04:01

Having a strong in a h2 can be perfectly fine. But it depends on the actual content if strong is appropriate. It’s not appropriate if you only need it to make the text bold.

Look at all of the text-level semantic elements. Use the span element (because it’s meaningless) if no other element is suitable.

The way screen readers read this heading has most likely nothing to do with strong in particular, but it’s just the way some screen readers behave when they encounter an element (may it be strong, span, or whatever). You don’t have to worry about this. Screen reader users know and expect this, and they have ways to change this if they want to.

查看更多
男人必须洒脱
4楼-- · 2019-03-04 04:04

I'm not sure what "weird readings" means.

How about a <span> tag?

<h2>One <span>Two</span></h2>
h2 {
  font-family: sans-serif;
  font-weight: normal;
}
h2 span {
  font-weight: bold;
}

Demo JSFiddle

查看更多
登录 后发表回答