IE9 границы-радиус и фоновый градиент кровотечения

191

IE9, очевидно, способен обрабатывать закругленные углы, используя стандартное определение CSS3 border-radius.

Как насчет поддержки радиуса границы и градиента фона? Да, IE9 должен поддерживать их обоих по отдельности, но если вы смешаете эти два, градиент кровоточит из закругленного угла.

Я также вижу странность с тенями в виде сплошной черной линии под прямоугольником с закругленными углами.

Вот изображения, показанные в IE9:

изображение без кровотечения, но острые углы изображение с кровотечением

Как я могу обойти эту проблему?

SigmaBetaTooth
источник
Спасибо за советы @MikeP и @meanstreakuk. Я думаю, что ответ, который я ищу, больше похож на то, когда IE действительно будет поддерживать градиенты / округления или как заставить их работать вместе.
SigmaBetaTooth
У вас есть ответ от @meanstreak о том, как заставить 2 работать вместе. Если вы хотите быть реалистичным, SVG-градиенты в качестве фоновых изображений с гораздо большей вероятностью будут полностью поддерживаться всеми браузерами гораздо раньше, чем CSS-градиенты (которые все еще находятся в стадии разработки / обсуждения).
Кевин Пено
29
Невероятный MS так далеко позади. Сейчас 2011 год, и IE все еще занимается такими проблемами. ZZZZZZZ. .. на своем сайте они говорят: «быстро теперь красиво». Конечно да. Посмотрите на фотографии, размещенные выше. КАКАЯ ПРЯМОУГОЛЬНАЯ КРАСОТА!
SunnyRed
SunnyRed, ну, в Chrome элементы, содержащиеся в чем-то с закругленными углами, кровоточат по углам. Действительно, сейчас 2012 год, и браузеры все еще имеют дело с такими проблемами :-)
Joey
2
@SunnyRed Это 2013 сейчас, и ошибка все еще там :(
Sliq

Ответы:

49

Вот одно решение, которое добавляет градиент фона, используя URI данных для создания полупрозрачного изображения, которое перекрывает любой цвет фона. Я проверил, что он правильно обрезан до радиуса границы в IE9. Это легче, чем предложения, основанные на SVG, но, как недостаток, не зависит от разрешения. Еще одно преимущество: работает с вашим текущим HTML / CSS и не требует переноса с дополнительными элементами.

Я взял случайный PNG с градиентом 20х20 с помощью веб-поиска и преобразовал его в URI данных с помощью онлайн-инструмента. Результирующий URI данных меньше, чем CSS-код для всего этого SVG-беспорядка, тем более сам SVG! (Вы можете применить это условно к IE9, только используя условные стили, специфичные для браузера классы CSS и т. Д.) Конечно, создание PNG отлично подходит для градиентов размером с кнопку, но не для градиентов размера страницы!

HTML:

<span class="button">This is a button</span>

CSS:

span.button { 
  padding: 5px 10px;
  border-radius: 10px;
  background-color: orange;  
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAvUlEQVQ4y63VMQrDMAyF4d/BGJ+rhA4dOnTo0Kn3P4ExxnSoXVQhpx0kEMmSjyfiKAF4AhVoqrvqjXdtoqPoBMQAPAZwhMpaYkAKwH1gFtgG0v9IlyZ4E2BVabtKeZhuglegKKyqsWXFVboJXgZQfqSUCZOFATkAZwEVY/ymQAtKQJ4Jd4VZqARnuqyxmXAfiAQtFJEuG9dPwtMC0zD6YXH/ldAddB/Z/aW4Hxv3g+3+6bkvB/f15b5gXX8BL0z+tEEtuNA8AAAAAElFTkSuQmCC);
  background-size: 100% 100%;

  border: 2px solid white;
  color: white;
}
Стив Эйснер
источник
1
И победитель ... Я думаю, если мне нужно выбрать один, это оно. Я надеялся увидеть больше информации, когда IE на самом деле поддержит то, что, по его словам, он поддерживает. Что касается решения для фоновых изображений, я не придумываю изображения, чтобы заставить IE вести себя. Спасибо всем за их полезные предложения.
SigmaBetaTooth
1
Я обнаружил, что настройки background-size: 100% 103%; background-position:center;лучше. 100% для обоих значений добавляет странную границу сверху и снизу.
Мортен Кристиансен
Добавление размера фона: 100% 103%; фон положение: центр; ничего не делает для меня
Григорий Болкенстейн
2
Не совсем уверен, почему вы используете данные URI, а не просто изображение? Я полагаю, что изображение означало бы дополнительный вызов на сервер для пользователей ie9, но отправка всех этих дополнительных символов в браузеры не из ie9 кажется расточительной. Решение работает для меня как изображение, хотелось бы объяснения.
Приманка
4
Его ручной URI данных - это то, что обычно делают некоторые препроцессоры CSS во время развертывания. Что касается «но что это за уродливый хакер», это кардинальная фигня. SVG - изображение, как и любое другое, хотя и векторное. Поэтому называть SVG взломом и предлагать PNG вместо этого абсолютно бессмысленно. Почему SVG лучше? Независимость от разрешения - та же причина, по которой вы используете радиус границы вместо растрового фона изображения.
скрат
104

