Непрозрачность фона CSS с rgba не работает в IE 8

Я использую этот CSS для непрозрачности фона <div>:

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

Работает отлично в Firefox, но не в IE 8. Как заставить его работать?

Ответ 1

Создайте png, размер которого превышает 1x1 пиксель (спасибо тридцать), и который соответствует прозрачности вашего фона.

EDIT: чтобы вернуться к поддержке IE6 +, вы можете указать bkgd chunk для png, это цвет, который заменит истинную альфа-прозрачность, если он не поддерживается. Вы можете исправить это с помощью gimp, например.

Ответ 2

чтобы имитировать фон RGBA и HSLA в IE, вы можете использовать фильтр градиента с тем же начальным и конечным цветом (альфа-канал является первой парой в значении HEX)

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

Ответ 3

Я считаю, что это лучше всего, потому что на этой странице есть инструмент, который поможет вам генерировать альфа-прозрачный фон:

http://hammerspace.co.uk/2011/10/cross-browser-alpha-transparent-background-css

#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;
}

Ответ 4

прозрачный 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 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');
});

Ответ 5

Хотя и поздно, мне пришлось использовать это сегодня и нашел здесь очень полезный php script , который позволит вам динамически создавать png файл, очень похожий на способ работы rgba.

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

script можно скачать здесь: http://lea.verou.me/wp-content/uploads/2009/02/rgba.zip

Я знаю, что это не идеальное решение для всех, но в некоторых случаях это стоит учитывать, так как это экономит много времени и работает безупречно. Надеюсь, что кто-то поможет!

Ответ 6

В 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);
 }

Ответ 7

Вы используете css для изменения непрозрачности. Чтобы справиться с IE, вам нужно что-то вроде:

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

Но единственная проблема заключается в том, что это означает, что что-либо внутри контейнера будет также непрозрачным. Таким образом, вам придется изменить свой HTML, чтобы иметь другой контейнер, а не прозрачный, содержащий ваш контент.

В противном случае будет работать техника png. Кроме того, вам понадобится исправление для IE6, что само по себе может вызвать проблемы.

Ответ 8

Я опаздываю на вечеринку, но для тех, кто это находит, эта статья очень полезна: http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/

Он использует фильтр градиента для отображения твердого, но прозрачного цвета.

Ответ 9

Чтобы использовать фон rgba в IE, есть резерв.

Мы должны использовать свойство фильтра. который использует 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

Ответ 10

это помогло мне решить проблему в IE8:

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

Приветствия

Ответ 11

Это решение действительно работает, попробуйте. Протестировано в IE8

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

Ответ 12

Это очень просто, что вам нужно дать сначала, что вы должны дать backgound как rgb, потому что Internet Explorer 8 будет поддерживать rgb вместо rgba, а затем вы должны дать непрозрачность, например filter:alpha(opacity=50);

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

Ответ 13

Это решение прозрачности для большинства браузеров, включая 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;
}

Ответ 14

Лучшим решением, которое я нашел до сих пор, является тот, который предложил Дэвид Дж. Марланд в своем блоге , чтобы поддерживать непрозрачность в старых браузерах (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;
}

Ответ 15

После многого поиска я нашел следующее решение, которое работает в моих случаях:

.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;
}

* Важно: Чтобы вычислить ARGB (для IE) из RGBA, мы можем использовать онлайн-инструменты: