如何在父元素上使用 clip-path 时使子菜单可见
How to make a submenu visible while using clip-path on the parent element
有什么方法可以在父元素上使用 clip-path 时使子菜单可见,或者无法实现?不使用 clip-path 子菜单是可见的,但使用 clip-path 它是隐藏的.我尝试在第三个 ul 元素上将可见性设置为隐藏,但它仍然不可见
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.nav {
width: 50%;
}
.nav ul {
display: flex;
justify-content: space-between;
background-color: #000;
}
.nav ul li {
list-style: none;
padding: 5px;
position: relative;
}
.nav ul li a {
text-decoration: none;
text-transform: uppercase;
color: #fff;
display: block;
}
.nav ul li ul {
position: absolute;
top: 100%;
width: 150px;
padding-top: 20px;
display: flex;
flex-direction: column;
text-align: center;
clip-path: polygon(0% 10%, 10% 10%, 10% 0%, 20% 10%, 100% 10%, 100% 100%, 0% 100%);
overflow: visible;
}
.nav ul li ul li ul {
position: absolute;
left: 100%;
top: 0;
width: 150px;
text-align: center;
background-color: green;
}
<nav class="nav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a>
<ul>
<li><a href="">submenu1</a></li>
<li><a href="">submenu2</a></li>
<li><a href="">submenu3</a>
<ul>
<li><a href="">sub1</a></li>
<li><a href="">sub2</a></li>
</ul>
</li>
<li><a href="">submenu4</a></li>
</ul>
</li>
<li><a href="#">menu3</a></li>
</li>
<li><a href="#">menu5</a></li>
</ul>
</nav>
更新 clip-path
的百分比以覆盖更大的区域,如下所示。注意使用 1000%
而不是 100%
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.nav {
width: 50%;
}
.nav ul {
display: flex;
justify-content: space-between;
background-color: #000;
}
.nav ul li {
list-style: none;
padding: 5px;
position: relative;
}
.nav ul li a {
text-decoration: none;
text-transform: uppercase;
color: #fff;
display: block;
}
.nav ul li ul {
position: absolute;
top: 100%;
width: 150px;
padding-top: 20px;
display: flex;
flex-direction: column;
text-align: center;
clip-path:
polygon(0% 10%, 10% 10%, 10% 0%, 20% 10%, 1000% 10%, 1000% 1000%, 0% 1000%);
overflow: visible;
}
.nav ul li ul li ul {
position: absolute;
left: 100%;
top: 0;
width: 150px;
text-align: center;
background-color: green;
}
<nav class="nav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a>
<ul>
<li><a href="">submenu1</a></li>
<li><a href="">submenu2</a></li>
<li><a href="">submenu3</a>
<ul>
<li><a href="">sub1</a></li>
<li><a href="">sub2</a></li>
</ul>
</li>
<li><a href="">submenu4</a></li>
</ul>
</li>
<li><a href="#">menu3</a></li>
</li>
<li><a href="#">menu5</a></li>
</ul>
</nav>
要理解技巧,请添加一个大框阴影以注意裁剪区域和可见区域,因为阴影也会被裁剪路径裁剪:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.nav {
width: 50%;
}
.nav ul {
display: flex;
justify-content: space-between;
background-color: #000;
}
.nav ul li {
list-style: none;
padding: 5px;
position: relative;
}
.nav ul li a {
text-decoration: none;
text-transform: uppercase;
color: #fff;
display: block;
}
.nav ul li ul {
position: absolute;
top: 100%;
width: 150px;
padding-top: 20px;
display: flex;
flex-direction: column;
text-align: center;
clip-path:
polygon(0% 10%, 10% 10%, 10% 0%, 20% 10%, 1000% 10%, 1000% 1000%, 0% 1000%);
box-shadow: 0 0 0 1000vmax red;
}
.nav ul li ul li ul {
position: absolute;
left: 100%;
top: 0;
width: 150px;
text-align: center;
background-color: green;
}
<nav class="nav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a>
<ul>
<li><a href="">submenu1</a></li>
<li><a href="">submenu2</a></li>
<li><a href="">submenu3</a>
<ul>
<li><a href="">sub1</a></li>
<li><a href="">sub2</a></li>
</ul>
</li>
<li><a href="">submenu4</a></li>
</ul>
</li>
<li><a href="#">menu3</a></li>
</li>
<li><a href="#">menu5</a></li>
</ul>
</nav>
有什么方法可以在父元素上使用 clip-path 时使子菜单可见,或者无法实现?不使用 clip-path 子菜单是可见的,但使用 clip-path 它是隐藏的.我尝试在第三个 ul 元素上将可见性设置为隐藏,但它仍然不可见
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.nav {
width: 50%;
}
.nav ul {
display: flex;
justify-content: space-between;
background-color: #000;
}
.nav ul li {
list-style: none;
padding: 5px;
position: relative;
}
.nav ul li a {
text-decoration: none;
text-transform: uppercase;
color: #fff;
display: block;
}
.nav ul li ul {
position: absolute;
top: 100%;
width: 150px;
padding-top: 20px;
display: flex;
flex-direction: column;
text-align: center;
clip-path: polygon(0% 10%, 10% 10%, 10% 0%, 20% 10%, 100% 10%, 100% 100%, 0% 100%);
overflow: visible;
}
.nav ul li ul li ul {
position: absolute;
left: 100%;
top: 0;
width: 150px;
text-align: center;
background-color: green;
}
<nav class="nav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a>
<ul>
<li><a href="">submenu1</a></li>
<li><a href="">submenu2</a></li>
<li><a href="">submenu3</a>
<ul>
<li><a href="">sub1</a></li>
<li><a href="">sub2</a></li>
</ul>
</li>
<li><a href="">submenu4</a></li>
</ul>
</li>
<li><a href="#">menu3</a></li>
</li>
<li><a href="#">menu5</a></li>
</ul>
</nav>
更新 clip-path
的百分比以覆盖更大的区域,如下所示。注意使用 1000%
而不是 100%
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.nav {
width: 50%;
}
.nav ul {
display: flex;
justify-content: space-between;
background-color: #000;
}
.nav ul li {
list-style: none;
padding: 5px;
position: relative;
}
.nav ul li a {
text-decoration: none;
text-transform: uppercase;
color: #fff;
display: block;
}
.nav ul li ul {
position: absolute;
top: 100%;
width: 150px;
padding-top: 20px;
display: flex;
flex-direction: column;
text-align: center;
clip-path:
polygon(0% 10%, 10% 10%, 10% 0%, 20% 10%, 1000% 10%, 1000% 1000%, 0% 1000%);
overflow: visible;
}
.nav ul li ul li ul {
position: absolute;
left: 100%;
top: 0;
width: 150px;
text-align: center;
background-color: green;
}
<nav class="nav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a>
<ul>
<li><a href="">submenu1</a></li>
<li><a href="">submenu2</a></li>
<li><a href="">submenu3</a>
<ul>
<li><a href="">sub1</a></li>
<li><a href="">sub2</a></li>
</ul>
</li>
<li><a href="">submenu4</a></li>
</ul>
</li>
<li><a href="#">menu3</a></li>
</li>
<li><a href="#">menu5</a></li>
</ul>
</nav>
要理解技巧,请添加一个大框阴影以注意裁剪区域和可见区域,因为阴影也会被裁剪路径裁剪:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.nav {
width: 50%;
}
.nav ul {
display: flex;
justify-content: space-between;
background-color: #000;
}
.nav ul li {
list-style: none;
padding: 5px;
position: relative;
}
.nav ul li a {
text-decoration: none;
text-transform: uppercase;
color: #fff;
display: block;
}
.nav ul li ul {
position: absolute;
top: 100%;
width: 150px;
padding-top: 20px;
display: flex;
flex-direction: column;
text-align: center;
clip-path:
polygon(0% 10%, 10% 10%, 10% 0%, 20% 10%, 1000% 10%, 1000% 1000%, 0% 1000%);
box-shadow: 0 0 0 1000vmax red;
}
.nav ul li ul li ul {
position: absolute;
left: 100%;
top: 0;
width: 150px;
text-align: center;
background-color: green;
}
<nav class="nav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a>
<ul>
<li><a href="">submenu1</a></li>
<li><a href="">submenu2</a></li>
<li><a href="">submenu3</a>
<ul>
<li><a href="">sub1</a></li>
<li><a href="">sub2</a></li>
</ul>
</li>
<li><a href="">submenu4</a></li>
</ul>
</li>
<li><a href="#">menu3</a></li>
</li>
<li><a href="#">menu5</a></li>
</ul>
</nav>