2009-12-22 4 views
141

Я использую CSS для указания текста триггера для секции слайда jQuery: т.е. когда вы наводите курсор на текст триггера, курсор меняется на указатель, а непрозрачность текста триггера уменьшается чтобы указать, что текст имеет действие щелчка.Непрозрачность CSS не работает в IE8

Это прекрасно работает в Firefox и Chrome, но в IE8 непрозрачность не меняется.

Я пробовал различные настройки CSS без каких-либо успехов.

Например

HTML:

<h3 class="slidedownTrigger">This is the trigger text</h3> 

CSS:

.slidedownTrigger 
{ 
    cursor: pointer; 
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; 
    filter: alpha(opacity=75); 
    -khtml-opacity: 0.75; 
    -moz-opacity: 0.75; 
    opacity: 0.75; 
} 

Что мешает IE изменить прозрачность? Примечание. Я пробовал это на множестве разных элементов, обмениваясь порядком инструкций CSS и просто используя те же IE. Я также пробовал использовать

-ms-filter: "alpha(opacity=75)"; 

но без успеха.

У меня закончились вещи, чтобы попытаться получить модификацию непрозрачности, работающую в IE8.

Любые идеи?

+0

Этот связанный/дублированный вопрос имеет ваш ответ, я думаю. http://stackoverflow.com/questions/859000/opacity-in-web-pages –

+0

Я видел, что вопрос - проблема есть ответ:

    фильтр: альфа (непрозрачность = 50);/* internet explorer */
    непрозрачность: 0.5;/* fx, safari, opera, chrome */
    -ms-filter: "progid: DXImageTransform.Microsoft.Alpha (opacity = 50)";/* IE8 */

не работает для меня (я просто попробовал еще раз, чтобы дважды проверить). Я применил его к h3, который был черным и полужирным. В Firefox и Chrome параметр непрозрачности превращает заголовок в серый цвет, как и следовало ожидать, но в IE8 он остается черным. – 2009-12-22 18:48:00

+0

oops - не понял, что вы не можете использовать HTML в комментариях - но я думаю, вы можете увидеть, что я пытаюсь сказать – 2009-12-22 18:49:54

ответ

64

Не знаю, относится ли это к 8, но исторически IE не применяет несколько стилей к элементам, которые не имеют «макет».

см: http://www.satzansatz.de/cssd/onhavinglayout.html

+9

IE не применяет несколько стилей к элементам, t "имеют макет." –

+4

Отлично! Благодарю. Это была проблема. Элементы, которые я пытался настроить непрозрачность для (например, h3), не имели «макета». Как только я дал им некоторые, непрозрачность сработала. Все, что я сделал, это добавить ширину: 100%; к h3. Спасибо, что указал мне в правильном направлении. Тем не менее, кажется безумным (если не багги), что Internet Explorer делает это. – 2009-12-22 20:04:29

+49

IE не применяет множество стилей к множеству элементов. – danwellman

157

Установка этих (так же, как я написал) служил мне, когда я нуждался в этом:

-moz-opacity: 0.70; 
opacity:.70; 
filter: alpha(opacity=70); 
+6

Спасибо, я считаю, что фильтр: alpha (opacity = 70); " для IE <8. Однако это не работает (для меня) в IE8 (я только что проверил). -moz-opacity в настоящее время довольно несуществующий, я верю, и непрозрачность - это стандартный способ делать что-то - поэтому, естественно, Microsoft не использовала этот способ делать что-то (слишком просто). – 2009-12-22 18:25:55

+15

Просто установить «непрозрачность» и «фильтр», как вы описали, было достаточно, чтобы заставить его работать для меня как в FF4, так и в IE8. -moz-opacity не требуется. – demoncodemonkey

+1

@ Gabriel McAdams: фильтр: alpha (opacity = 70); работал (но только в IE 8) –

48

Вам нужно установить Opacity первую для стандартов, совместимых с браузерами, то различные версии IE. См Пример:

но непрозрачности код не работает в ie8

.slidedownTrigger 
{ 
    cursor: pointer; 
    opacity: .75; /* Standards Compliant Browsers */ 
    filter: alpha(opacity=75); /* IE 7 and Earlier */ 
    /* Next 2 lines IE8 */ 
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; 
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=75); 
} 

Заметим, что устранил -moz, как Firefox является браузером Соответствие стандартам и что линия больше не нужно. Кроме того, -khtml обесценивается, поэтому я также устранил этот стиль.

Кроме того, фильтры IE не будет проверять на w3c стандартов, так что если вы хотите, чтобы ваши страницы, чтобы проверить, отделить стандарты стилей от вашего IE таблицы стилей, используя, если заявление IE, как показано ниже:

<!--[if IE]> 
<link rel="stylesheet" type="text/css" href="http://www.mysite.com/css/ie.css" /> 
<![endif]--> 

Если вы отделите трюки, ваш сайт будет проверять только штраф.

+3

Просто установить «непрозрачность» и «фильтр», как вы описали, было достаточно, чтобы заставить его работать для меня как в FF4, так и в IE8. Раздел, обозначенный как «/ * Следующие 2 строки IE8 * /», не требуется. – demoncodemonkey

+3

@demoncodemonkey: Правильно. Все зависит от версии, которую вы установили. Если вам нужна максимальная совместимость, я предлагаю их все. –

+0

Исправить, но: «Чтобы гарантировать, что пользователи обозревателя Internet Explorer 7 и 8 получат фильтр, вы можете включить оба указанных выше синтаксиса. Из-за особенностей нашего анализатора вам необходимо включить обновленный синтаксис перед тем, как более старый синтаксис, чтобы фильтр работал правильно в представлении совместимости (это известная ошибка и будет исправлена ​​после окончательной версии IE8). Вот пример таблицы стилей CSS: « (источник: [ссылка] (http: // blogs.msdn.com/b/ie/archive/2008/09/08/microsoft-css-vendor-extensions.aspx)) – zrathen

2

вот ответ на IE 8

И это работает для альфа работать в IE8, вы должны использовать позицию atribute для этого элемента, как

положение: родственника или другого.

http://www.codingforums.com/showthread.php?p=923730

17

Видимо альфа-прозрачность работает только на элементах уровня блока в IE 8. Установите дисплей: блок.

+1

Это был единственный совет, который работал для меня. Благодарю. – matt

+0

thanx works gr8 –

17

Использование display: inline-block; работает над IE8 для решения этой проблемы.

FWIW, opacity: 0.75 работает со всеми стандартными браузерами.

+0

Это помогло мне, спасибо –

2

Ни один из вышеперечисленных ответов не работал для меня, поэтому я просто дал свой тег DIV прозрачное фоновое изображение, которое отлично работало для всех браузеров.

1

Этот код работает

filter: alpha(opacity = 50); zoom:1; 

Вы должны добавить трансфокатора свойство для его работы :)

1

Вы также можете добавить polyfil для того, чтобы родное использование непрозрачности в IE6-8.

https://github.com/bladeSk/internet-explorer-opacity-polyfill

Это является самостоятельным polyfil, который не требует JQuery и другие библиотеки. Существует несколько небольших предостережений, которые он не использует для встроенных стилей, и для любых таблиц стилей, которые нуждаются в прозрачности polyfil'd, они должны придерживаться политики безопасности одного и того же происхождения.

Использование мертв простой

<!--[if lte IE 8]> 
    <script src="jquery.ie-opacity-polyfill.js"></script> 
<![endif]--> 

<style> 
    a.transparentLink { opacity: 0.5; } 
</style> 

<a class="transparentLink" href="#"> foo </a> 
5

CSS

Я имел обыкновение использовать следующие из CSS-Tricks:

.transparent_class { 
    /* IE 8 */ 
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 

    /* IE 5-7 */ 
    filter: alpha(opacity=50); 

    /* Netscape */ 
    -moz-opacity: 0.5; 

    /* Safari 1.x */ 
    -khtml-opacity: 0.5; 

    /* Good browsers */ 
    opacity: 0.5; 
} 

компас

Однако, лучшим решением является использование Opacity Compass mixin, все, что вам нужно сделать, это @include opacity(0.1);, и он позаботится о любых проблемах с несколькими браузерами для вас. Вы можете найти пример here.

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