Проблемы с градиентом CSS3 от прозрачного до белого

У меня возникают проблемы с кросс-браузером градиентов CSS3. Это происходит, когда я пытаюсь создать градиент от прозрачного цвета до белого.

Файл, который я использую для тестирования: http://f.cl.ly/items/0E2C062x3O161b09261i/test.html

Используется CSS:

background-image: linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -o-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);
background-image: -ms-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,1) 100%);

Rending выглядит так, как я хочу в Safari 6 (mac): Safari 6 Mac OS 10.8

Отрисовка Chrome исчезает до серого цвета, прежде чем он исчезает до белого (Firefox делает этот способ также и на mac os): Chrome 21 Mac OS 10.8

Любые идеи или предложения о том, почему этот нечетный рендеринг может быть?

Ответы

Ответ 1

Я тоже столкнулся с этим. Я не уверен, почему это происходит, но вот то, что я использовал в своих проектах в качестве обходного пути:

background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.001) 0%, #fff 5%, #fff 100%);

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

Изменить: я забыл опубликовать ссылку на мою собственную версию, которая отображается как ожидалось в Chrome 21 (Windows 7).

Ответ 2

CSS, который я вставлял здесь, был неправильным, я редактировал неправильный файл DOH!

Исходный CSS не работает

background-image: linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -o-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -moz-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -webkit-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);
background-image: -ms-linear-gradient(top, transparent 0%, #fff 5%, #fff 100%);

CSS, который исправил проблему

background-image: linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -o-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);
background-image: -ms-linear-gradient(top, rgba(255,255,255,0) 0%, #fff 5%, #fff 100%);

Проблема прозрачности не является цветом, она черная с 0 альфой, настройка на конкретный белый с 0 альфой устраняет проблему. (спасибо @carisenda)

Это все еще указывает на несогласованность с тем, как поставщики браузеров имеют дело с альфа-прозрачностью в градиентах CSS3.