gpt4 book ai didi

html - 第一层倾斜的 CSS 下拉菜单

转载 作者:行者123 更新时间:2023-11-28 18:42:39 24 4
gpt4 key购买 nike

我正在尝试创建一个带有下拉选项的菜单。诀窍是第一级选项是倾斜的,而子元素不应该是。我无法在不取消父列表标记的情况下取消父项中的链接 a hrefs..

<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;
}

最佳答案

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

新的 HTML

添加 <span>围绕每个 .rhlink 的文本 anchor 。

<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()不能在 anchor 本身上使用,因为 anchor 包含可见内容( borderbackground ),所以看起来好像没有应用任何倾斜。添加 child <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;
}

关于html - 第一层倾斜的 CSS 下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11197508/

24 4 0