반응형
<div class="lnb">
<ul>
<li>
<a href="#">1Depth</a>
<ul>
<li>
<a href="#">- 2Depth</a>
<ul>
<li><a href="#">- 3Depth</a></li>
<li><a href="#">- 3Depth</a></li>
<li><a href="#">- 3Depth</a></li>
</ul>
</li>
<li>
<a href="#">- 2Depth</a>
<ul>
<li><a href="#">- 3Depth</a></li>
<li><a href="#">- 3Depth</a></li>
</ul>
</li>
<li><a href="#">- 2Depth</a></li>
<li><a href="#">- 2Depth</a></li>
</ul>
</li>
<li>
<a href="#">1Depth</a>
<ul>
<li>
<a href="#">- 2Depth</a>
<ul>
<li><a href="#">- 3Depth</a></li>
<li><a href="#">- 3Depth</a></li>
</ul>
</li>
<li>
<a href="#">- 2Depth</a>
<ul>
<li><a href="#">- 3Depth</a></li>
<li><a href="#">- 3Depth</a></li>
<li><a href="#">- 3Depth</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#">1Depth</a>
<ul>
<li><a href="#">- 2Depth</a></li>
<li><a href="#">- 2Depth</a></li>
</ul>
</li>
<li><a href="#">1Depth</a></li>
</ul>
</div>
/* reset css */
* { margin: 0; padding: 0; }
li { list-style: none; }
a, a:active, a:focus { color :#222; text-decoration: none; }
/*************** 1Depth ***************/
.lnb { position: relative; width: 200px; }
.lnb > ul > li { border-bottom: 1px solid #dcdcdc; }
.lnb > ul > li > a { display: block; padding: 14px 35px; 14px 15px; font-size: 15px; background: seagreen url('https://cdn-icons-png.flaticon.com/512/1828/1828925.png') no-repeat center right 15px/10px auto; }
.lnb > ul > li:hover > a { color: #fff; background-color: seagreen; }
.lnb > ul > li.on > a { color: #fff; background: seagreen url('https://cdn-icons-png.flaticon.com/512/860/860821.png') no-repeat center right 15px/10px auto; }
/*************** 2Depth ***************/
.lnb > ul > li ul { display: none; }
.lnb > ul > li ul > li > a { display: block; padding: 14px 25px 14px 14px; font-size: 13px; background: #f5f2ec url('https://cdn-icons-png.flaticon.com/512/1828/1828925.png') no-repeat center right 15px/10px auto; }
.lnb > ul > li ul > li:hover > a { color: seagreen; background-color: #f5f2ec; }
.lnb > ul > li ul > li.on > a { color: seagreen; background: #f5f2ec url('https://cdn-icons-png.flaticon.com/512/860/860821.png') no-repeat center right 15px/10px auto; }
/*************** 3Depth ***************/
.lnb > ul > li ul li ul { display: none; }
.lnb > ul > li ul li ul li a { display: block; padding: 10px 25px; font-size: 12px; background-color: #fff; }
.lnb > ul > li ul li ul li:hover a { text-decoration: underline; }
.lnb ul li.noDepth a { background-image: none; }
// jQuery
var lnbUI = {
clickE: function(target) {
var $target = $(target);
// 아래 Depth가 없으면 background-image: none;
$(target).each(function() {
if($(this).find('> ul').length > 0) {
return true;
}
$(this).addClass('noDepth');
});
$target.on('click', 'a', function() {
var $this = $(this);
var $depthTarget = $this.next(); // ul
var $siblings = $this.parent().siblings(); // li
if($this.parent('li').hasClass('noDepth') === false) {
// removeClass('on'); 해준다.
$('.lnb ul li ul li').removeClass('on');
// == $this.parent('li').find('ul li').removeClass('on');
$this.parent().siblings().removeClass('on');
// 2,3Depth가 slideUp
$this.parent('li').siblings('li').find('ul').slideUp();
$this.parent('li').find('ul ul').slideUp();
if($depthTarget.css('display') === 'none') {
$depthTarget.slideDown();
$this.parent('li').addClass('on');
} else {
$depthTarget.slideUp();
$this.parent('li').removeClass('on');
}
} else {
return false;
// console.log('noDepth :: ul없으면 링크이동');
}
return false;
});
}
}
lnbUI.clickE('.lnb li')
Reference
반응형
'🐣codeLab' 카테고리의 다른 글
column-count사용하여 masonry 나타내기 (0) | 2022.02.02 |
---|---|
모바일 브라우저에서 100vh 오류(직접해보기) (3) | 2021.12.17 |
swiper slide 양 옆 (margin) 주기 (0) | 2021.08.31 |
SVG 참고 (0) | 2021.08.31 |
스크롤 시 윈도우 하단에 고정하기 (0) | 2021.08.25 |