разница не между <span>
и <div>
конкретно, а между inline
и block
элементами. <span>
по умолчанию равно display:inline;
, тогда как <div>
по умолчанию равно display:block;
. Но они могут быть переопределены в CSS.
Разница в том, как работает text-align:center
, сводится к ширине.
Элемент block
по умолчанию равен ширине своего контейнера. Его ширина может быть установлена с помощью CSS, но в любом случае это фиксированная ширина.
Элемент inline
получает свою ширину от размера текста содержимого.
text-align:center
говорит тексту позиционировать себя центрально в элементе. Но в элементе inline
это явно не будет иметь никакого эффекта, потому что ширина элемента равна ширине текста; совмещать его так или иначе бессмысленно.
В элементе block
, поскольку ширина элемента не зависит от содержимого, содержимое можно размещать внутри элемента с использованием стиля text-align
.
Наконец, решение для вас:
Существует дополнительное значение для свойства display
, которое обеспечивает промежуточный дом между block
и inline
. Достаточно удобно, это называется inline-block
. Если вы укажете <span>
в CSS как display:inline-block;
, он будет продолжать работать как встроенный элемент, но также примет некоторые свойства блока, такие как возможность указать width
. Как только вы укажете ширину для нее, вы сможете центрировать текст в пределах этой ширины, используя text-align:center;
Надеюсь, это поможет.