Я также работал с этой проблемой. Другое «решение» - добавить элемент div вокруг элемента с градиентом и закругленными углами. Сделайте для этого div одинаковые значения высоты, ширины и закругленного угла. Установите переполнение скрытым. Это в основном просто маска, но она работает для меня.

HTML:

<div class="mask roundedCorners">
    <div class="roundedCorners gradient">
        Content
    </div>
</div>

CSS:

.mask
{
    overflow: hidden;
}

.roundedCorners
{
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
}

.gradient
{
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#0065a4', endColorstr='#a0cf67',GradientType=0 ); /* IE6-9 */
}
user740128
источник
3
Это прекрасно работает для меня и намного проще, чем другие предлагаемые решения.
Саймон П Стивенс
Гораздо проще, чем принятый в настоящее время ответ. Это работает в IE9 для меня.
Энди МакКлагжаг
Это работает ... так грустно и жалко. Это браузер HTML5 !? Почему я не в восторге от IE10.
Тодд Вэнс
@toddv Не волнуйся. Все скоро закончится. Не достаточно скоро, но скоро. См. Daringfireball.net/linked/2012/07/04/windows-hegemony. Если повезет, никому не придется беспокоиться о поддержке IE12 ... может быть, IE14 - это нечетко.
Джинглстхула
2
Просто небольшая заметка, но ваши операторы радиуса границы должны быть изменены на противоположные, чтобы обеспечить прямую совместимость. Я сделал редактирование.
Пэррис
44

Я думаю, что стоит упомянуть, что во многих случаях вы можете использовать вставку box-shadow, чтобы «подделать» эффект градиента и избежать уродливых краев в IE9. Это особенно хорошо работает с кнопками.

Смотрите этот пример: http://jsfiddle.net/jancbeck/CJPPW/31/

Сравнение стиля кнопки с линейным градиентом или прямоугольником

Ян Бек
источник
2
Отличное решение в моем случае, потому что я использовал это только на кнопке и нуждался в градиенте, как вы нарисовали. Я использовал условные комментарии для gte IE9, а затем применилbox-shadow: inset 0 -8px 10px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255, 0.3), inset 0 1px 0 rgba(255,255,255, 0.3);
Volomike
элегантно и просто. я ++.
Элиран Малка
1
+1 за нестандартное мышление. Работает очень хорошо для вкладок, а также кнопок. Использование вставки сохраняет градиент внутри элемента.
GlennG
Это лучшее решение, которое я видел. Чистая CSS, не требует дополнительных элементов или изображений.
Zaqx
1
хороший трюк, но у меня есть градиенты по всему сайту. я не могу поменять их всех на глупых т.е.
Мехмет Фатих Йылдыз
8

Вы также можете использовать CSS3 PIE для решения этой проблемы:

http://css3pie.com/

Конечно, это может быть излишним, если вы просто зависите от одного элемента с закругленными углами и градиентом фона, но это вариант, который стоит рассмотреть, если вы включаете ряд общих функций CSS3 на своих страницах и хотите легкую поддержку для IE6 +

Луи Л.
источник
1
даже с css3pie и ie9 я не вижу градиента. Я вижу закругленные углы и тень, но нет градиента.
Кевин
7

Я столкнулся с этой ошибкой тоже. Мое предложение будет использовать повторное фоновое изображение для градиента в ie9. IE9 правильно размещает изображение за закругленными границами (начиная с RC1).

Я не вижу, как написать 100 строк кода для замены одной строки CSS просто или элегантно. SVG - это круто и все такое, но зачем проходить через все это, когда более простые решения для градиентного фона существуют годами.

MikeP
источник
5

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

Вы можете получить код SVG, используя их код цвета градиента, от Microsoft на этом сайте (специально для градиента в SVG):

http://ie.microsoft.com/testdrive/graphics/svggradientbackgroundmaker/default.html

