Ciao, beh un'immagine dietro il testo puoi gestirla col background-image dell'elemento che contiene il testo, se questo ha dimensioni sufficienti per mostrare l'intera immagine; oppure usando un elemento <img> posizionato in modo assoluto per poterne gestire la sovrapposizione col testo.
Ti sconsiglio però questo metodo; l'uso di immagini "statiche" per ricreare effetti del genere è poco pratico - si faceva 20, 25 anni fa quando HTML e CSS avevano funzionalità piuttosto limitate rispetto ad oggi - pensa, se hai più testi a cui vuoi applicare tale effetto, dovrai realizzare una relativa immagine per ciascuno; se poi decidi per qualche ragione di cambiare font nella pagina, dovrai ricreare e aggiornare opportunamente le relative immagini.
Sicuramente si può ragionare per delle soluzioni più pratiche con l'uso di opportuno CSS o con altre eventuali tecniche, vedi SVG.
Qui ho realizzato un Pen di esempio usando uno pseudo elemento (::before) che pesca il testo da un attributo data, così da "clonare" il testo di quell'elemento. Ho usato poi le proprietà text-stroke e text-fill-color per ottenere l'effetto contorno testo:
CSS text outline watermark effect
Il risultato mi sembra buono anche se purtroppo le proprietà text-stroke e text-fill-color al momento non sono standardizzate, benché siano supportate, con l'uso del prefisso -webkit-, dalla maggior parte degli odierni browser.
Se vuoi andare su proprietà standard, per l'effetto contorno testo è possibile usare un piccolo trucco con la proprietà text-shadow.
Qui il codice:
codice HTML:
<style>
h1 {
font: bolder 80pt 'Arial Narrow', Arial, sans-serif;
font-stretch: condensed;
text-transform: uppercase;
text-align: center;
color: #0a2b41;
white-space: nowrap;
}
[data-watermark]{
position: relative;
}
[data-watermark]:before{
content: attr(data-watermark);
position: absolute;
top: calc(50% - .35em);
left: 50%;
transform: translate(-50%,-50%) scale(1.5);
z-index: -1;
line-height: 0;
opacity: .15;
/* Qui l'effetto contorno, riprodotto con proprietà attualmente non-standard */
color: #000;
-webkit-text-stroke: 1px #000;
-webkit-text-fill-color: transparent;
/* Qui invece un effetto equivalente ma con proprietà standard */
/*
color: #fff;
mix-blend-mode: multiply;
text-shadow:
1px 0 0 #000,
0 1px 0 #000,
-1px 0 0 #000,
0 -1px 0 #000,
1px 1px 0 #000,
-1px 1px 0 #000,
-1px -1px 0 #000,
1px -1px 0 #000;
*/
}
</style>
<h1 data-watermark="About Us">About Us</h1>
Nel codice ci sono entrambi i metodi (vedi commenti). Se preferisci usare proprietà pienamente standard, rimuovi il primo metodo e decommenta il secondo.
Vedi se può andare bene, fai sapere.