2010-05-30 7 views
32

저는 CSS3를 실험 해본 결과 이상한 것을 발견했습니다.Chrome의 상자 그림자 및 경계 반경 버그

alt text http://i47.tinypic.com/j8egp5.png

그러나 크롬은 국경 밖에서 그림자를 렌더링 :

border:#446429 solid 1px; 
border-radius:15px; 
-moz-border-radius:15px; 
-webkit-border-radius:15px; 
box-shadow:3px 0px 15px #000000 inset,0px 3px 15px #000000 inset; 
-moz-box-shadow:3px 0px 15px #000000 inset,0px 3px 15px #000000 inset; 
-webkit-box-shadow:3px 0px 15px #000000 inset,0px 3px 15px #000000 inset; 

오페라와 파이어 폭스의 렌더링 같은 완벽한됩니다 Heres는 DIV 스타일의 일부이다

alt text http://i45.tinypic.com/5doykw.png

그것은 그렇게되어야 하는가 아니면 내가 중요한 것을 놓쳤는가?

+3

요 전날이 버그를 발견했습니다. 그것은 나를 슬프게했다. 또한 슬프게도 사파리는 삽입 상자 그림자를 전혀 지원하지 않는다는 것입니다. – jessegavin

답변

27

이 알려진 버그 다음과 같습니다

http://code.google.com/p/chromium/issues/detail?id=29427

체크 아웃 버그 토론을, 당신이 해결 방법을 찾을 수 있습니다. 이 버그를 빨리 해결하려면이 버그에 별표를 표시하십시오!

+0

감사합니다.이 버그가 곧 수정 될 것입니다. 그것을 쳐다 봤다. –

+0

현재로, 그것은 고쳐지고 dev 채널에서 사용 가능합니다! (안정된 채널의 모든 사람들에게 돌아갈 때 4 주에서 10 주가 소요될 것입니다.) 세부 정보 : http://paulirish.com/2011/chrome-inset-box-shadow-bug-fixed/ –

+3

그들은 고정 되어도 여전히 문제가 발생한다고 말합니다. 1px 흐림 효과가있는 인세 트 상자 그림자를 설정하고 테두리 반경 만 아래로하면 요소 양쪽에 두 개의 못생긴 균일 한 밴드가 생깁니다. 사라지는 한 픽셀의 그림자 흐림 효과를 변경하면이 밴드의 크기는 수직이 아닌 하단 그림자의 수평 값과 관련됩니다. 이것이 고정을 의미하는 경우 ... – Bakaburg

0

시도해보십시오.이 -webkit-box-shadow를 사용하십시오 : inset 0px 0 7px rgba (255, 242, 94, 0.4); rgba를 사용하여 문제를 해결하는 것 같습니다.

행운을 빈다.

+0

세계에서 어떻게 고정되어 있었는지 모르겠다. 나는 rgba를 사용하고 있으며 여전히 경계 반경 바깥에 표시하고 있습니다. Mac에서만 ok를 표시합니다. – Ragnar

+0

나를 위해 (Win2k3에서 6.0.472.55) 작동하지 않는 것 같습니다. –

+0

죄송합니다. 수정 사항이 적용되지 않았습니다. –

3

내가 본 유일한 해결 방법은 그림자가있는 요소에 테두리를 놓고 그 테두리를 그림자 확산보다 넓게 만드는 것입니다. 이 같은 삽입 된 그림자 그래서 :

box-shadow:inset 0 0 7px #000; 

당신은 다음과 같이 테두리를 추가해야합니다 :

border:solid 7px #fff; 

그것은 당신이 일치 할 필요 상자 그림자 선언에서 세 번째 숫자입니다 (또는 초과). 요소에 큰 뚱뚱한 오래된 테두리를 원하지 않는다면, 테두리 뒤의 배경과 테두리를 똑같이 만들 필요가 있습니다. 따라서이 해결 방법은 요소가 패턴이있는 이미지 또는 그라디언트 위에있는 경우에는별로 도움이되지 않습니다. 그러나 단색의 색상에서는보기 흉하게 작동합니다.

+0

해결 방법을 제공해 주셔서 감사합니다.하지만 버그가 그라디언트와 패턴을 정확히 넘어서 왔습니다. –

3

방금 ​​문제가 발견되었지만 추가 마크 업이 필요합니다. 둥근 모서리와 내부 그림자가있는 요소를 같은 둥근 모서리와 숨겨진 다른 컨테이너에 넣어야합니다. 테두리 수정 상기 발표

<div class="foo"><div>Hello!</div></div> 
<style type="text/css"> 
    .foo {-webkit-border-radius: 10px; overflow: hidden;} 
    .foo div {-webkit-border-radius: 10px; -webkit-box-shadow: inset 1px 1px rgba(50%, 50%, 50%, .5);} 
</style> 

테두리 반경 충돌 및 (때문에 테두리 색상) 요소 아래 배경 이미지 incompartible이다.

감사합니다.

+0

답변을 주셔서 감사합니다.하지만 한 브라우저의 버그를 숨기기 위해 마크 업을 추가하는 것이 가장 좋은 결정이라고 생각하지 않습니다. 또한, 웹킷에 상당한 진전이 있었고, 아마도 가까운 미래에 해결 될 것으로 보입니다. –

+0

1 년이지나 갔지만이 버그는 아직 해결되지 않았습니다.) – Tony

0

음수 값을 사용하면 나를 위해 문제가 해결되었습니다.

-webkit-border-radius:10px; 
-webkit-box-shadow: -1px -1px 2px #CCC; 
+0

솔루션에 * inset * 상자 그림자가 사용되지 않습니다. 버그는 삽입되지 않은 상자 그림자에는 나타나지 않습니다. –

0

이 버그는 최신 카나리아 빌드에서 수정되었습니다.:)

6

배경과 같은 색 인 삽입 그림자를 먼저 넣는 것은 페이지에 추가 마크 업을 넣지 않고도 잘 작동하는 것 같습니다.

예. 당신은 흰색 배경 페이지가 있다면 :

-webkit-box-shadow:1px 1px 1px #fff inset,0px 0px 5px #333 inset; 
0
베스 Fauld의 솔루션은 거의 다음과 같이 단지 약간의 실수가,이 보일 것입니다 작동

:

#fff은 배경색이
-webkit-box-shadow:1px 1px 0px 1px #fff inset, 0px 0px 5px #333 inset; 

(상자 바깥 쪽), # 333은 음영 색입니다.

-webkit-box-shadow의 세 번째 값은 흐림 크기를 정의하는 반면 네 번째는 그림자 (불투명) 크기를 정의하므로 후자는 1px로 설정되어야합니다.