絶対配置されたドロップダウンメニューにメニュー内の相対配置要素を追加できるようにする必要があります。これはjQueryとは関係ありませんが、ドロップダウンメニューにはCSSの遷移の遅延があり、ドロップダウンメニューがアクティブになるように、追加を処理するクリーンな方法を見つけるのが難しいです。CSS移行遅延と同期してjQueryで要素を追加
トップレベルメニューには、ドロップダウンがアクティブになる前に500msの移行遅延があります。 jQueryの "block"要素の追加がこれと同期して動作することを確認する必要があります。誰かがこれを処理するための良い方法のための任意の指導を持っていますか?私はマークアップを再加工する柔軟性がありません。
jQuery(document).ready(function($) {
$('.main-menu > li').on({
mouseenter: function() {
$(this).addClass('active');
$('.block').appendTo($(this).find('.dropdown'));
},
mouseleave: function() {
$(this).removeClass('active');
$('.block').appendTo('.header');
}
})
});
*,
*:before,
*:after {
box-sizing: border-box;
}
html {
overflow-y: scroll;
min-height: 100%;
}
body {
position: relative;
overflow: hidden;
margin: 0;
}
.main-menu {
display: flex;
justify-content: space-around;
background: yellow;
}
.dropdown {
opacity: 0;
transition: all 200ms ease-in-out 200ms;
visibility: hidden;
position: absolute;
width: 100vw;
left: 50%;
transform: translateX(-50%);
z-index: 20;
overflow: hidden;
background: red;
}
li.active .dropdown {
transition: all 0s linear 500ms;
opacity: 1;
visibility: visible;
}
.block {
background: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<body>
<header class="header">
<ul class="main-menu">
<li>
<a href="/test">Test</a>
<div class="dropdown">
<div class="wrapper">
<div class="menu-subcategory">
<h4><a href="/sub">Sub Cat</a></h4>
<ul>
<li>
<a href="/test">Test</a>
</li>
<li>
<a href="/test">Test 2</a>
</li>
<li>
<a href="/test">Test 3</a>
</li>
<li>
<a href="/test">Test 4</a>
</li>
<li>
<a href="/test">Test 5</a>
</li>
<li>
<a href="/test">Test 6</a>
</li>
<li>
<a href="/test">Test 7</a>
</li>
<li>
<a href="/test">Test 8</a>
</li>
</ul>
</div>
</div>
</div>
</li>
<li>
<a href="/test">Test 2</a>
<div class="dropdown">
<div class="wrapper">
<div class="menu-subcategory">
<h4><a href="/sub">Sub Cat</a></h4>
<ul>
<li>
<a href="/test">Test</a>
</li>
<li>
<a href="/test">Test 2</a>
</li>
<li>
<a href="/test">Test 3</a>
</li>
<li>
<a href="/test">Test 4</a>
</li>
<li>
<a href="/test">Test 5</a>
</li>
<li>
<a href="/test">Test 6</a>
</li>
<li>
<a href="/test">Test 7</a>
</li>
<li>
<a href="/test">Test 8</a>
</li>
</ul>
</div>
</div>
</div>
</li>
<li>
<a href="/test">Test 3</a>
<div class="dropdown">
<div class="wrapper">
<div class="menu-subcategory">
<h4><a href="/sub">Sub Cat</a></h4>
<ul>
<li>
<a href="/test">Test</a>
</li>
<li>
<a href="/test">Test 2</a>
</li>
<li>
<a href="/test">Test 3</a>
</li>
<li>
<a href="/test">Test 4</a>
</li>
<li>
<a href="/test">Test 5</a>
</li>
<li>
<a href="/test">Test 6</a>
</li>
<li>
<a href="/test">Test 7</a>
</li>
<li>
<a href="/test">Test 8</a>
</li>
</ul>
</div>
</div>
</div>
</li>
<li>
<a href="/test">Test 4</a>
</li>
<li>
<a href="/test">Test 5</a>
</li>
<li>
<a href="/test">Test 6</a>
</li>
<li>
<a href="/test">Test 7</a>
</li>
<li>
<a href="/test">Test 8</a>
</li>
</ul>
<div class="block">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas
at lorem non hendrerit.</p>
</div>
</header>
<div class="container">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida est mauris, nec blandit dui elementum vitae. Pellentesque aliquet magna vel lorem porta, nec scelerisque augue volutpat. Mauris sed eros a erat bibendum venenatis vulputate nec
dui. Maecenas tristique at leo et finibus. Maecenas euismod volutpat tortor, non aliquet arcu commodo quis. Aliquam mollis condimentum orci at efficitur. Fusce turpis sapien, ornare ac tincidunt sed, consectetur sit amet purus. Vivamus egestas at
lorem non hendrerit.</p>
</div>
</body>
同じブロックの場合は、それをヘッダーから削除してliに貼り付けるのはなぜですか?それは 'ヘッダ'と '李'の両方に存在することはできません – karthick