наслаждаться :)

Химаншу Яни
источник
Ссылка больше не действительна.
раздавить
5

Просто используйте обертку div (округленный и скрытый переполнение), чтобы обрезать радиус для IE9. Простой, работает кросс-браузер. SVG, JS и условные комментарии не нужны.

<div class="ie9roundedgradient"><div class="roundedgradient">text or whatever</div></div>

.ie9roundedgradient { 
display:inline-block; overflow:hidden; -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; 
}
.roundedgradient { 
-webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; 
/* use colorzilla to generate your cross-browser gradients */ 
}
Брайан Льюис
источник
4

Эта запись в блоге помогла мне: http://abouthalf.com/2010/10/25/internet-explorer-9-gradients-with-ounded-corners/

По сути, вы используете условный комментарий для удаления фильтра, а затем создаете SVG-«спрайты» градиентов, которые вы можете использовать в качестве фоновых изображений.

Просто и элегантно!

Дэн Херд
источник
Я живу этим. Особенно большие взлеты за то, что они помогли мне НАКОНЕЦ закончить поиски способов создания спрайтов с использованием SVG. Поскольку SVG является масштабируемым, а спрайты возможны, я считаю, что SVG-спрайт-пакеты гораздо более вертикальны, чем CSS-градиенты, и, как я уже говорил выше, в браузерах, вероятно, будет 100% поддержка задолго до CSS-градиентов.
Кевин Пено
О, единственное, что я хотел бы добавить к этому, это то, что в настоящее время webkit и, я полагаю, опера также поддерживают SVG в url()вызовах изображений CSS . Остается только один, поэтому отбросьте 1000 условных выражений и подайте SVG для bg на всех поддерживающих его. Для всех остальных подайте растрёпанное изображение. Тогда этот взлом становится управляемым.
Кевин Пено
4

IE9 правильно обрабатывает границы и радиус. Проблема в том, что IE9 отображает фильтр в дополнение к градиенту. Чтобы правильно решить эту проблему, нужно отключить фильтры в объявлениях стиля, которые используют свойство фильтра.

В качестве примера того, как лучше всего решить эту проблему:

У вас есть класс кнопок в вашей основной таблице стилей.

