rgba가 IE 8에서 작동하지 않는 CSS 배경 불투명도


110

의 배경 불투명도를 위해이 CSS를 사용하고 있습니다 <div>.

background: rgba(255, 255, 255, 0.3);

Firefox에서는 제대로 작동하지만 IE 8에서는 작동하지 않습니다. 어떻게 작동합니까?

답변:


73

1x1 픽셀 (30 도트 감사)보다 크고 배경의 투명도와 일치하는 png를 만듭니다.

편집 : IE6 + 지원을 위해 돌아가려면 png에 대해 bkgd 청크를 지정할 수 있습니다. 이것은 지원되지 않는 경우 진정한 알파 투명도를 대체 할 색상입니다. 예를 들어 김프로 수정할 수 있습니다.


2
예. rgba()IE 8에서는 색상 값이 지원되지 않습니다.
Paul D. Waite

11
잠재적 인 문제를 방지하려면 다음 이외의 크기를 사용하십시오 1x1. stackoverflow.com/questions/7764751/…
thirtydot

43
2003 년에는 허용되지만 2013 년에는 허용되지 않습니다. 이전 IE에서 다소 시뮬레이션 된 지원을 위해 -ms-filter를 사용하거나 더 나은 방법은 무시하는 것입니다. IE8- 자격이 사용하는 사람들은 등 국경 반경, 배경을 투명하게보고하지 않음으로써 벌을
예브게니

21
@EugeneXa 저는 고객을 위해 일합니다. 그들이 IE8을 사용한다면 나는 그것을 지원합니다. 잠재 고객을 처벌하는 것은 좋은 사업이 아닙니다.
Eli

14
@EugeneXa 내 사이트에서 10 %에 가깝고 종종 좋은 고객입니다. 여기에는 정답이 하나도 없습니다. 수학을하고 무엇이 당신에게 적합한 지 알아 내십시오. 일부 사이트에서는 6 %도 거대 할 수 있습니다! 어떤 사용자도 처벌받을 자격이 없습니다. 그 태도를 후회하실 것 같습니다.
Eli

241

IE에서 RGBA 및 HSLA 배경을 시뮬레이션하려면 시작 및 끝 색상이 동일한 그라디언트 필터를 사용할 수 있습니다 (알파 채널은 HEX 값의 첫 번째 쌍입니다).

background: rgba(255, 255, 255, 0.3); /* browsers */
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#4cffffff', endColorstr='#4cffffff'); /* IE */

2
안타깝게도 요소가 동적으로 숨겨지고 jQuery를 사용하여 다시 표시되는 경우 작동을 멈춘 것처럼 보입니다.
jackocnr

rgba IE 필터는 매우 유용했고> ie7에 대한 작업을 수행 할 수있었습니다.
codingbbq 2013 년

필터의 불투명도 0.6은 얼마입니까?
Si8 2014

10
투명도에 대한 16 진수 코드 (첫 번째 쌍)는 여기에서 찾을 수 있습니다. ( stackoverflow.com/questions/15852122/hex-transparency-in-colors )
user1794295

2
계산기 그 IE 사용자 정의 16 진수 값에 대한이!
nietonfir

14

이 페이지에는 알파 투명 배경을 생성하는 데 도움이되는 도구가 있기 때문에 이것이 최고라고 생각합니다.

" 크로스 브라우저 알파 투명 배경 CSS (rgba) " (* 이제 archive.org에 링크 됨)

#div {
    background:rgb(255,0,0);
    background: transparent\9;
    background:rgba(255,0,0,0.3);
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cFF0000,endColorstr=#4cFF0000);
    zoom: 1;
}

Remeber는 필터에서 항상 RGBA 16 진수 색상을 사용합니다. eq # 004F80은 # ed004F80
user956584

9

투명 png 이미지는 IE 6-에서 작동하지 않습니다. 대안은 다음과 같습니다.

CSS 사용 :

.transparent {

    /* works for IE 5+. */
    filter:alpha(opacity=30); 

    /* works for IE 8. */
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";

    /* works for old school versions of the Mozilla browsers like Netscape Navigator. */
    -moz-opacity:0.3; 

    /* This is for old versions of Safari (1.x) with KHTML rendering engine */
    -khtml-opacity: 0.3; 

    /* This is the "most important" one because it's the current standard in CSS. This will work in most versions of Firefox, Safari, and Opera. */  
    opacity: 0.3; 
}

또는 jQuery로 수행하십시오.

