#html #css #internet-explorer #compatibility
#HTML #css #internet-explorer #совместимость
Вопрос:
Я использую 3D-рулонные ссылки на своем веб-сайте, используя HTML5 и CSS3.
Я привык делать Modernizr доступным для IE и более старых браузеров, но IE11 обнаружен как совместимый с 3D-анимацией css… и это не так.
В IE 11 :
ожидаемый :
фактический результат :
Итак, вопрос :
Как я могу использовать Modernizr
on Internet Explorer 11
? Цель состоит в том, чтобы использовать 3D-рулонные ссылки или запасной вариант для неанимированного CSS.
Вот мой HTML-код <head>
:
<!--[if IE]>
<script src="js/modernizr.js"></script>
<![endif]-->
Вот CSS, который я использую :
/* ROLL LINKS */
.roll {
display: inline-block;
overflow: hidden;
vertical-align: top;
-webkit-perspective: 600px;
-moz-perspective: 600px;
-ms-perspective: 600px;
perspective: 600px;
-webkit-perspective-origin: 50% 50%;
-moz-perspective-origin: 50% 50%;
-ms-perspective-origin: 50% 50%;
perspective-origin: 50% 50%;
}
.roll:hover {text-decoration: none;}
.roll span {
display: block;
position: relative;
padding: 0 2px;
-webkit-transition: all 400ms ease;
-moz-transition: all 400ms ease;
-ms-transition: all 400ms ease;
-webkit-transform-origin: 50% 0%;
-moz-transform-origin: 50% 0%;
-ms-transform-origin: 50% 0%;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
}
.roll:hover span {
background: #b1162c;
-webkit-transform: translate3d( 0px, 0px, -30px ) rotateX( 90deg );
-moz-transform: translate3d( 0px, 0px, -30px ) rotateX( 90deg );
-ms-transform: translate3d( 0px, 0px, -30px ) rotateX( 90deg );
}
.roll span:after {
content: attr(data-title);
display: block;
position: absolute;
left: 0;
top: 0;
padding: 0 2px;
color: #fff;
background: #b1162c;
-webkit-transform-origin: 50% 0%;
-moz-transform-origin: 50% 0%;
-ms-transform-origin: 50% 0%;
-webkit-transform: translate3d( 0px, 105%, 0px ) rotateX( -90deg );
-moz-transform: translate3d( 0px, 105%, 0px ) rotateX( -90deg );
-ms-transform: translate3d( 0px, 105%, 0px ) rotateX( -90deg );
}
Ответ №1:
Есть CSS-трюк, позволяющий использовать резервные ссылки с 3D-роликами в несовместимом браузере. Добавьте это в свой CSS :
/* no 3d transform fix */
.no-csstransforms3d .roll span:after {
display:none;
}
.no-csstransforms3d .roll:hover span {
color:#fff;
background:#b1162c;
}
.no-csstransforms3d .roll:hover span {
-webkit-transform:none;
-moz-transform:none;
-o-transform:none;
transform: none
}
/* ie10 fix */
.no-cssreflections .roll span:after {
display:none;
}
.no-cssreflections .roll:hover span {
color:#fff;
background:#b1162c;
}
.no-cssreflections .roll:hover span {
-webkit-transform:none;
-moz-transform:none;
-o-transform:none;
transform: none
}
Как вы можете видеть, вам нужно Modernizr
активировать этот запасной вариант, который представляет собой просто цветную ссылку. И пока этот [if IE]
метод работает для Internet Explorer 8, 9, 10… это не будет работать в IE11. Потому что Microsoft думала, что их браузер теперь может обрабатывать «современное» кодирование (и оооо, они ошибались).
Итак, хитрость заключается в том, чтобы использовать javascript
для загрузки modernizr.js если в браузере установлен IE11. Просто добавьте это в свой HTML-код <head>
:
<script type="text/javascript">
if(window.ActiveXObject || "ActiveXObject" in window){
<!--
var n='<script src="js/modernizr.js">';
var d='</script>';
document.write(n d); //
-->
}
</script>
Это приведет к записи страницы HTLM по-другому, если обнаружен IE11, путем добавления <script src="js/modernizr.js"></script>
в код. Это просто сложнее [if IE]
.
Если вы объедините свои предыдущие CSS и HTML с этим резервным CSS и этим javascript для обнаружения IE11, все будет в порядке.
Комментарии:
1. У меня пока нет ничего, чтобы сделать это в Интернете. Как если бы я был единственным, кто беспокоился о моей анимации CSS3 в IE11. Подумал, что это может быть хорошим подспорьем.