Непрозрачность CSS не работает в IE8
Я использую CSS для обозначения текста триггера для скользящего раздела jQuery: т.е. когда вы наводите курсор мыши на текст триггера, курсор меняется на указатель, а непрозрачность текста триггера уменьшается, чтобы указать, что текст имеет действие щелчка,
Это отлично работает в 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.
Есть идеи?
10 ответов
Не знаю, относится ли это к 8, но исторически IE не применяет несколько стилей к элементам, которые не имеют "макета".
Установка этих (точно как я написал) послужила мне, когда мне это нужно:
-moz-opacity: 0.70;
opacity:.70;
filter: alpha(opacity=70);
Сначала необходимо установить 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, используя оператор if IE, как показано ниже:
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="http://www.mysite.com/css/ie.css" />
<![endif]-->
Если вы отделите то есть причуды, ваш сайт будет проверен очень хорошо.
С помощью display: inline-block;
работает на IE8, чтобы решить эту проблему.
FWIW, opacity: 0.75
работает на всех совместимых со стандартами браузерах.
Очевидно альфа-прозрачность работает только на элементах уровня блока в IE 8. Установите display: block.
CSS
Я использовал следующее из CSS-хитрости:
.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, все что вам нужно сделать, это @include opacity(0.1);
и он позаботится о любых кросс-браузерных проблемах для вас. Вы можете найти пример здесь.
Ни один из приведенных выше ответов для меня не сработал, поэтому я просто дал своему тегу DIV прозрачное фоновое изображение, которое отлично подойдет для всех браузеров.
Вот ответ для IE 8
И это работает для альфа для работы в IE8 вы должны использовать атрибут позиции для этого элемента, как
положение: относительное или другое.
Вы также можете добавить полифайл, чтобы включить использование собственной непрозрачности в 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>
Этот код работает
filter: alpha(opacity = 50); zoom:1;
Вам нужно добавить свойство zoom, чтобы оно работало:)