2012-07-10 95 views
8

我试图创建这个导航菜单(绿色亮点是活动页面,灰色悬停状态):平行四边形导航背景CSS

Nav Menu

我可以用下面的CSS平行四边形:

ul#nav li a { 
    text-decoration:none; 
    padding:4px 10px; 
    border-radius:3px; 
    transform: skew(-10deg); 
    -o-transform: skew(-10deg); 
    -moz-transform: skew(-10deg); 
    -webkit-transform: skew(-10deg); 
    color:#757575; 
} 

ul#nav li a:hover { 
    background:#f3f1eb; 
} 

ul#nav li a.current-menu-item { 
    color:#fff; 
    background:#5d9732; 
} 

ul#nav li a.current-menu-item:hover { 
    background:#5d9732; 
} 

不幸的是,这会导致文字歪斜为好,出现斜体:

Nav Menu Skewed

这里的显示设置(虽然歪斜不工作的jsfiddle)一个的jsfiddle:http://jsfiddle.net/K3bQJ/4/

有什么办法来防止文本的倾斜,所以它不会出现斜体?我正在加载jQuery,但宁愿避免它,或者至少有一个可用的CSS后备。

感谢您的任何建议!

+3

以供将来参考,有HTTP:// cssdesk。 com /这是仅用于没有Javascript组件的CSS和HTML。我认为这种测试非常好。 – TheZ 2012-07-10 17:52:58

+0

在jsFiddle中应用'display:inline-block;'。 http://jsfiddle.net/K3bQJ/5/ – 2012-07-10 17:54:23

+0

有趣的问题。你知道,有时它真的很酷,只是使用和形象:) – 2012-07-10 18:09:57

回答

13

Try this添加一个跨度的标签内,并设置它的倾斜到相反方向(注意使用如果skewX的这是根据https://developer.mozilla.org/en/CSS/-moz-transform认为是正确的)

<ul id="nav"> 
    <li><a class="current-menu-item" href="#"><span>Nav Item 1</span></a></li> 
<li><a href="#"><span>Nav Item 2</span></a></li> 
<li><a href="#"><span>Nav Item 3</span></a></li> 
</ul> 

ul#nav li a { 
    display: inline-block; 
    text-decoration:none; 
    padding:4px 10px; 
    border-radius:3px; 
      transform: skewX(-10deg); 
     -o-transform: skewX(-10deg); 
     -moz-transform: skewX(-10deg); 
    -webkit-transform: skewX(-10deg); 
    color:#757575; 
} 

ul#nav li a span { 
    display: inline-block; 
      transform: skewX(10deg); 
     -o-transform: skewX(10deg); 
     -moz-transform: skewX(10deg); 
    -webkit-transform: skewX(10deg); 
} 
+0

这是一个cssdesk.com链接http://cssdesk.com/j9Bnx(酷网站) – 2012-07-10 18:03:11

+0

有同样的想法,除了在'a'上试用它而不是用跨度包装。 – 2012-07-10 18:03:55

+1

完美,这个作品!我只是将背景样式添加到li而不是a元素以避免添加更多标记,然后将反向歪斜设置为锚元素。非常感谢! – 2012-07-10 18:03:57