// a crossbrowser solution
$(document).ready(function(){ 
    $(".transparent").css('opacity','.3');
});

24
배경 알파는 불투명도와 동일하지 않습니다 (하위 요소도 투명하게 만들지 않습니다).
Alexey Smolyakov

1
이것은 질문에 대한 답도 아니고 CSS도 jQuery (또는 일반적으로 JavaScript)를 통해 적용되는 크로스 브라우저 솔루션입니다.
mystrdat 2012 년

7

늦었지만 오늘 그것을 사용해야했고 여기 에서 rgba가 작동하는 방식과 매우 유사하게 png 파일을 동적으로 생성 할 수 있는 매우 유용한 PHP 스크립트를 찾았습니다 .

background: url(rgba.php?r=255&g=100&b=0&a=50) repeat;
background: rgba(255,100,0,0.5);

스크립트는 여기에서 다운로드 할 수 있습니다 : http://lea.verou.me/wp-content/uploads/2009/02/rgba.zip

나는 그것이 모든 사람에게 완벽한 해결책이 아닐 수도 있다는 것을 알고 있지만, 많은 시간을 절약하고 완벽하게 작동하기 때문에 어떤 경우에는 고려할 가치가 있습니다. 누군가에게 도움이되기를 바랍니다!


2
어떻게 작동 rgba합니까? rgba.php URL은 지원하지 않는 브라우저에서만 요청 합니까? 아니면 항상 모든 사용자가 요청하고 단순히 표시되지 않습니까?
Darren Cook

내 희망은 브라우저가 요청을 시도하기 전에 자동으로 두 번째 배경을보고 첫 번째 배경을 무시하는 것입니다. 그러나 그것은 기껏해야 교육받은 추측입니다.
Swivel

7

대부분의 브라우저는 CSS에서 RGBa 코드를 지원하지만 IE8 이하 수준에서만 RGBa css 코드를 지원하지 않습니다. 여기에 해결책이 있습니다. 솔루션의 경우이 코드를 따라야하며 순서대로 진행하는 것이 좋습니다. 그렇지 않으면 원하는대로 완벽한 출력을 얻을 수 없습니다. 이 코드는 나에 의해 사용되며 대부분 완벽합니다. 완벽하다면 댓글을 달아주세요.

.class
 {
        /* Web browsers that does not support RGBa */
        background: rgb(0, 0, 0);
        /* IE9/FF/chrome/safari supported */
        background: rgba(0, 0, 0, 0.6);
        /* IE 8 suppoerted */
        /* Here some time problem for Hover than you can use background color/image */
        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000, endColorstr=#88000000)";
        /* Below IE7 supported */
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#88000000, endColorstr=#88000000);
 }

5

불투명도를 변경하려면 CSS를 사용합니다. IE에 대처하려면 다음과 같은 것이 필요합니다.

.opaque {
    opacity : 0.3;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
    filter: alpha(opacity=30);
}

그러나 이것의 유일한 문제는 컨테이너 내부의 모든 것이 0.3 불투명도임을 의미한다는 것입니다. 따라서 콘텐츠를 보관하는 투명한 컨테이너가 아닌 다른 컨테이너를 갖도록 HTML을 변경해야합니다.

그렇지 않으면 png 기술이 작동합니다. IE6에 대한 수정이 필요하지만 그 자체로 문제가 발생할 수 있습니다.


4
하하 하나의 브라우저가 나머지와 다른 버전처럼 행동하지 해당 브라우저의 각 버전처럼 행동하지 않는 일반적인 경우 같은 브라우저는 ... 단지 마이크로 소프트는 ... 꽤 성공적으로 달성 할 수
ClarkeyBoy

3
@Paul D. Waite : 브라우저가 콘텐츠를 렌더링하는 방법 외에도 제공하는 많은 기능이 있습니다. 사양에서 벗어나는 것은 기능이 아닙니다 (아니면 안됩니다).
Bobby Jack

@Paul D. Waite : 알겠습니다. IE의 버전이 너무 다르기 때문에 각 버전마다 다른 스타일 시트를 만들어야합니다 ... IE6, 7 및 8 ...하지만 모든 FF / Chrome / Opera / Safari에 대해 하나의 스타일 시트 만 있습니다. @Bobby Jack : Seconded ...
ClarkeyBoy

@Bobby : 물론입니다.하지만 IE 8은 IE 7이나 IE 6보다 더 표준에서 벗어나지 않습니다.
Paul D. Waite

