2009-12-24 18 views
6

Per qualche motivo quando si applica un'immagine di sfondo a una tr in Safari/Chrome, la esegue come se la regola fosse valida per ogni td.CSS/Webkit: immagini di sfondo per riga tabella

Firefox:

Firefox http://www.whyprime.com/temp/table-firefox.png

Safari:

Safari http://www.whyprime.com/temp/table-safari.png

Ho trovato questo articolo che discute una correzione:

http://snook.ca/archives/html_and_css/applying_a_back

Sono riuscito a farlo funzionare in IE con le immagini spaziali ma non riesco a capirlo per Safari.

http://www.whyprime.com/temp/table-background.html

+0

E il tuo codice sarebbe dove? –

risposta

3

sarà il vostro tavolo sempre avere solo 2 file? Come ad esempio:

<table> 
    <tr> 
    <td></td> 
    <td></td> 
    </tr> 
</table> 

Se è così, una soluzione semplice ma non eccessivamente elegante, potrebbe essere quella di dividere l'immagine di sfondo in due immagini, e applicare una classe CSS alla colonna di sinistra e destra, applicando la metà della freccia per il lato destro della colonna di sinistra, e sul lato sinistro della colonna di destra:

<table> 
    <tr> 
    <td class="left"></td> 
    <td class="right"></td> 
    </tr> 
</table> 

tuo CSS potrebbe quindi essere simile a:

td.left 
{ 
    background: #ffffff url(../PathToLeftBackground.png) top right; 
} 
td.right 
{ 
    background: #fffff url(../PathToRightBackground.png) top left; 
} 

si potrebbe anche usare un'immagine sprite in cui si usa 1 immagine e posizionala diversamente per i due sfondi.

Mi rendo conto che probabilmente non è la soluzione ideale, ma risolverebbe almeno il problema e farà muovere il progetto. A volte uso soluzioni semplici come questa per far progredire i progressi e quindi rivisitare il problema per renderlo più efficiente in seguito.

Spero che questo aiuti!

+0

Ah Suppongo che sarebbe il modo in cui tradizionalmente faresti le immagini di sfondo per un tavolo. È passato così tanto tempo da quando ho dovuto seriamente ideare un tavolo con sfondi affettati e tutto ciò che non avevo nemmeno pensato.Sono stato in grado di mitigare i problemi di visualizzazione nei browser Webkit posizionando lo sfondo con valori x/y, ma in futuro questa sarà la strada che prenderò e basta usare javascript per applicare in modo dinamico gli stili di sfondo appropriati per mantenere la markup pulita e semplice . Contrassegnerò come risposta per il buon consiglio e la soluzione funzionale. Grazie fratello! –

8

Per impostazione predefinita, TR e TD hanno proprietà di visualizzazione tabella-cella e tabella-riga. Abbiamo bisogno di loro di non pensarci più e si sentono come elementi di blocco semplici:

tr {display: block;} 
td {display: inline-block; background: transparent;} 

Questo codice ha risolto il problema di rendere per me.

+0

Grazie per la correzione perfetta per me con l'aggiunta del webkit @media CSS hack. '@ schermata media e (-webkit-min-device-pixel-ratio: 0) { tr {display: block;} \t td {display: blocco inline; larghezza: 195px} }' – Jamie

+0

Sei DIO! !! Non proprio, ma la tua soluzione mi ha aiutato. Grazie. – Steve

+0

Grazie per la tua soluzione, abbiamo risparmiato molto tempo. –

11

è un po 'in ritardo ma, è possibile utilizzare "background-attachment: fixed" per risolvere questo problema.

<table> 
    <tr class="bg"> 
    <td></td> 
    <td></td> 
    </tr> 
</table> 

e nei CSS

tr.bg { 
    background-image : url(../PathToLeftBackground.png) repeat-y 50px 0px; 
    background-attachment: fixed; 
} 

e funziona!

+1

Hai mai scrollato con questo? È un po 'strano – HerrSerker

+0

Grazie per la tua idea. Ho trascorso 1 settimana alla ricerca di una buona soluzione per il tavolo da biliardo. Grazie. – Peter

+0

Ciò mi ha salvato la vita. TI AMO. – thouliha

Problemi correlati