IE8에서 불투명 CSS가 작동하지 않습니다


143

CSS를 사용하여 jQuery 슬라이드 다운 섹션의 트리거 텍스트를 나타냅니다. 즉, 트리거 텍스트 위로 마우스를 가져 가면 커서가 포인터로 바뀌고 트리거 텍스트의 불투명도가 감소하여 텍스트에 클릭 동작이 있음을 나타냅니다 .

이것은 Firefox와 Chrome에서 잘 작동하지만 IE8에서는 불투명도가 변경되지 않습니다.

나는 성공하지 않고 다양한 CSS 설정을 시도했습니다.

예를 들어

HTML :

<h3 class="slidedownTrigger">This is the trigger text</h3>

CSS :

.slidedownTrigger
{
    cursor: pointer;
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: alpha(opacity=75);
    -khtml-opacity: 0.75;
    -moz-opacity: 0.75;
    opacity: 0.75;
}

IE가 불투명도를 변경하지 못하게하는 것은 무엇입니까? 참고 : CSS 문 순서를 바꾸고 IE 문을 사용하여 다양한 다른 요소 에서이 작업을 시도했습니다. 나는 또한 사용을 시도했다

-ms-filter: "alpha(opacity=75)";

그러나 성공하지 못했습니다.

IE8에서 불투명도 수정을 시도하기 위해 부족한 일이 있습니다.

어떤 아이디어?


이 관련 / 중복 질문에 귀하의 답변이 있습니다. stackoverflow.com/questions/859000/opacity-in-web-pages
Jeff Martin

문제가 있음을 알았습니다. 문제는 다음과 같습니다. <br> <br> & nbsp; & nbsp; 필터 : 알파 (불투명도 = 50); / * 인터넷 익스플로러 / <br> & nbsp; & nbsp; 불투명도 : 0.5; / fx, safari, opera, chrome * / <br> & nbsp; & nbsp; -ms-filter : "progid : DXImageTransform.Microsoft.Alpha (opacity = 50)"; / * IE8 * / <br> <br> 저는 작동하지 않습니다 (다시 확인하기 위해 다시 시도했습니다). 나는 검은 색과 대담한 h3에 적용했습니다. Firefox와 Chrome에서는 불투명도 설정이 예상대로 제목이 회색으로 바뀌지 만 IE8에서는 검은 색으로 유지됩니다.

죄송합니다-주석에 HTML을 사용하지 않는다는 사실을 몰랐습니다.하지만 제가 말하려는 것을 볼 수 있다고 생각합니다.

단색 div에서 해당 스타일을 시도하면 작동합니까? 어쩌면 충돌하는 다른 CSS가있을 수 있습니다.
Jeff Martin

좋은데 예-간단한 div를 만들 때 높이와 너비와 배경색을 빨간색으로 지정하고 불투명도 설정을 사용하면 IE8에서 작동합니다. 반투명으로 나옵니다. 나는 문제가 무엇인지 알기 위해 고심하고 있습니다. 스타일 시트의 다른 불투명도를 수정하지 않으므로 IE에서만 충돌 할 수있는 것을 생각할 수 없습니다.

답변:


65

이것이 여전히 8에 적용되는지는 모르지만, 역사적으로 IE는 "레이아웃이없는"요소에 여러 스타일을 적용하지 않습니다.

참조 : http://www.satzansatz.de/cssd/onhavinglayout.html


9
IE는 "레이아웃이없는"요소에 여러 스타일을 적용하지 않습니다.
Azeem.Butt

4
큰! 감사. 그게 문제였습니다. 불투명도를 조정하려는 요소 (예 : h3)에는 "레이아웃이 없습니다". 내가 그들에게 약간을 주면, 불투명도는 효과가있었습니다. 내가 한 것은 너비를 추가하는 것입니다. 100 %; h3에. 올바른 방향으로 나를 가리켜 주셔서 감사합니다. 그러나 Internet Explorer 가이 작업을 수행하는 것은 화나게합니다 (버그가 아닌 경우).

51
IE는 많은 요소에 많은 스타일을 적용하지 않습니다.
danwellman

1
@ danwellman 그리고 다른 "재미있는"것들도 많이합니다. 예
dudewad

흥미로운 점은 IE7에는 '레이아웃'이 필요하지 않다는 것입니다. 높이가 0 인 요소에 반응 형 배경 이미지를 사용 padding-bottom: 100%하고 있으며 IE8에서는 명시 적 높이를 설정할 때까지 불투명도가 적용되지 않았습니다. IE7에는 이것이 필요하지 않습니다.
Kout

158

내가 작성한 것처럼 이것을 정확하게 설정하면 나에게 도움이되었습니다.

-moz-opacity: 0.70;
opacity:.70;
filter: alpha(opacity=70);

6
감사합니다. "filter : alpha (opacity = 70);" IE <8입니다. 그러나 IE8에서는 작동하지 않습니다 (방금 확인했습니다). -moz-opacity는 이제 내가 생각하는 거의 소멸되고 있으며, 불투명도는 표준 작업 방식입니다. 따라서 당연히 Microsoft는 이러한 방식으로 작업을 수행하지 않았습니다 (너무 쉬움).

15
설명대로 "불투명도"와 "필터"를 설정하면 FF4와 IE8에서 모두 작동하도록 충분했습니다. -moz-opacity는 필요하지 않았습니다.
demoncodemonkey

1
@Gabriel McAdams : 필터 : 알파 (불투명도 = 70); 일 (하지만 IE 8에서만)
Poonam Bhatt

@Gabriel 그것은 치료를했다! IE 7/8에서 더 이상 불투명도 문제가 발생하지 않습니다!
MJCoder

1
더 구체적인 정보 : 실제로는 투명성을 제거하는 방법으로 사라집니다.
tmorell 2016 년

49

표준 호환 브라우저에 대해 불투명도를 먼저 설정 한 다음 다양한 버전의 IE를 설정해야합니다. 예를 참조하십시오.

그러나이 불투명 코드는 ie8에서 작동하지 않습니다.

.slidedownTrigger
{
    cursor: pointer;
    opacity: .75; /* Standards Compliant Browsers */
    filter: alpha(opacity=75); /* IE 7 and Earlier */
    /* Next 2 lines IE8 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)";
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75);
}

Firefox는 Standards Compliant 브라우저이므로 더 이상 필요하지 않으므로 -moz를 제거했습니다. 또한 -khtml은 감가 상각되므로 해당 스타일도 제거했습니다.

또한 IE의 필터는 w3c 표준에 따라 유효성을 검사하지 않으므로 페이지의 유효성을 검사하려면 다음과 같은 if IE 문을 사용하여 표준 스타일 시트를 IE 스타일 시트와 분리하십시오.

<!--[if IE]>
<link rel="stylesheet" type="text/css"  href="http://www.mysite.com/css/ie.css" />
<![endif]-->

즉, 특이점을 분리하면 사이트의 유효성이 검사됩니다.


3
설명대로 "불투명도"와 "필터"를 설정하면 FF4와 IE8에서 모두 작동하도록 충분했습니다. "/ * 다음 2 줄 IE8 * /"섹션은 필요하지 않습니다.
demoncodemonkey

3
@demoncodemonkey : 맞습니다. 설치 한 버전에 따라 다릅니다. 최대의 호환성을 원한다면 모든 것을 제안합니다.
케빈 플로리다

"하지만 Internet Explorer 7과 8 사용자 모두 필터를 사용하려면 위에 나열된 구문을 모두 포함 할 수 있습니다. 구문 분석기의 특성으로 인해 이전 구문보다 먼저 업데이트 된 구문을 포함해야합니다. 제대로 호환성보기 (이것은 알려진 버그 및 IE8의 최종 버전에 수정 될 예정입니다)에서 작동하도록 필터의 순서 다음은 CSS 스타일 시트의 예입니다 : "(출처 :. 링크 )
zrathen

@Kevin "최대의 호환성을 원한다면 모든 것을 추천합니다." 그렇다면 -moz-opacity를 제거해서는 안됩니다.
Spooky

-ms-filter에는 따옴표가 필요하지 않습니다.
thdoan

17

분명히 알파 투명도는 IE 8의 블록 레벨 요소에서만 작동합니다. display : block을 설정하십시오.


17

사용 display: inline-block;IE8에서 작동하면이 문제를 해결할 수 있습니다.

FWIW opacity: 0.75는 모든 표준 호환 브라우저 에서 작동합니다.


5

CSS

CSS-Tricks 에서 다음을 사용했습니다 .

.transparent_class {
  /* IE 8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

  /* IE 5-7 */
  filter: alpha(opacity=50);

  /* Netscape */
  -moz-opacity: 0.5;

  /* Safari 1.x */
  -khtml-opacity: 0.5;

  /* Good browsers */
  opacity: 0.5;
}

나침반

그러나 더 나은 솔루션은 Opacity Compass mixin 을 사용하는 것입니다. 필요한 것은 @include opacity(0.1);브라우저 간 문제를 처리하는 것입니다. 여기 에서 예를 찾을 수 있습니다 .



2

위의 답변 중 어느 것도 나를 위해 효과가 없었으므로 DIV 태그에 투명한 배경 이미지를 제공하여 모든 브라우저에서 완벽하게 작동했습니다.


1

이 코드는 작동합니다

filter: alpha(opacity = 50); zoom:1;

작동하려면 줌 속성을 추가해야합니다 :)


1

IE6-8에서 기본 불투명도 사용을 활성화하기 위해 polyfil을 추가 할 수도 있습니다.

https://github.com/bladeSk/internet-explorer-opacity-polyfill

이것은 jQuery 또는 다른 라이브러리가 필요하지 않은 독립형 polyfil입니다. 인라인 스타일에서는 작동하지 않는 몇 가지 작은 경고가 있으며 불투명도 폴리 필이 필요한 스타일 시트의 경우 동일한 원본 보안 정책을 준수해야합니다.

사용법은 간단하다

<!--[if lte IE 8]>
    <script src="jquery.ie-opacity-polyfill.js"></script>
<![endif]-->

<style>
    a.transparentLink { opacity: 0.5; }
</style>

<a class="transparentLink" href="#"> foo </a>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.