Editar - Título original: ¿Hay una forma alternativa de conseguir border-collapse:collapse
en CSS
(con el fin de tener una, mesa de esquina redondeada colapsado)?
Como resulta que el simple hecho de colapsar los bordes de la tabla no resuelve el problema raíz, he actualizado el título para reflejar mejor la discusión.
Estoy tratando de hacer una tabla con esquinas redondeadas usando la CSS3
border-radius
propiedad Los estilos de tabla que estoy usando se parecen a esto:
table {
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px
}
Aquí está el problema. También quiero establecer la border-collapse:collapse
propiedad, y cuando eso se establece border-radius
ya no funciona. ¿Hay alguna forma basada en CSS que pueda obtener el mismo efecto que border-collapse:collapse
sin usarlo?
Ediciones:
He hecho una página simple para demostrar el problema aquí (solo Firefox / Safari).
Parece que una gran parte del problema es que configurar la tabla para que tenga esquinas redondeadas no afecta las esquinas de los td
elementos de esquina . Si la tabla fuera de un solo color, esto no sería un problema, ya que podría td
redondear las esquinas superior e inferior para la primera y la última fila respectivamente. Sin embargo, estoy usando diferentes colores de fondo para la tabla para diferenciar los encabezados y las rayas, por lo que los td
elementos internos también mostrarán sus esquinas redondeadas.
Resumen de soluciones propuestas:
Rodear la mesa con otro elemento con esquinas redondeadas no funciona porque las esquinas cuadradas de la mesa "sangran".
Especificar el ancho del borde a 0 no contrae la tabla.
Las td
esquinas inferiores siguen siendo cuadradas después de establecer el espacio de celdas en cero.
En cambio, usar JavaScript funciona evitando el problema.
Soluciones posibles:
Las tablas se generan en PHP, por lo que podría aplicar una clase diferente a cada uno de los th / tds externos y diseñar cada esquina por separado. Prefiero no hacer esto, ya que no es muy elegante y es un poco difícil aplicarlo en varias tablas, así que sigan enviando sugerencias.
La posible solución 2 es usar JavaScript (jQuery, específicamente) para diseñar las esquinas. Esta solución también funciona, pero aún no es lo que estoy buscando (sé que soy exigente). Tengo dos reservas:
- este es un sitio muy liviano, y me gustaría mantener JavaScript al mínimo
- Parte del atractivo que tiene para mí el uso del radio de borde es la degradación elegante y la mejora progresiva. Al usar border-radius para todas las esquinas redondeadas, espero tener un sitio consistentemente redondeado en navegadores con capacidad CSS3 y un sitio consistentemente cuadrado en otros (te estoy mirando, IE).
Sé que tratar de hacer esto con CSS3 hoy puede parecer innecesario, pero tengo mis razones. También me gustaría señalar que este problema es el resultado de la especificación w3c, no el mal soporte de CSS3, por lo que cualquier solución seguirá siendo relevante y útil cuando CSS3 tenga un soporte más extendido.