Как бы вы настроили резервную копию CSS3 в IE для этой наклонной навигации DIV?
Взято из учебника по адресу: http://www.joecritchley.com/demos/slanted-nav/
Я не могу на всю жизнь заставить это работать в ЛЮБОЙ версии IE. Он отображает навигацию только как обычный маркированный список, но я знаю, что это должно быть возможно на основе некоторых результатов http://css3please.com/, таких как:
-ms-transform: rotate(20deg); /* IE9 */
filter: progid:DXImageTransform.Microsoft.Matrix(/* IE6–IE9 */
M11=0.9396926207859084, M12=-0.3420201433256687, M21=0.3420201433256687, M22=0.9396926207859084, sizingMethod='auto expand');
zoom: 1;
Вот настройка, которая работает практически во всех других браузерах:
Ссылка JS Fiddle: http://jsfiddle.net/zumajoe/9ukdm/
CSS
#main-nav > ul
{
margin-top:50px;
overflow:hidden;
}
#main-nav > ul > li
{
float:left;
font-size:18px;
margin-left:-35px;
overflow:hidden;
padding:20px;
}
#main-nav > ul > li:first-child
{
border-radius:10px;
margin-left:0;
}
#main-nav > ul > li > a
{
-moz-transform:rotate(20deg);
-o-transform:rotate(20deg);
-webkit-transform:rotate(20deg);
background:#bbb;
border-left:1px solid #FFF;
color:#444;
display:block;
height:150px;
margin-bottom:-100px;
margin-top:-70px;
overflow:hidden;
text-decoration:none;
}
#main-nav > ul > li:first-child > a
{
border-left:0;
border-radius:10px;
}
#main-nav > ul > li > a > span
{
-moz-transform:rotate(-20deg);
-o-transform:rotate(-20deg);
-webkit-transform:rotate(-20deg);
display:block;
margin-top:57px;
overflow:hidden;
padding:0 20px;
}
#main-nav > ul > li > a:hover
{
background:#aaa;
}
#main-nav > ul > li.current > a
{
background:#000;
color:#fff;
}
HTML
<nav id="main-nav">
<ul>
<li class="current"><a href="#"><span>Home</span></a></li>
<li><a href="#"><span>News</span></a></li>
<li><a href="#"><span>About</span></a></li>
<li><a href="#"><span>Work</span></a></li>
<li><a href="#"><span>A longer menu item</span></a></li>
<li><a href="#"><span>Contact</span></a></li>
</ul>
</nav>
EDIT: Ну, половина проблемы возникает из-за того, что IE не понимает тег "Nav" HTML5, поэтому изменение <Nav>
на <Div>
по крайней мере позволит отображать его как обычные прямоугольники в IE.
ИЗМЕНИТЬ # 2: Чем дальше я соглашусь с этим, я понимаю, что проще было бы использовать свойство "skew" CSS3. Перекосите контейнер, затем перекосите назад (как и для этого вращения). Тем не менее все еще есть проблемы с IE 8,7 и 6.
Ответы
Ответ 1
Я бы предложил просто использовать это: CSS3 Transform to Matrix Filter Converter и поместить полученный код в таблицу стилей только для IE.
Я сам использовал его и нашел, что он работает хорошо.
Что касается элемента <nav>
, вы можете использовать HTML5 Shiv script, чтобы заставить элементы HTML5 работать в IE.
Ответ 2
В дополнение к элементу <nav>
, который не поддерживается в IE, который вы уже обнаружили, я бы сказал, что ваш лучший выбор - условные комментарии. Таким образом:
<!--[if lt IE 9]>
<style type="text/css">
#main-nav ul li a span{
margin-top: 40px;
}
#main-nav ul li {
margin-left: -45px;
}
</style>
<![endif]-->
Добавление этого кода, который вы опубликовали в своем вопросе, делает его приемлемым, хотя явно менее сексуальным, чем повернутая версия.
Ответ 3
Это не так просто, как кажется. В принципе, использование CSS-манипуляторов для этого сложно и всегда очень ограничено.
Однако существует очень альтернативный метод, называемый spiffy". Я лично не использую это и для таких случаев, как в вашем вопросе, я бы просто использовал изображения. Это был мой официальный ответ.
Первое меню с мягким наклонением script Я наткнулся на Stu Nicholls "Slat Menu" . Я сформулировал это как в вашем примере: http://jsfiddle.net/hobobne/LsVyY/ Однако изменение угла углов очень сложно и Я в принципе отказался от этого. Если вы понимаете концепцию, и вы решили использовать ее, то вы можете потратить некоторое время на нее. Кроме того, похоже, что это не работает в IE8 (возможно, не в IE.) Так что в основном это не удается.
Вот некоторые ссылки на некоторые альтернативные статьи наклонного меню: