2012-06-08 18 views
15

Ok, è possibile.HTML/CSS: testo "Visualizza attraverso lo sfondo"?

Ho un'immagine di sfondo. Per di più, ho una scatola grigia trasparente per il contenuto. Mi piacerebbe avere il titolo in alto nel testo, cioè le lettere che espongono lo sfondo. Quindi, il testo rimuove la casella grigia e lascia trasparire lo sfondo.

L'unico modo hacky che riesco a vedere è creare un'immagine con le lettere trasparenti su uno sfondo dello stesso colore grigio, quindi provare ad allineare in qualche modo quella con la casella grigia.

C'è un altro - meglio?

+1

Può essere utile utilizzare la proprietà di opacità CSS 3. http://www.w3schools.com/css/css_image_transparency.asp – Celeritas

+1

Perché è "hacky"? È uno strato con una trasparenza. –

+1

L'unico modo in cui posso pensare è solo WebKit. Va bene? – Ryan

risposta

17

Un modo è utilizzare -webkit-background-clip: text;: demo here (solo Webkit ovviamente).

Utilizzando posizione, siamo in grado di sincronizzare entrambi gli sfondi:

#container, #container h1 { 
    background: url(bg.png) 
} 

#container { 
    position: relative; 
} 

#container #gray { 
    background: rgba(0,0,0,.8); 
    padding-top: 8em; 
} 

#container h1 { 
    font-size: 8em; 
    padding-top: /* padding + border of div */; 
    position: absolute; 
    -webkit-text-fill-color: transparent; 
    -webkit-background-clip: text; 
}​ 

Oppure si potrebbe usare lo stesso approccio e applicare un svg mask, che funzionerà in tutti i browser moderni.

+2

Questo in realtà è piuttosto carino in Chrome. –

+0

Che sembra perfetto in Webkit - puoi approfondire come utilizzare il CVG per non-webkit? – mtyson

+1

@mtyson http://jsfiddle.net/NT7z7/12/ Dovresti usare alcuni js per generare SVG, per mantenere pulito il codice sorgente. – jasssonpet

Problemi correlati