我有一个菜单项,当它悬停在它上面时,它会掉落一个橙色框。
.menu > li > a:hover:after {
position: absolute;
left: 0px;
border-style: solid;
border-color: transparent;
}
但是我试图在下拉框下方实现钻石的效果。
我在这里发现了一个链接这个[网站] [4]的帖子,我试图使用diamond:after
方法,但结果却没有结果。我评论了需要编辑的css部分,以便快速参考。如果有人可以帮忙。
答案 0 :(得分:3)
1)在你的CSS中没有声明:在psuedo-element(.menu > li > a:hover:after {/* your css */}
)之后。
例如:
.menu > li > a:hover:after {
content: ""; /* empty content */
position: absolute;
bottom: -50px; /* position 50px below the bottom of the menu link */
left: 0px;
border-style: solid;
border-color: transparent;
border-width: 0px 60px; /* diamond has 60px to the left and to the right of the midpoint, so the menu item should be 120px width */
border-top: 50px solid #FF6E0D;
}
此方法要求您指定菜单项的宽度,因为您希望钻石跨越链接的整个底部。 (使用左/右border-width
的。)
2)要使用此方法,您应该将position: relative;
添加到.menu > li > a
声明中,因为:在psuedo-element之后需要它来定位自己。
答案 1 :(得分:3)
您可以为此使用伪元素,并且'移动'它在悬停上:
div {
height: 50px;
width: 100px;
background: orange;
margin: 0 auto;
text-align: center;
position: relative;
}
div:before {
content: "";
position: absolute;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-top: 50px solid orange;
top: 0;
left: 0;
transition: all 0.6s;
z-index:-1;
}
div:hover:before {
top: 100%;
}

<div>Option</div>
&#13;
答案 2 :(得分:1)
我使用:after
伪元素添加箭头。虽然两者都是单独动画的,但它在转换时看起来并不好看。如果你想让它顺利进行,你必须在那里挖掘一下。但这至少让箭头出现在正确的位置,这似乎是你问题的重要部分。然后,您只需使用hover
伪元素将显示设置为阻止。
.menu > li > a:after {
content: "";
position: absolute;
display: none;
top: 160px;
left: 0px;
width: 0;
height: 0;
border-left: 62px solid transparent;
border-right: 62px solid transparent;
border-top: 60px solid #FF6E0D;
}
.menu > li > a:hover:after {
display: block;
}