КОРОТКИЙ ОТВЕТ
Нет, я не верю, что вы получаете какие-либо возможности стилевого оформления CSS при использовании любого из них.Но вы получаете семантические преимущества, которые принесут SEO и преимущества доступности.
ДОЛГО ОТВЕТ
По моему мнению, вы должны заключить их в span
элемент.Это связано с тем, что span
более семантически корректен.
Это следующее из W3:
Тег определяет раздел или раздел в документе HTML.
Лично я бы не думал о svg
как о разделе или разделе в HTML-документе.
Если бы мне пришлось попытаться оправдать использование span
вместо div
длязначок, я бы указал на wai-aria
рекомендации для компонента accordion
(или любой другой пример по этой ссылке).Который можно найти здесь .В следующей ссылке они приводят этот пример:
<h3>
<button aria-expanded="true"
class="Accordion-trigger"
aria-controls="sect1"
id="accordion1id">
<span class="Accordion-title">
Personal Information
<span class="Accordion-icon"></span>
</span>
</button>
</h3>
Как вы можете видеть, они используют элемент span
.Внутри этих тегов я бы ожидал иконку.Так что в вашем примере это будет выглядеть примерно так:
<StyledIconSpan class="Accordion-icon">
<Icon icons={ICONS.BUBBLE}/>
</StyledIconSpan>
Я бы поставил StyledIconSpan
на уровне компонентов, а не в вашем Icon
компоненте.Так что Component File: Icon.js
останется прежним.И в вашем Компоненте, где он будет потребляться, используйте его в приведенном выше примере.
Надеюсь, это поможет.