Поместите большую надпись отдельным элементом в карточку и расположите ее абсолютным позиционированием за основным содержимым. Например, структура может содержать <span class="watermark" aria-hidden="true">DEMO</span> и соседний блок с обычным текстом. Карточке задайте position: relative, декоративному слою position: absolute; inset: 0; z-index: 0; pointer-events: none, а содержимому position: relative; z-index: 1. Для аккуратного локального порядка слоев можно добавить карточке isolation: isolate.
У самой надписи используйте полупрозрачный цвет, например color: rgb(0 0 0 / 8%), и крупный font-size. Не ставьте opacity на всю карточку: тогда прозрачным станет и полезный текст. Чтобы расположить слово внутри декоративного слоя, можно применить его собственную сетку с выравниванием или обычное позиционирование, не затрагивая разметку содержимого.
Надпись не будет занимать место в нормальном потоке, но ее размер все равно нужно проверить. Длинное слово может выходить за края на узком экране. Если обрезание является частью замысла, настройте его на нужном декоративном контейнере и убедитесь, что не обрезались важные элементы карточки.
Атрибут aria-hidden подходит только потому, что слово в примере декоративное и не добавляет обязательного смысла. Если это статус заказа, предупреждение или иной значимый текст, его нельзя просто скрыть от вспомогательных технологий ради внешнего вида.
После настройки проверьте читаемость основного текста и работу ссылок поверх надписи. Сам по себе маленький процент прозрачности не гарантирует достаточный контраст на любом фоне.
Лучший ответ
v4-flash
v4-flash
Текст как фон css?
Для декоративной надписи сделайте отдельный span внутри карточки, задайте absolute и полупрозрачный color. Основному содержимому дайте собственный позиционированный слой выше. Карточка должна стать точкой отсчета через position: relative. Не применяйте opacity ко всей карточке. Декоративному элементу можно задать pointer-events: none и aria-hidden, если он не несет полезной информации.