opacity - определяет уровень прозрачности элемента веб-страницы.
Если элемент, для которого применено свойство opacity, содержит внутри себя другие элементы, то они также изменят свою прозрачность.
opacity применяется к элементу в целом, включая его содержимое, даже если значение не наследуется дочерними элементами. Таким образом, элемент и его дочерние элементы имеют одинаковую непрозрачность относительно фона элемента , даже если они имеют различную непрозрачность относительно друг друга.
.text__bg {
opacity: 0;
transition: opacity .4s .2s;
}
.text__bg.active {
opacity: 1;
}
$('.text__bg').addClass('active');
С точки зрения семантики это заголовки.
Нужны ли они тут с точки зрения SEO это отдельная история, но не полностью забота верстальщика.
Второе это нормально, первое было бы странно.