Ответ 1
Используйте это:
background-image: -o-linear-gradient(90deg,rgb(18,79,126),rgb(59,137,197));
Я могу создавать градиенты CSS в IE6/7/8/9/FF3.6 + и Chrome (см. ниже).
Мой вопрос:
Как создать градиент в Opera?
.gradient{
/*Mozilla Firefox 3.6*/
background-image: -moz-linear-gradient(top, #dcdcdc, #c6c6c6);
/*Webkit aka Google Chrome*/
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #c6c6c6),color-stop(1, #dcdcdc));
/*Internet Explorer 6,7 and 8*/
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdcdc', endColorstr='#c6c6c6');
/*Internet Explorer 8 only*/
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdcdc', endColorstr='#c6c6c6')";
/* Opera */
/* ??? */
}
Используйте это:
background-image: -o-linear-gradient(90deg,rgb(18,79,126),rgb(59,137,197));
Opera 10.x поддерживает SVG в фоновых изображениях, а SVG позволяет делать градиенты так же, как и расширения Firefox и Safaris CSS.
Фоновая поддержка OperaS SVG, похоже, имеет некоторые неприятные ошибки, когда ваш элемент также имеет границы в 10.0 и ниже, но по состоянию на 10.5 он кажется достаточно прочным (в моем ограниченном опыте).
CSS/* Opera */
background-image: url(gradient.svg);
gradient.svg
<svg xmlns="http://www.w3.org/2000/svg" version="1.0">
<defs>
<linearGradient id="gradient" x1="0" y1="0" x2="0" y2="100%">
<stop offset="0%" style="stop-color: #c6c6c6;"/>
<stop offset="100%" style="stop-color: #dcdcdc;"/>
</linearGradient>
</defs>
<rect x="0" y="0" fill="url(#gradient)" width="100%" height="100%" />
</svg>
Вы также можете включить SVG непосредственно в файл CSS, используя URL-адрес данных, если вы кодируете SVG-код. (Например, Python, вы можете сделать это, удалив новые строки и ненужные пробелы, а затем передав содержимое файлов в urllib.quote
).
Его немного нечитаемо, но он сохраняет HTTP-запрос, и если у вас есть более одного градиента SVG, встроенного в ваш CSS файл, вы должны увидеть некоторую экономию полосы пропускания по отдельным файлам (при условии, что ваш CSS файл gzipped).
/* Opera */
background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20version%3D%221.0%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22gradient%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%220%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20style%3D%22stop-color%3A%20%23c6c6c6%3B%22/%3E%3Cstop%20offset%3D%22100%25%22%20style%3D%22stop-color%3A%20%23dcdcdc%3B%22/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20fill%3D%22url%28%23gradient%29%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20/%3E%3C/svg%3E);
Должен совпадать с именем Mozilla, но с идентификатором Opera:
-o-linear-gradient(top, #dcdcdc, #c6c6c6);
Работает в Opera 11.10 и новее.
В Dev.Opera опубликована статья о том, как использовать линейные градиенты в Opera (11.10+). http://dev.opera.com/articles/view/css3-linear-gradients/
CSS3 Градиенты, используя последний синтаксис (ближе, но не совсем так же, как Firefox, по мере развития спецификации) находятся в разработке сейчас в Opera Presto (наш механизм рендеринга). Скорее всего, он не сделает это для Opera 11, но, вероятно, сделает это для версии после.
Последние сборки Opera ( >= 2042) поддерживают линейный градиент CSS3.
Opera не поддерживает градиенты CSS3 (пока). Вы можете каким-то образом имитировать их, используя box-shadow. См. http://dev.opera.com/articles/view/beautiful-ui-styling-with-css3-text-shadow-box-shadow-and-border-radius/.
Для браузера Opera
background-image: -o-linear-gradient(rgb(0,189,0),rgb(0,181,255));
-o-linear-gradient (top, #dcdcdc, # c6c6c6);
Это, безусловно, лучший вариант. Я попробовал SVG-метод, и он не только выглядит ужасно в коде, но и заканчивается тем, что фон исчезает в firefox.
Спасибо всем за публикацию. Я должен был недавно реализовать градиенты в Opera, и это было больно.