IE9 прикордонний радіус та фонові градієнтні кровотечі


191

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

А як щодо підтримки радіуса кордону та градієнта фону? Так, IE9 полягає в підтримці їх обох окремо, але якщо ви змішуєте ці два, градієнтні кровотечі виходять із закругленого кута.

Я також бачу дивацтва з тінями, що відображаються як суцільна чорна лінія під коробкою із закругленими кутами.

Ось зображення, показані в IE9:

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

Як я можу вирішити цю проблему?


Дякуємо за поради @MikeP та @meanstreakuk. Я думаю, що відповідь, яку я шукаю, більше відповідає принципам, коли IE справді підтримуватиме градієнти / округлення або як я змушу їх двох працювати разом.
SigmaBetaTooth

У вас є відповідь від @meanstreak, як змусити цих двох працювати разом. Якщо ви хочете бути реалістичними, градієнти SVG як фонових зображень набагато швидше повністю підтримуються всіма браузерами набагато швидше, ніж градієнти css (які все ще знаходяться під важкою розробкою / обговоренням).
Кевін Пено

29
Неймовірна МС настільки відстає. Це 2011 рік, і IE досі займається подібними питаннями. zzzzzzz. ..на їхньому сайті вони кажуть: "швидкий зараз прекрасний". Звичайно, це так. Погляньте на фотографії, розміщені вище. ЩО РЕКАНГУЛЯРНА КРАСА!
SunnyRed

SunnyRed, ну, в хромових елементах, що містяться в чомусь із закругленими кутами, що кровоточать по кутах. Дійсно, це 2012 рік, і браузери все ще займаються подібними питаннями :-)
Joey

2
@SunnyRed It 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, а не просто зображення? Я думаю, що зображення означатиме додатковий дзвінок на сервер для користувачів 9, однак, щоб усі ці зайві символи надсилалися браузерам, які не є 9, здається марними. Рішення працює для мене як образ, дуже сподобається пояснення.
Притулок

4
Його URI вручну - це те, що звичайно роблять деякі препроцесори CSS під час розгортання. Що стосується "але що це за потворний хакер", це кардинальне фігня. SVG - це зображення, як і будь-яке інше, хоча і векторне. Так називати SVG хаком і пропонувати PNG натомість - це абсолютно не сенс. Чому SVG краще? Незалежність роздільної здатності, з тієї ж причини, що ви використовуєте радіус кордону замість растрованих фонових зображень.
skrat

104

Я також працював з цією проблемою. Ще одне «рішення» - додати поділ навколо елемента, який має градієнт і закруглені кути. Зробіть цей роздільник однаковим значенням висоти, ширини та закруглених кутів. Встановіть перелив на прихований. Це в основному лише маска, але це працює на мене.

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 */
}

3
Це прекрасно працює для мене і набагато простіше, ніж інші запропоновані рішення.
Саймон П Стівенс

Набагато простіше, ніж зараз прийнята відповідь. Це працює в IE9 для мене.
Енді МакКлуггадж

Це працює ... так сумно і жалюгідно. Це браузер "HTML5" !? Чому я не в захваті від IE10.
Тодд Ванс

@toddv Не хвилюйся. Все скоро закінчиться Не скоро, але скоро. Дивіться daringfireball.net/linked/2012/07/04/windows-hegemony При будь-якій удачі нікому не доведеться турбуватися про підтримку IE12 ... можливо IE14 - воно стає нечітким.
jinglesthula

2
Лише незначна примітка, але ваші твердження про радіус кордону слід змінити, щоб сприяти сумісності вперед. Я зробив правки.
Parris

44

Я думаю, що варто згадати, що в багатьох випадках ви можете використовувати вставну коробку-тінь, щоб "підробити" ефект градієнта і уникнути потворних країв 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

елегантний і простий. i ++.
Еліран Малька

1
+1 для роздумів поза межами. Дуже добре працює як для вкладок, так і для кнопок. Використання вставки зберігає градієнт всередині елемента.
GlennG

Це найкраще рішення, яке я бачив. Чистий css, не вимагає додаткових елементів чи зображень.
Закс

1
приємний трюк, але у мене є градієнти по всьому сайту. Я не можу змінити їх усіх на дурні, тобто.
Мехмет Фатих Йілдиз

8

Ви також можете використовувати CSS3 PIE для вирішення цієї проблеми:

http://css3pie.com/

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


1
навіть з css3pie та ie9, я не бачу градієнта. Я бачу закруглені кути і тінь, що падає, але градієнта немає.
Кевін

7

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

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


5

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

Ви можете отримати код svg, використовуючи їх колірний код градієнта, від цього веб-сайту Microsoft (спеціально для градієнта до svg):

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

насолоджуйтесь :)


Посилання більше не дійсне.
розчавити

5

Просто використовуйте обгортковий дів (закруглений та переливний прихований), щоб вирізати радіус 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-rounded-corners/

В основному, ви використовуєте умовний коментар, щоб видалити фільтр, а потім створити SVG 'спрайти' градієнтів, які можна використовувати як фонові зображення.

Просто і елегантно!


Я цим живу. Особливо великі проекти, які допомагають мені НАРЕШЧО закінчити пошук пошуку спрайтів за допомогою SVG. Оскільки SVG є масштабованим, а спрайти можливі, я вважаю, що пакети спрайтів SVG набагато більш віртуальні, ніж градієнти css, і, як я вже говорив вище, швидше за все, буде бачити 100% підтримку в браузерах задовго до градієнтів CSS.
Кевін Пено

О, єдине, що я хотів би додати до цього, це те, що в даний час вебкіт і, я вважаю, опера також підтримують 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 посилається у вашій голові після вашої основної таблиці стилів, вона буде працювати чудово.


2
ie9 не надає лінійних градієнтів
Джеймс Вестгейт

3

Існує простий спосіб змусити його працювати під IE9 лише з одним Елементом.

Погляньте на цю загадку: http://jsfiddle.net/bhaBJ/6/

Перший елемент встановлює Радіус кордону. Другий псевдоелемент встановлює фоновий градієнт.

Кілька ключових інструкцій:

  • батько повинен мати відносне або абсолютне положення
  • батько повинен мати переповнення: приховано ; (щоб ефект радіусу кордону був видно)
  • :: перед (або :: після) псевдоелемент повинен мати z-індекс: -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 );

}

Просто ідеально! Дякую! :)
majimekun

У вашому прикладі я встановив радіус кордону на 20, а межі не обрізані в IE9
розчавити

Спробуйте встановити це у своєму заголовку: <meta http-equiv = "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);
}

1

Маска-діва в 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 */

Робила це мені, і як тільки я зняв лінію "filter:", кровотеча пішла. Плюс я використовую PIE.

Кровотечі:

    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

Не впевнений, чи це був разовий або дійсний спосіб вирішення, але ...

Я виявив, що за умови, що радіус кордону більший за ширину кордону, я не стикався з проблемою. Коли вони були однакові, я отримував квадратні кути.


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;

}


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%);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.