1

ドロップダウンオプション付きのメニューを作成しようとしています。秘訣は、オプションの最初のレベルが歪んでいて、子要素が であってはならないことです。親リストタグのスキューを解除せずに、親のhrefのリンクのスキューを解除することはできません..

<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( example ) を指定するだけです。

新しい 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>backgroundborder: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 に答える