.btn {
    background: linear-gradient(to bottom,  #1e5799 0%,#7db9e8 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 );
}

В условной таблице стилей IE9:

.btn { filter: none; }

Пока таблица стилей IE9 упоминается в вашей голове после вашей основной таблицы стилей, это будет работать отлично.

WFendler
источник
2
ie9 не рендерит линейные градиенты
Джеймс Вестгейт
3

Существует простой способ заставить его работать под IE9 только с одним элементом.

Посмотрите на эту скрипку: http://jsfiddle.net/bhaBJ/6/

Первый элемент устанавливает границу-радиус. Второй псевдоэлемент устанавливает градиент фона.

Несколько ключевых инструкций:

  • родитель должен иметь родственника или абсолютную позицию
  • родитель должен иметь переполнение: скрыто ; (чтобы эффект границы-радиуса был видимым)
  • Псевдоэлемент :: before (или :: after) должен иметь z-index: -1 (обходной тип)

Объявление базового элемента выглядит примерно так:

.button{
    position: relative;
    overflow: hidden;        /*make childs not to overflow the parent*/

    border-radius: 5px;      /*don't forget to make it cross-browser*/

    z-index:2;               /*just to be sure*/
}

Декларация псевдоэлемента:

.button:before{

    content: " ";                     /*make it a node*/
    display: block;     

    position: absolute;               
    top:0;left:0;bottom:0;right:0;    /*same width and height as parent*/

    z-index: -1;                      /*force it to NOT overlay the TEXT node*/

    /*GRADIENT declarations...*/
    background: -ms-linear-gradient(top,  #ff3232 0%,#7db9e8 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff3232',endColorstr='#7db9e8',GradientType=0 );

}
Marakoss
источник
Просто отлично! Спасибо! :)
majimekun
Я установил в вашем примере значение border-radius равным 20, а в IE9 границы не обрезаются
раздавить
Попробуйте установить это в своем заголовке: <meta http-equ = "X-UA-Compatible" content = "IE = 9" />
Marakoss
2

Я решил отключить IE9 от закругления углов, чтобы обойти эту ошибку. Это чистый, легкий и универсальный в использовании.

{
border-radius:10px;
border-radius:0px \0/;
background:linear-gradient(top , #ffeecc, #ff8800);
/* ... (-moz -ms,-o, -webkit) gradients */    
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#ffeecc,endColorstr=#ff8800);
}
key_
источник
1

Div маска в IE9 это хорошая идея. Я предоставляю полный код, чтобы помочь немного уточнить. Хотя я не доволен обёртыванием кнопки в DIV, я думаю, что это легче понять, чем встраивание маски PNG или выполнение всех усилий с использованием SVG. Возможно, IE 10 будет правильно его поддерживать.

<!DOCTYPE html>
<html>
<head>
<title>Button Test</title>
<style>
.btn_mask { cursor:pointer;padding:5px 10px;border-radius:11px 11px 11px 11px;
 background-color:transparent;-moz-border-radius:11px 11px 11px 11px;
 -webkit-border-radius:11px 11px 11px 11px;overflow:hidden;padding:0px;
 float:left; }
.btn { cursor:pointer;text-decoration:none;border:1px solid rgb(153,153,153);
 padding:5px 10px;color:rgb(0,0,0);font-size:14px;font-family:arial,serif;
 text-shadow:0px 0px 5px rgb(255,255,255);font-size:14px;
 border-radius:11px 11px 11px 11px;-moz-border-radius:11px 11px 11px 11px;
 -webkit-border-radius:11px 11px 11px 11px;box-shadow:0px 0px 0px rgb(0,0,0);
 -moz-box-shadow:0px 0px 0px rgb(0,0,0);
 -webkit-box-shadow:0px 0px 0px rgb(0,0,0);background-color:rgb(255,204,0);
 background-image:linear-gradient(-90deg,rgb(255,255,153),rgb(255,204,0));
 background-image:-webkit-gradient(linear,50% 0%,50% 100%,from(rgb(255,255,153)),to(rgb(255,204,0)));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', EndColorStr='#ffcc00)')";background-image:-moz-linear-gradient(-90deg,rgb(255,255,153),rgb(255,204,0));
}
.btn:hover { cursor:pointer;text-decoration:none; border:1px solid rgb(153,153,153); padding:5px 10px 5px 10px; color:rgb(0,0,0); font-size:14px; font-family:arial,serif; text-shadow:0px 0px 5px rgb(255,255,255); font-size:14px; border-radius:11px 11px 11px 11px; -moz-border-radius:11px 11px 11px 11px; -webkit-border-radius:11px 11px 11px 11px; box-shadow:0px 0px 0px rgb(0,0,0); -moz-box-shadow:0px 0px 0px rgb(0,0,0); -webkit-box-shadow:0px 0px 0px rgb(0,0,0); background-color:rgb(255,255,0); background-image:linear-gradient(-90deg,rgb(255,255,0),rgb(255,255,153)); background-image:-webkit-gradient(linear,50% 0%,50% 100%,from(rgb(255,255,0)),to(rgb(255,255,153))); background-image:-moz-linear-gradient(-90deg,rgb(255,255,0),rgb(255,255,153)); }
</style>
</head>
<body>
<form name='form1'>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
<div class='btn_mask'><input type='button' class='btn' value='a button'></div>
</form>
</body>
</html>
неудачник
источник
1
background: #4f81bd; /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzRmODFiZCIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM4YWJiZDciIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(left, #4f81bd 0%, #8abbd7 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,#4f81bd), color-stop(100%,#8abbd7)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* IE10+ */
background: linear-gradient(left, #4f81bd 0%,#8abbd7 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4f81bd', endColorstr='#8abbd7',GradientType=1 ); /* IE6-8 */

Делал это со мной, и как только я убрал линию «фильтр:», кровотечение ушло. Плюс я использую пирог.

Вылеты:

    background: #8abbd7; /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhhYmJkNyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM0ZjgxYmQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, #8abbd7 0%, #4f81bd 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8abbd7), color-stop(100%,#4f81bd)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* IE10+ */
background: linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8abbd7', endColorstr='#4f81bd',GradientType=0 ); /* IE6-8 */
-pie-background: linear-gradient(#8ABBD7, #4f81bd);
behavior: url(../PIE/PIE.htc);

Не кровоточит:

    background: #8abbd7; /* Old browsers */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhhYmJkNyIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM0ZjgxYmQiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, #8abbd7 0%, #4f81bd 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#8abbd7), color-stop(100%,#4f81bd)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* IE10+ */
background: linear-gradient(top, #8abbd7 0%,#4f81bd 100%); /* W3C */
-pie-background: linear-gradient(#8ABBD7, #4f81bd);
behavior: url(../PIE/PIE.htc);

Быстрое исправление тени IE:

fixBoxShadowBlur($('*'));

function fixBoxShadowBlur(jQueryObject){
if($.browser.msie && $.browser.version.substr(0, 1) == '9'){
    jQueryObject.each(function(){
        boxShadow = $(this).css('boxShadow');
        if(boxShadow != 'none'){
            var bsArr = boxShadow.split(' ');
            bsBlur = parseInt(bsArr[2]) || 0;
            bsBlurMeasureType = bsArr[2].substr(("" + bsBlur).length);
            bsArr[2] = (bsBlur * 2) + bsBlurMeasureType;
            $(this).css('boxShadow', bsArr.join(' '));
        }
    });
}

}

Шон Ребело
источник
1

Вы можете использовать тень для достижения градиента, и собирается работать в Internet Explorer 9 сborder-radius

Что-то вроде этого:

box-shadow: inset 0px 0px 26px 5px gainsboro;
Раджеш
источник
0

Не уверен, что это единственное или верное решение, но ...

Я обнаружил, что при условии, что радиус границы больше, чем ширина границы, я не столкнулся с проблемой. Когда они были одинаковыми, я получал квадратные углы.

daddywoodland
источник
0

Используя компас и sass, вы можете легко добиться этого следующим образом:

@import "compass";
#border-radius {
@include border-radius('RADIUS'px); }
#gradiant{
$experimental-support-for-svg: true;
@include background-image(linear-gradient('COLOR') %,('COLOR') %,...; }

Компас сгенерирует изображение SVG для вас.

вот так:

#gradiant {
 background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9InRvIiB5MT0iYm90dG9tIiB4Mj0idG8iIHkyPSJ0b3AiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiMwODJhMmUiLz48c3RvcCBvZmZzZXQ9IjM1JSIgc3RvcC1jb2xvcj0icmdiYSg4LCA0MiwgNDYsIDAuNzYpIi8+PHN0b3Agb2Zmc2V0PSI0MyUiIHN0b3AtY29sb3I9InJnYmEoNywgNDMsIDQ3LCAwLjcxKSIvPjxzdG9wIG9mZnNldD0iNTglIiBzdG9wLWNvbG9yPSJyZ2JhKDQsIDQ0LCA1MCwgMC41OCkiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMwNDJjMzIiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=');
background-size: 100%;
background-image: -webkit-gradient(linear, to bottom, to top, color-stop(0%, #082a2e),   color-stop(35%, rgba(8, 42, 46, 0.76)), color-stop(43%, rgba(7, 43, 47, 0.71)), color-stop(58%, rgba(4, 44, 50, 0.58)), color-stop(100%, #042c32));
background-image: -webkit-linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);
background-image: -moz-linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);
background-image: -o-linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);
background-image: linear-gradient(to bottom, #082a2e 0%, rgba(8, 42, 46, 0.76) 35%, rgba(7, 43, 47, 0.71) 43%, rgba(4, 44, 50, 0.58) 58%, #042c32 100%);

}

/* line 28, ../sass/boxshadow.scss */
#border-radius {
 -moz-border-radius-topright: 8px;
  -webkit-border-top-right-radius: 8px;
   border-top-right-radius: 8px;
 -moz-border-radius-bottomright: 8px;
  -webkit-border-bottom-right-radius: 8px;
  border-bottom-right-radius: 8px;

}

raam86
источник
0

Работает для меня...

<!--[if gte IE 9]>
  <style type="text/css">
  .gradient{
   filter: ;
}
</style>

CSS

border-radius: 10px;
background: #00a8db; /* Old browsers */
background: -moz-linear-gradient(top, #00a8db 0%, #116c8c 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00a8db), color-    stop(100%,#116c8c)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #00a8db 0%,#116c8c 100%); /* Chrome10+,Safari5.1+     */
background: -o-linear-gradient(top, #00a8db 0%,#116c8c 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #00a8db 0%,#116c8c 100%); /* IE10+ */
background: linear-gradient(to bottom, #00a8db 0%,#116c8c 100%); /* W3C */
-webkit-box-shadow: 1px 5px 2px #999;
-moz-box-shadow: 1px 1px 5px #999;
box-shadow: 1px 1px 5px #999;
color: #fff;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00a8db',     endColorstr='#116c8c',GradientType=0 ); /* IE6-8 */
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background:     url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwYThkYiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiMxMTZjOGMiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
/* W3C Markup, IE10 Release Preview */ 
background-image: linear-gradient(to top, #116C8C 0%, #00A5D7 100%);

источник