如何解决动态地标记其父级的子菜单外观?
MENUE 1 to 4
没问题..…
从波纹管 图片一 的 MEMUE 5 子菜单垂直居中...没关系
问题
来自 第二张图片 顶部空间为空,但是它下降了……我需要修复..首先子菜单将从底部向上调平,然后它将覆盖顶部空间,然后如果需要更多空间,它将移至底部
注意需要在else if()
条件下实现逻辑...
合影
第二名
const initMegaMenu = (function(){
// nav.noor-nav_menu .noor-sub_menu li
let magaMenue = document.querySelectorAll("nav.noor-nav_menu .noor-sub_menu .noor-sub_menu ");
// let magaMenues = document.querySelectorAll("nav.noor-nav_menu .noor-sub_menu .noor-sub_menu ");
magaMenue.forEach(function(item){
// console.log(item)
let ht = item.getBoundingClientRect();
// console.log(item.offsetHeight)offsetTop
let pTop = item.parentElement.getBoundingClientRect();
// console.log(pTop.top);element.offsetTop + element.offsetHeight
// console.log(item.parentElement.offsetTop);
let parentLiTop = item.parentElement.offsetTop;
let parentLiTopHalf = parseFloat(parentLiTop) / 2;
let parentLiHeight = item.parentElement.offsetHeight;
let parentLiHeightHalf = parentLiHeight / 2;
let parentUlHeight = item.parentElement.parentElement.offsetHeight;
let parentUlHeightHalf = parseFloat(parentUlHeight) / 2;
let currentItemUlHeight = item.offsetHeight;
let currentItemUlHeightHalf = currentItemUlHeight / 2;
// console.log(item.parentElement.offsetHeight);
// console.log(item.parentElement.parentElement.offsetHeight);
console.log(`
parentLiTop : ${parentLiTop} |
parentLiTopHalf : ${parentLiTopHalf} |
parentLiHeight : ${parentLiHeight} |
parentLiHeightHalf : ${parentLiHeightHalf} |
parentUlHeight : ${parentUlHeight} |
currentItemUlHeight : ${currentItemUlHeight} |
currentItemUlHeightHalf : ${currentItemUlHeightHalf}
`);
// item.style.marginTop = - (parentLiHeightHalf + parentLiTopHalf ) + 'px';
if( parseFloat(parentLiTop) <= parseFloat(parentUlHeightHalf) ){
if(parseInt(currentItemUlHeightHalf) <= parseInt(parseFloat(parentLiTop)) ){
console.log('ok')
item.style.marginTop = -(parseFloat(currentItemUlHeightHalf) -parseFloat(parentLiHeightHalf))+'px';
}else{
item.style.marginTop = - parseFloat(parentLiTop) +'px';
}
}else if(parseFloat(parentLiTop) > parseFloat(parentUlHeightHalf)){
// console.log((parseFloat(parentUlHeight) - parseFloat(parentLiTop)))
// item.style.marginTop = - (parseFloat(parentUlHeight) - parseFloat(parentLiTop)) +'px';
if(parseInt(currentItemUlHeightHalf) <= parseInt(parseFloat(parentLiTop)) ){
console.log('ok')
item.style.marginTop = -(parseFloat(currentItemUlHeightHalf) -parseFloat(parentLiHeightHalf))+'px';
}else{
item.style.marginTop = - parseFloat(parentLiTop) +'px';
}
}
})
})([])
document.addEventListener("DOMContentLoaded",initMegaMenu);
*,*::after,*::before{
margin: 0;
padding: 0;
Box-sizing: border-Box;
}
nav.noor-nav_menu{
width: 100%;
height: 3rem;
background-image: linear-gradient(to right,#86259C,#CE388B);
}
nav.noor-nav_menu > ul,nav.noor-nav_menu > * ul {
list-style: none;
}
nav.noor-nav_menu > ul > li > a,nav.noor-nav_menu > * ul > li > a {
text-decoration: none;
text-transform: uppercase;
}
nav.noor-nav_menu .noor-nav_list{
display: flex;
background-image: linear-gradient(to right,#CE388B);
}
nav.noor-nav_menu .noor-nav_list li {
line-height: 3rem;
position: relative;
}
nav.noor-nav_menu .noor-sub_menu li {
line-height: 2.6rem;
background-image: linear-gradient(to right,#CE388B);
min-width: 12rem;
}
nav.noor-nav_menu .noor-nav_list a {
display: block;
padding: 0 1.5rem;
font-size: 1rem;
color: #ffffff;
}
.noor-nav_list .noor-sub_menu a {
font-size: .8rem;
}
.noor-nav_list a:hover {
background: #5d0033d3;
}
nav.noor-nav_menu .noor-sub_menu {
position: absolute;
display: block;
top: 16rem;
border-top: 1px solid #86259C;
border-top: 1px solid #CE388B
;
background-color: rgba(255,255,.1);
opacity: 0;
visibility: hidden;
transition: all .5s ease;
}
nav.noor-nav_menu .noor-sub_menu .noor-sub_menu {
left: 160%;
top: 0;
border-top: 0;
border-left: 1px solid #86259C;
}
nav.noor-nav_menu .noor-sub_menu::before{
content: '';
position: absolute;
border: .5rem solid transparent;
border-bottom-color: #86259C;
left: 3rem;
top: -1rem;
}
nav.noor-nav_menu .noor-sub_menu .noor-sub_menu::before {
content: '';
position: absolute;
border: .5rem solid transparent;
border-right-color: #86259C;
left: -1rem;
top: 1rem;
}
.noor-nav_list li:hover > .noor-sub_menu{
top: 3rem;
visibility: visible;
opacity: 1;
}
nav.noor-nav_menu .noor-sub_menu li:hover > .noor-sub_menu {
top: 0;
left: 100%;
}
<header>
<span class="toggle-icon"><i class="fas fa-bars "></i></span>
<nav class="noor-nav_menu">
<ul class="noor-nav_list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">FAQ</a></li>
<li><a href="#">Mega Menue</a>
<ul class="noor-sub_menu">
<li><a href="#" >Menue 1 >> </a>
<ul class="noor-sub_menu">
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
</ul>
</li>
<li><a href="#" >Menue 2 >> </a>
<ul class="noor-sub_menu">
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
</ul>
</li>
<li><a href="#" >Menue 3 >> </a>
<ul class="noor-sub_menu">
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
</ul>
</li>
<li><a href="#" >Menue 4 >> </a>
<ul class="noor-sub_menu">
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
</ul>
</li>
<li><a href="#" >Menue 5 >> </a>
<ul class="noor-sub_menu">
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<!-- <li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li> -->
</ul>
</li>
<li><a href="#" >Menue 6 >> </a>
<ul class="noor-sub_menu">
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
</ul>
</li>
<li><a href="#" >Menue 7 >> </a>
<ul class="noor-sub_menu">
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
<li><a href="#">Menue 1.1</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。