Edit - Titolo originale: Esiste un modo alternativo per raggiungere border-collapse:collapse
in CSS
(in modo da avere un tavolo d'angolo arrotondato crollato)?
Dal momento che si scopre che semplicemente far collassare i bordi del tavolo non risolve il problema di root, ho aggiornato il titolo per riflettere meglio la discussione.
Sto cercando di creare un tavolo con angoli arrotondati usando la CSS3
border-radius
proprietà. Gli stili di tabella che sto usando sono simili a questi:
table {
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px
}
Ecco il problema Voglio anche impostare la border-collapse:collapse
proprietà e quando impostato border-radius
non funziona più. Esiste un modo basato su CSS per ottenere lo stesso effetto border-collapse:collapse
senza utilizzarlo effettivamente?
modifiche:
Ho creato una semplice pagina per dimostrare il problema qui (solo Firefox / Safari).
Sembra che gran parte del problema risieda nel fatto che l'impostazione della tabella in modo che abbia angoli arrotondati non influisce sugli angoli degli td
elementi angolari . Se il tavolo fosse tutto di un colore, questo non sarebbe un problema poiché potrei solo td
arrotondare gli angoli superiore e inferiore rispettivamente per la prima e l'ultima riga. Tuttavia, sto usando diversi colori di sfondo per la tabella per differenziare le intestazioni e per le strisce, così anche gli td
elementi interni mostrerebbero i loro angoli arrotondati.
Riepilogo delle soluzioni proposte:
Circondare il tavolo con un altro elemento con angoli arrotondati non funziona perché gli angoli quadrati del tavolo "sanguinano".
Se si specifica la larghezza del bordo su 0, la tabella non viene compressa.
Gli td
angoli inferiori continuano a quadrare dopo aver impostato la spaziatura cellulare su zero.
L'uso di JavaScript invece funziona evitando il problema.
Possibili soluzioni:
Le tabelle sono generate in PHP, quindi potrei semplicemente applicare una classe diversa a ciascuno dei th / td esterni e modellare ogni angolo separatamente. Preferirei non farlo, dal momento che non è molto elegante e un po 'una seccatura da applicare a più tavoli, quindi per favore continuate a ricevere suggerimenti.
La possibile soluzione 2 è utilizzare JavaScript (jQuery, in particolare) per dare uno stile agli angoli. Anche questa soluzione funziona, ma non è proprio quello che sto cercando (so di essere esigente). Ho due riserve:
- questo è un sito molto leggero e mi piacerebbe mantenere JavaScript al minimo
- parte del fascino che l'uso del confine-raggio ha per me è il grazioso degrado e il miglioramento progressivo. Utilizzando il raggio del bordo per tutti gli angoli arrotondati, spero di avere un sito costantemente arrotondato nei browser compatibili con CSS3 e un sito costantemente quadrato in altri (ti sto guardando, IE).
So che provare a farlo con CSS3 oggi può sembrare inutile, ma ho le mie ragioni. Vorrei anche sottolineare che questo problema è il risultato della specifica w3c, non di un supporto CSS3 scarso, quindi qualsiasi soluzione sarà comunque pertinente e utile quando CSS3 avrà un supporto più diffuso.