下划线滑动导航效果

css:

.nav{
    position: relative;
}
.nav .subline{
    height: 5px;
    background: #ff9f00;
    position: absolute;
    bottom: 0;
    left: 0;
}
.nav ul{
    display: flex;
    height: 90px;
    width: 80%;
    justify-content: space-between;
}
.nav ul li {
    flex: 1;
}
.nav ul li>a {
    color: #333;
    font-size: 14px;
    display: block;
    text-align: center;
    height: 90px;
    line-height: 90px;
    font-weight: bold;
}
.nav li.active>a{
    color: #ff9f00;
}
.nav dl {
    position: fixed;
    width: 100%;
    min-width: 20%;
    top: 90px;
    left: 0;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    z-index: 1;
    height: 0;
    opacity: 0;
    visibility: hidden;
    transition: 0.4s;
}
.nav li:hover dl {
    height: 60px;
    opacity: 1;
    visibility: visible;
}
.nav dd {
    font-size: 14px;
    color: #fff;
    height: 60px;
    line-height: 60px;
    padding: 0 15px;
}
.nav dd a {
    color: inherit;
    transition: 0.6s;
}
.nav dd.on a,.nav dd:hover a {
    font-weight: bold;
}

html:

<div class="nav">
  <ul>
        <li class="active"><a href="#">导航一</a></li>
        <li>
            <a href="#">导航二</a>
            <dl>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
            </dl>
        </li>
        <li>
            <a href="#">导航三</a>
            <dl>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
            </dl>
        </li>
        <li>
            <a href="#">导航四</a>
            <dl>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
            </dl>
        </li>
        <li>
            <a href="#">导航五</a>
            <dl>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
            </dl>
        </li>
        <li>
            <a href="#">导航六</a>
            <dl>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
            </dl>
        </li>
        <li>
            <a href="#">导航七</a>
            <dl>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
            </dl>
        </li>
        <li>
            <a href="#">导航八</a>
            <dl>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
                <dd><a href="#">二级导航</a></dd>
            </dl>
        </li>
    </ul>
    <div class="subline"></div>
</div>

js:

// 导航鼠标经过
$('.nav li').each(function () {
    var windowWidth = $(window).width();
    var offsetLeft = $(this).offset().left;
    var dlWidth = $(this).find('dl').width();
    if (offsetLeft + dlWidth < windowWidth) {
        $(this).find('dl').css({ 
            left: offsetLeft,
            width: dlWidth - offsetLeft
        })
    } else {
        $(this).find('dl').css({
            left: 'auto',
            right: 0,
            width: dlWidth - offsetLeft
        })
    }
})

//导航滑条
slideLine($('.nav'), $('.subline'), $('.nav ul li'), $('.nav ul li.active'), 0);
function slideLine(box, subline, li, active, margin) {
    subline.css({
        'width': active.width(),
        'left': parseInt(active.position().left) + margin
    });
    li.mouseenter(function() {
        subline.stop().animate({
        width: $(this).width(),
            left: parseInt($(this).position().left) + margin
        }, 300);
    });
    box.mouseleave(function() {
        subline.stop().animate({
            width: active.width(),
            left: parseInt(active.position().left) + margin
        }, 300);
    });
};

 

posted @ 2020-09-01 16:04  可不可以重名  阅读(124)  评论(0)    收藏  举报