2009-07-05 18 views
17

Kwestia ta jest o własności CSS3 border-radius (http://www.css3.info/border-radius-apple-vs-mozilla/)Webkit promień granicy czasami obowiązywać

Przykładem tego problemu jest tutaj:

http://jamtodaycdn.appspot.com/bin/rounded.html

W tym adresem URL, mam zaokrąglone divy, które wydają się zaokrąglone w FF3, ale w Safari i Chrome nie ma zaokrąglonych rogów.

Styl jest w następujący sposób:

-moz-border-radius-bottomleft:2px; 
-moz-border-radius-bottomright:92px; 
-moz-border-radius-topleft:92px; 
-moz-border-radius-topright:2px; 
-webkit-border-bottom-left-radius: 2px; 
-webkit-border-bottom-right-radius: 92px; 
-webkit-border-top-left-radius: 92px; 
-webkit-border-top-right-radius: 2px; 

jestem dość pewny, że CSS jest prawidłowo sformatowany, więc jestem bladego pojęcia na czym polega problem.

Odpowiedz

14

Problem pojawia się w promieniach 92px. Wygląda na to, że maksymalny promień, który może obsłużyć element o wysokości 20 pikseli, wynosi 18 pikseli. Nie jest oczywiste, co oznacza promień 92 pikseli w tym przypadku. Można jednak określić zarówno X i Y za pomocą promienia coś takiego:.

-webkit-border-bottom-right-radius: 92px 18px; 

(dygresja, nie należy używać tego samego identyfikatora dla wielu elementów HTML Zamiast tego należy użyć klasy i dostosować swój CSS selektor, więc mówi .round zamiast #round.)

+0

Dobra uwaga na temat identyfikatora. To było coś, co zhakowałem w kilka sekund, ale to zawsze dobra rada. – jamtoday

+0

Część o maksymalnym promieniu ma sens, ale burzliwą częścią tego zachowania jest to, że jeśli nie może renderować obramowania, jak określono, to wcale nie zaokrągla granicę, podczas gdy Mozilla renderuje granicę tak bardzo, jak to tylko możliwe. – jamtoday

1

Nie musisz stosować właściwości obramowania lub szerokości brzegowej, a także różnych właściwości o zakresie brzegowym?

Zauważyłem też, że Safari upuszcza promień powyżej określonych wartości promienia - spróbuj zmniejszyć wartości pikseli & Zobacz, co się stanie.

+1

Odnośnie pkt jednej, nie, nie musisz określać właściwości "border" lub "border-width", aby użyć właściwości "border-radius". –

2

Dla każdego, kto mówi o tym za pomocą zaokrąglonych narożników, zgadzam się z odpowiedzią Jacoba na temat Webkita, ale w pytaniu wspomniano również, że Chrome nie działa. Chrome używa standardowych zaokrąglonych rogów CSS3, które są dokładnie takie, jak Webkitów, ale bez poprzedzającej "-webkit-" reguły. Są one następujące:

border-bottom-right-radius:2px; 

do uwzględnienia Firefox, Chrome i Webkit, trzeba by zrobić coś takiego:

-moz-border-radius-topright:3px; 
-moz-border-radius-bottomright:3px; 
-webkit-border-top-right-radius:3px; 
-webkit-border-bottom-right-radius:3px; 
border-top-right-radius:3px; 
border-bottom-right-radius:3px; 

Trzeci zestaw reguł są zasady CSS3 i są obsługiwane przez Chrome. Jest to dobry sposób, aby również uzyskać zaokrąglone narożniki w IE za pomocą czegoś podobnego CSS3Pie: http://css3pie.com/

1

typ prosty wystarczy użyć:

border-radius:92px 92px 2px 2px;

gdzie:

border-radius:top right bottom left;

Powiązane problemy