2011-01-10 1 views
13

Видя, что <div> элементы визуализации границы/границы радиуса правильно, но любой <a> или <button>, который имеет фон, границы и границы радиуса набор показывает цвет фона или изображение в виде квадрата, а только граница круглая. Пробовал установку <a> & <button> до display: block или display: inline-block, но это не сработало.границы радиуса ошибка на <a> в IE9

Есть ли известное обходное решение?

Вот ссылка на вычисленное стиле из Webkit: https://gist.github.com/773719

alt text

Вот вычисленный стиль от IE9 Дев инструментов: alt text

Update Использование фильтра :; или -ms-filter :; свойство, чтобы иметь градиенты в IE, заставляет фон выходить из заданного радиуса границы.

+0

Это только в IE9? Если нет, можете ли вы разместить CSS? –

+2

Конечно, это только в IE9. IE8 не поддерживает «border-radius». – SLaks

+0

Да, только IE9. Webkit/Firefox работает правильно. Будет обновлять сообщение с помощью CSS. – adamyonk

ответ

1

Запуск к этому также. Градиент, основанный на фильтрах, на самом деле не является фоновым изображением, так как с градиентами CSS3 это дополнительный слой. Очевидно, что команда IE не обрезала эти слои фильтра в закругленные углы. Странно, потому что довольно очевидно, что люди собираются создавать такие кнопки.

Сопоставление устаревших объектов с новыми должно быть больно. Им может быть лучше всего реализовать градиенты в CSS. Я предпочел бы добавить префикс, чем добавлять устаревшие фильтры.

0

Одним из решений этой проблемы является использование CurvyCorners, а яваскрипт решения. Он работает полностью до IE6, но борется с градиентным фоном. Если вы используете цветной фон блока, но он будет работать отлично, и обработал все типы границ, которые я покачал на нем. Веб-сайт говорит, что вам нужно его вызывать, но почему-то я нашел, что он работает, просто включив .js и используя атрибуты border-radius css3 в css.

+0

тоже, извините, я хочу ответить на то, что сказал @Nasir, но пока не удалось - однако, причина, по которой команда IE заявила, что еще не поддерживает функции css3, связана с тем, что спецификация css3 arent еще не завершена. его довольно слабый, но theyre в основном планируя «догнать» и внедрять css2 должным образом, прежде чем они начнут «экспериментальные» технологии. пока css3 не станет стандартным, мы будем испытывать много разочарований, спрашивая: «Почему они не ...?» –

3

Решение состоит в том, чтобы вложить градиент внутри другого элемента с радиусом границы И наложением. Это меньше идеала, но все его css. нет хаков.

Вне этого, используя фоновое изображение, работает очень хорошо, т.е.

<div class="corner"> 
    <div class="grad">button</div> 
</div> 


<style> 
.corner, 
.grad{ 
    height:50px; 
    width:250px; 
    } 
.corner{ 
    -webkit-border-radius: 10px; 
    -moz-border-radius: 10px; 
    border-radius: 10px; 
    overflow:hidden; 
    } 
.grad{ 
    border:1px #659300 solid; 
    background: #659300; /* old browsers */ 
    background: -moz-linear-gradient(top, #659300 0%, #6F9B00 50%, #528200 51%, #6CA501 100%); /* firefox */ 
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#659300), color-stop(50%,#6F9B00), color-stop(51%,#528200), color-stop(100%,#6CA501)); /* webkit */ 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b1cc00', endColorstr='#518e00',GradientType=0); /* ie */ 
    } 
</style> 
0

Я использую Ultimate CSS Gradient Generator. Он рекомендовал использовать этот код для отключения фильтра в IE9:

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

Это должно решить вашу проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^