Edit - Original Tytuł: Czy istnieje alternatywny sposób osiągnięcia border-collapse:collapse
w CSS
(w celu uzyskania upadł, zaokrąglony narożnik tabeli)?
Ponieważ okazuje się, że zwykłe zwinięcie granic tabeli nie rozwiązuje głównego problemu, zaktualizowałem tytuł, aby lepiej odzwierciedlić dyskusję.
Próbuję zrobić stół z zaokrąglonymi narożnikami, używając CSS3
border-radius
właściwości. Style tabel, których używam, wyglądają mniej więcej tak:
table {
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px
}
Oto problem. Chcę także ustawić border-collapse:collapse
właściwość, a gdy zostanie border-radius
ona ustawiona, przestanie działać. Czy istnieje sposób oparty na CSS, border-collapse:collapse
dzięki któremu mogę uzyskać taki sam efekt, jak w rzeczywistości bez jego używania?
Edycje:
Stworzyłem prostą stronę, aby zademonstrować tutaj problem (tylko Firefox / Safari).
Wygląda na to, że duża część problemu polega na tym, że ustawienie tabeli zaokrąglonych narożników nie wpływa na narożniki td
elementów narożnych . Gdyby stół miał tylko jeden kolor, nie stanowiłoby to problemu, ponieważ mogłem po prostu td
zaokrąglić górne i dolne rogi odpowiednio dla pierwszego i ostatniego rzędu. Używam jednak różnych kolorów tła dla tabeli, aby odróżnić nagłówki i paski, więc td
elementy wewnętrzne będą również pokazywały zaokrąglone rogi.
Podsumowanie proponowanych rozwiązań:
Otaczanie stołu innym elementem z okrągłymi narożnikami nie działa, ponieważ kwadratowe narożniki stołu „krwawią”.
Podanie szerokości ramki na 0 nie powoduje zwinięcia tabeli.
Dolne td
rogi wciąż są kwadratowe po ustawieniu odstępu komórek na zero.
Zamiast tego użycie JavaScript - pozwala uniknąć problemu.
Możliwe rozwiązania:
Tabele są generowane w PHP, więc mógłbym po prostu zastosować inną klasę do każdego z zewnętrznych th / tds i stylizować każdy narożnik osobno. Wolałbym tego nie robić, ponieważ nie jest to zbyt eleganckie i trochę kłopotliwe dla wielu stołów, więc proszę o sugestie.
Możliwym rozwiązaniem 2 jest użycie JavaScript (w szczególności jQuery) do stylizacji narożników. To rozwiązanie również działa, ale wciąż nie do końca to, czego szukam (wiem, że jestem wybredny). Mam dwie rezerwacje:
- jest to bardzo lekka strona i chciałbym ograniczyć JavaScript do minimum
- częścią apelu, który ma dla mnie użycie granicy promienia, jest pełna wdzięku degradacja i stopniowe ulepszanie. Używając promienia obramowania dla wszystkich zaokrąglonych rogów, mam nadzieję, że będę mieć konsekwentnie zaokrągloną stronę w przeglądarkach obsługujących CSS3 i konsekwentnie kwadratową stronę w innych (patrzę na ciebie, IE).
Wiem, że próba zrobienia tego dzisiaj z CSS3 może wydawać się niepotrzebna, ale mam swoje powody. Chciałbym również zauważyć, że ten problem jest wynikiem specyfikacji w3c, a nie słabej obsługi CSS3, więc każde rozwiązanie będzie nadal odpowiednie i przydatne, gdy CSS3 będzie bardziej rozpowszechniony.