2012-07-10 93 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