2010-01-19 3 views
0

나는 꽤 많은 양의 그림자와 그라디언트를 사용하는 웹 사이트를 만들고 있습니다. CSS의 상자 그림자 속성을 통해 많은 작업을 수행 할 수 있습니다.CSS : CSS에 명시되었지만 나중에 무시되는 이미지일까요?

아아아, 우리는 여전히 IE를 지원하므로 이러한 상황에서 배경 이미지를 추가해야합니다.

저는 게으르며 모든 사람에게 배경 이미지를 줄 수 있지만 최신 브라우저를 사용하는 사람들을 위해 간소화하려고합니다. 이상적으로, 나는 그 사용자가 심상을 요구할 필요 없게하고 싶으면.

.box { 
    background: url('myImage.jpg'); 
} 

.box-shadowSupport { 
    background: none; 
    [box shadow properties go here] 
} 

있는 HTML이처럼 보이는 끝나는 경우 브라우저가 상자 그림자 (박스 shadowSupport)를 지원하고 내 CSS는 다음과 같이보고 끝나는 경우

그래서, 난 자바 스크립트를 통해 별도의 클래스를 추가 해요 이 :

<div class="box box-shadowSupport"></div> 

이미지가 요청 되나요? 또는 브라우저가 배경 이미지 속성을 오버 라이딩하는 두 번째 스타일로 인해 필요하지 않다는 것을 이해합니까?

이미지가 요청 된 경우 캐스케이드를 통해 스타일을 오버 라이드하는 대신 CSS와 자바 스크립트를 다시 정렬해야하므로 클래스를 스왑해야하므로 처음에는 HTML에서 참조되지 않습니다. .

답변

3

나는 모든 웹 브라우저가 자신의 방식대로이를 처리 할 것이라고 믿는다. 보통은 : Charles과 같은 웹 프록시를 사용하여 이미지가 요청되었는지 확인한다. 그리고 물론 다른 브라우저에서 이것을 테스트하십시오.

2

이 같은 별도의 시트에 IE의 특정 스타일을 정의하고 conditional comments와 함께로드 고려할 수 있습니다 무엇 :

<!--[if IE]> 
<link rel="stylesheet" id="ie-css" href="ie-specific.css" 
    type="text/css" media="all" /> 
<![endif]--> 

이는 IE 관련 설정과 시트를로드하고 당신이 할 수있는 다른 클래스를 !important 마커로 덮어 씁니다. 조건부 주석은 IE5 이후에 있었으며 다른 브라우저는 위의 블록을 무시합니다.

+0

캐치 (적어도이 경우)는 IE 브라우저와 나머지 사이에 명확한 구분이 없다는 것입니다. 어떤 경우에는 FF 및 WebKit 브라우저를 찾고 있습니다. 가끔 Opera를 목록에 추가하려고합니다. 등 –

+1

아마도 가장 좋은 방법은 HTTP 요청을 추적하기 위해 Fiddler와 같은 것을 사용하는 것입니다. 나는 모든 브라우저가 다를 것이라고 생각한다. 이곳에서 피들러를 확인하십시오 : http : //www.fiddler2.co.kr/fiddler2/ –

2

IE의 그림자를 건너 뛰는 것이 좋습니다.

대부분의 사람들은 하나의 브라우저 만 사용하며 그림자가 있어야한다는 것을 모릅니다. 브라우저가 정상적으로 보일 때마다 사이트가 다르게 보일 경우 큰 문제는 아닙니다 (즉, 이상하지는 않습니다).

그렇지 않으면, 즉 특정 CSS의 경우 태그로 사용하고, 드롭 그림자를 할 수 있습니다으로 :

.box { 
    filter: progid: DXImageTransform.Microsoft.dropShadow(
      color=#818181, 
      offX=5, offY=5, 
      positive=true); 
} 

see here에 대한 자세한 내용은.

+0

그게 내 선호도 될거야. 아아, 그건 내 결정이 아니야. ; o) 그림자에 대한 IE 필터를 알지 못했습니다. 좋은 정보. –

+0

아 ... 아아, 필터 옵션이 단색 (흐리게 표시되지 않음) 및 불투명 한 그림자를 생성합니다. 파머. –

1

나는 모든 현대 브라우저 로드 'myImage.jpg'것입니다 확신합니다. 사실, 당신이 제공 한 코드는 자바 스크립트를 사용하지 않고 이미지를 프리로드하는 순수한 CSS 방법을 설명했습니다 :)

+0

이미지가로드 될 것이라고 가정 할 때 실수하는 것이 더 낫다고 생각합니다. 따라서 'shadow'라는 클래스를 만들고 나서 javascript를 통해 shadow-image 또는 shadow-css로 교체 한 다음 CSS에서 하나의 클래스 만 참조 할 것입니다. –

+0

(또는 ... duh ... 나는 CSS 그림자를 기본값으로 사용하고 이미지가 필요하면 오버 라이드 할 것이다. 원래 CSS의 로직을 뒤집을 것이다.) –

+0

글쎄, 방금 방화창이 가지고있는 것을 배웠다. 트래픽 모니터링 기능 내장. 좋은! Firefox가 이미지를 요청하지 않는다는 사실이 실제로 놀랍습니다. 흥미로운 ... –

관련 문제