Градиентные цвета в Internet Explorer
-
03-07-2019 - |
Вопрос
Я знаю, что Internet Explorer имеет некоторые проприетарные расширения, так что вы можете делать такие вещи, как создавать divs с градиентным фоном.Я не могу вспомнить название элемента или его использование.У кого-нибудь есть какие-нибудь примеры или ссылки?
Решение
Посмотрите на пользовательские фильтры CSS, которые IE может обрабатывать http://msdn.microsoft.com/en-us/library/ms532847.aspx р>
Другие советы
Код, который я использую для всех градиентов браузера:
background: #0A284B;
background: -webkit-gradient(linear, left top, left bottom, from(#0A284B), to(#135887));
background: -webkit-linear-gradient(#0A284B, #135887);
background: -moz-linear-gradient(top, #0A284B, #135887);
background: -ms-linear-gradient(#0A284B, #135887);
background: -o-linear-gradient(#0A284B, #135887);
background: linear-gradient(#0A284B, #135887);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0A284B', endColorstr='#135887');
zoom: 1;
Вам нужно будет указать высоту или zoom: 1
чтобы применить hasLayout
к элементу, чтобы это работало в IE.
Обновить:
Вот версия с МЕНЬШИМ количеством микширования (CSS) для всех вас, пользователей LESS:
.gradient(@start, @end) {
background: mix(@start, @end, 50%);
filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorStr="@start~", EndColorStr="@end~")";
background: -webkit-gradient(linear, left top, left bottom, from(@start), to(@end));
background: -webkit-linear-gradient(@start, @end);
background: -moz-linear-gradient(top, @start, @end);
background: -ms-linear-gradient(@start, @end);
background: -o-linear-gradient(@start, @end);
background: linear-gradient(@start, @end);
zoom: 1;
}
Стиль filter
должен работать для IE8 и IE9.
.gradientClass
{
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#e6e6e6', endColorstr='#CCCCCC');
}
Важным моментом, когда дело доходит до градиентов в IE, является то, что, хотя вы можете использовать фильтры Microsoft ...
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FCCA6D', endColorstr='#FEFEFE');
zoom:1;
... они убивают открытый тип для любого текста, покрытого градиентом. Учитывая, что цель градиентов обычно состоит в том, чтобы пользовательский интерфейс выглядел лучше, для меня это ограничитель показа.
Так что для IE я использую повторяющееся фоновое изображение. Если фоновое изображение css сочетается с градиентным CSS для других браузеров (согласно ответу Blowsie), другие браузеры будут игнорировать фоновое изображение в пользу градиентного CSS, поэтому оно будет применяться только к IE.
background-image: url('/Content/Images/button-gradient.png');
Существует множество сайтов, которые можно использовать для быстрого создания градиентного фона; Я использую этот .
Отличный инструмент от Microsoft, позволяет в реальном времени проверять цвета и генерирует CSS для всех браузеров: http://ie.microsoft.com/testdrive/graphics/cssgradientbackgroundmaker/default.html р>
/* IE10 */
background-image: -ms-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%);
/* Mozilla Firefox */
background-image: -moz-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%);
/* Opera */
background-image: -o-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%);
/* Webkit (Safari/Chrome 10) */
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFFFFF), color-stop(3, #B7B8BD));
/* Webkit (Chrome 11+) */
background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%);
/* Proposed W3C Markup */
background-image: linear-gradient(top, #FFFFFF 0%, #B7B8BD 300%);
Просто подумал, что добавлю эту полезную ссылку: http://css3please.com/
Показывает, как заставить работать градиенты во всех браузерах.
Обратите внимание, что IE10 будет поддерживать градиенты следующим образом:
background: -ms-linear-gradient(#017ac1, #00bcdf);
Прямо из ScriptFX.com статья :
<body bgcolor="#000000" topmargin="0" leftmargin="0">
<div style="width:100%;height:100%; filter: progid:
DXImageTransform.Microsoft.Gradient (GradientType=1,
StartColorStr='#FF006600', EndColorStr='#ff456789')">
Your page content goes in here ...... at the end of all the page content, you must close the <div> tag, immediately before the closing <body> tag.... as below
</div>
</body>
Попробуйте это:
.red {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e02a42', endColorstr='#a91903', GradientType=0); /* IE6-9 */
height: 0; /* gain layout IE5+ */
zoom: 1; /* gain layout IE7+ */
}
Две вещи я обнаружил, когда боролся с градиентом IE 9.
<Ол> -ms-filter
у меня не работал. Мне пришлось использовать просто фильтр
. height: 100%
в мой класс, чтобы IE использовал градиент.