Почему этот CSS-градиент отображается с неправильными цветами в IE 7?

Итак, я пытаюсь поместить фон градиента в таблицу через класс:

.prov-results-bkgrd {
    background: #fff url(/_images/prov-results-table-bg.jpg) left bottom repeat-x;

    background: -webkit-gradient(
        linear,
        left top,
        left bottom,
        from(#fff),
        to(#dedbd5)
    );

    background: -moz-linear-gradient(top, #fff, #dedbd5);

    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff', endColorstr='#dedbd5');
}

IE8 и FireFox выглядят нормально. Они применяют градиенты, как я думал: от белого до светло-бежевого.

Однако IE7 применяет градиент от черного до темно-синего??? WTF с этим...?

Откуда это? IE7 не распознает шестнадцатеричные цвета?

И если это не так, не применит ли фон по умолчанию, т.е. #fff и файл изображения

Ответы

Ответ 1

Вы пытались использовать #ffffffff вместо #fff и # ffdedbd5 вместо # dedbd5 для фильтра градиента (ie7)?

Вы должны указать альфа-значение, я думаю http://msdn.microsoft.com/en-us/library/ms532929(v=vs.85).aspx

Ответ 2

IE действительно распознает шестнадцатеричные цвета, но не тот вид, который вы используете. Будут работать только те, у которых шесть гексадецималов (#RRGGBB) или 8 гексадецималов (#AARRGGBB, работает только в градиентном фильтре!). Он также примет именованные цвета.

Поэтому он будет работать, если вы замените #fff на white или #ffffff (или #ffffffff, но дольше, чем это необходимо в этом случае).

Страницы MSDN для startColorStr и endColorStr также отмечают что начальный цвет по умолчанию синий, а цвет завершения по умолчанию - черный, и:

Ввод строки, выходящий за пределы шестнадцатеричного диапазона, вернется к значению по умолчанию.