@ClarkeyBoy : 물론입니다. IE 8 스타일 시트가 IE 6 스타일 시트보다 훨씬 간단하다는 것을 알았습니다. IE는 브라우저 중 가장 이상하지만 다른 브라우저와 천천히 정렬됩니다. Firefox는 rgba()버전 3까지 지원하지 않았고 Opera는 버전 10까지 지원하지 않았습니다.
Paul D. Waite


2

rgbaIE에서 배경 을 사용하려면 대체가 있습니다.

필터 속성을 사용해야합니다. 그 사용ARGB

    background:none;
    -ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
    zoom: 1;

이것은 폴백입니다 rgba(255, 255, 255, 0.2)

#33ffffff당신에 따라 변경 하십시오.

어떻게 계산하는 방법 ARGB에 대한RGBA


ARGB to RGBA 변환기를 영원히 찾고 계셨습니다. 감사합니다! web.archive.org/web/20131207234608/http://kilianvalkhof.com/...
저스틴

1

이것은 IE8에서 문제를 해결하는 데 도움이되었습니다.

-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=1)";

건배


1

이 솔루션은 실제로 작동합니다. IE8에서 테스트 됨

.dash-overlay{ 
   -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000)"; 
}

0

Internet Explorer 8이 rgba 대신 rgb를 지원하기 때문에 먼저 backgound를 rgb로 제공해야하며 다음과 같은 불투명도를 제공해야합니다. filter:alpha(opacity=50);

background:rgb(0,0,0);
filter:alpha(opacity=50);

0

이것은 IE x를 포함한 대부분의 브라우저를위한 투명성 솔루션입니다.

.transparent {
    /* Required for IE 5, 6, 7 */
    /* ...or something to trigger hasLayout, like zoom: 1; */
    width: 100%; 

    /* Theoretically for IE 8 & 9 (more valid) */   
    /* ...but not required as filter works too */
    /* should come BEFORE filter */
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

    /* This works in IE 8 & 9 too */
    /* ... but also 5, 6, 7 */
    filter: alpha(opacity=50);

    /* Older than Firefox 0.9 */
    -moz-opacity:0.5;

    /* Safari 1.x (pre WebKit!) */
    -khtml-opacity: 0.5;

    /* Modern!
    /* Firefox 0.9+, Safari 2?, Chrome any?
    /* Opera 9+, IE 9+ */
    opacity: 0.5;
}

0

지금까지 찾은 최고의 솔루션은 David J Marland가 그의 블로그 에서 이전 브라우저 (IE 6+)에서 불투명도를 지원하기 위해 제안한 솔루션입니다 .

.alpha30{
    background:rgb(255,0,0); /* Fallback for web browsers that don't support RGBa nor filter */ 
    background: transparent\9; /* backslash 9 hack to prevent IE 8 from falling into the fallback */
    background:rgba(255,0,0,0.3); /* RGBa declaration for browsers that support it */
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cFF0000,endColorstr=#4cFF0000); /* needed for IE 6-8 */
    zoom: 1; /* needed for IE 6-8 */
}

/* 
 * CSS3 selector (not supported by IE 6 to IE 8),
 * to avoid IE more recent versions to apply opacity twice
 * (once with rgba and once with filter)
 */
.alpha30:nth-child(n) {
    filter: none;
}

0

많이 검색 한 후 내 경우에 작동하는 다음 솔루션을 찾았습니다.

.opacity_30{
    background:rgb(255,255,255); /* Fallback for web browsers that don't support neither RGBa nor filter */ 
    background: transparent\9; /* Backslash 9 hack to prevent IE 8 from falling into the fallback */
    background:rgba(255,255,255,0.3); /* RGBa declaration for modern browsers */
    -ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4CFFFFFF,endColorstr=#4CFFFFFF); /* IE 8 suppoerted; Sometimes Hover issues may occur, then we can use transparent repeating background image :( */
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4CFFFFFF,endColorstr=#4CFFFFFF); /* needed for IE 6-7 */
    zoom: 1; /* Hack needed for IE 6-8 */
}

/* To avoid IE more recent versions to apply opacity twice (once with rgba and once with filter), we need the following CSS3 selector hack (not supported by IE 6-8) */
.opacity_30:nth-child(n) {
    filter: none;
}

* 중요 : RGBA에서 ARGB (IE 용)를 계산하려면 온라인 도구를 사용할 수 있습니다.

  1. https://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/
  2. http://web.archive.org/web/20131207234608/http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.