1

我试图创建一个带有下拉选项的菜单。诀窍是第一级选项是倾斜的,子元素不应该是 . 我不能在不取消父列表标签的情况下取消链接父列表中的链接。

<body>
      <ul id="nav">
        <li class="rhombus"><a class="rhlink"  href="#">1 HTML</a>
             <ul>
               <li><a href="#">3.2 Mootools</a></li>
               <li><a href="#">3.3 Prototype</a></li>
             </ul>
        </li>
        <li class="rhombus"><a class="rhlink" href="#">2 CSS</a></li>
        <li class="rhombus"><a class="rhlink" href="#">3 Javascript</a>
            <ul>
                <li><a href="#">3.1 jQuery</a>
                    <ul>
                        <li><a href="#">3.1.1 Download</a></li>
                        <li><a href="#">3.1.2 Tutorial</a></li>
                    </ul>
                </li>
                <li><a href="#">3.2 Mootools</a></li>
                <li><a href="#">3.3 Prototype</a></li>
            </ul>
        </li>
    </ul>
</body>

CSS:

#nav, #nav ul{
     margin:0;
     padding:0;
     list-style-type:none;
     list-style-position:outside;
     position:relative;
     line-height:1.5em;

 }

#nav a:link, #nav a:active, #nav a:visited{
    display:block;
    padding:0px 5px;
    border:1px solid #333;
    color:#fff;
    text-decoration:none;
    background-color:#00ff21;

 }

#nav a:hover{
    background-color:#fff;
    color:#333;
}

#nav li{
    float:left;
    position:relative;

}

li.rhombus{
    float:left;
    position: relative;
    transform: skew(35deg);
    -webkit-transform: skew(35deg);
    -moz-transform: skew(35deg);
    -ms-transform: skew(35deg);
    -o-transform: skew(35deg);
}

#nav ul {
    position:absolute;
    width:12em;
    top:1.5em;
    display:none;
    transform: skew(-35deg);
    -webkit-transform: skew(-35deg);
    -moz-transform: skew(-35deg);
    -ms-transform: skew(-35deg);
    -o-transform: skew(-35deg);
}
#nav li ul a{
    width:12em;
    float:left;


}

#nav ul ul{
    top:auto;
    }

#nav li ul ul {
    left:12em;
    margin:0px 0 0 10px;
    transform: skew(-0deg);
    -webkit-transform: skew(-0deg);
    -moz-transform: skew(-0deg);
    -ms-transform: skew(-0deg);
    -o-transform: skew(-0deg);

    }

#nav li:hover ul ul, #nav li:hover ul ul ul, #nav li:hover ul ul ul ul{
    display:none;
    }
#nav li:hover ul, #nav li li:hover ul, #nav li li li:hover ul, #nav li li li li:hover ul{
    display:block;
    }
4

1 回答 1

1

只需添加一个新<span>元素并指定transform-origin示例)。

新的 HTML

在每个锚点<span>的文本周围添加一个。.rhlink

<ul id="nav">
    <li class="rhombus"><a class="rhlink"  href="#"><span>1 HTML</span></a>
         <ul>
           <li><a href="#">3.2 Mootools</a></li>
           <li><a href="#">3.3 Prototype</a></li>
         </ul>
    </li>
    <li class="rhombus"><a class="rhlink" href="#"><span>2 CSS</span></a></li>
    <li class="rhombus"><a class="rhlink" href="#"><span>3 Javascript</span></a>
        <ul>
            <li><a href="#">3.1 jQuery</a>
                <ul>
                    <li><a href="#">3.1.1 Download</a></li>
                    <li><a href="#">3.1.2 Tutorial</a></li>
                </ul>
            </li>
            <li><a href="#">3.2 Mootools</a></li>
            <li><a href="#">3.3 Prototype</a></li>
        </ul>
    </li>
</ul>

新的 CSS

基本上,您只需要skew()新添加<span>的并指定transform-origin以使子菜单对齐。skew()不能在锚本身上使用负数,因为锚包含可见内容 (borderbackground),因此看起来好像没有应用任何倾斜。添加孩子<span>可以让您保留background/border:hover效果。

#nav,
#nav ul {
     margin:0;
     padding:0;
     list-style-type:none;
     list-style-position:outside;
     position:relative;
     line-height:1.5em;
}

#nav a:link,
#nav a:active,
#nav a:visited {
    display:block;
    padding:0px 5px;
    border:1px solid #333;
    color:#fff;
    text-decoration:none;
    background-color:#00ff21;
}

#nav a:hover {
    background-color:#fff;
    color:#333;
}

#nav > li {
    float:left;
    position:relative;
}

li.rhombus {
    float:left;
    position: relative;
    -webkit-transform-origin:0 0;
    -moz-transform-origin:0 0;
    -ms-transform-origin:0 0;
    -o-transform-origin:0 0;
    transform-origin:0 0;
    -webkit-transform:skew(35deg);
    -moz-transform:skew(35deg);
    -ms-transform:skew(35deg);
    -o-transform:skew(35deg);
    transform:skew(35deg);
}

li.rhombus > a span {
    -webkit-transform:skew(-35deg);
    -moz-transform:skew(-35deg);
    -ms-transform:skew(-35deg);
    -o-transform:skew(-35deg);
    transform:skew(-35deg);
    display:block;
}

li.rhombus > ul {
    -webkit-transform-origin:0 0;
    -moz-transform-origin:0 0;
    -ms-transform-origin:0 0;
    -o-transform-origin:0 0;
    transform-origin:0 0;
    -webkit-transform:skew(-35deg);
    -moz-transform:translate(0,1px) skew(-35deg);
    -ms-transform:skew(-35deg);
    -o-transform:skew(-35deg);
    transform:skew(-35deg);
}

#nav ul {
    position:absolute;
    top:1.5em;
    left:0;
    width:12em;
    display:none;
}

#nav li ul a {
    width:12em;
    float:left;
}

#nav ul ul {
    top:auto;
}

#nav li ul ul {
    left:12em;
    margin:0px 0 0 10px;
}

#nav li:hover ul ul,
#nav li:hover ul ul ul,
#nav li:hover ul ul ul ul {
    display:none;
}

#nav li:hover ul,
#nav li li:hover ul,
#nav li li li:hover ul,
#nav li li li li:hover ul {
    display:block;
}
于 2012-06-25T21:58:22.493 回答