CSS3 + JS 导航栏鼠标跟随效果

最近做一个导航栏跟随效果的页面,于是写了个插件分享一下。
example.gif

CSS 设置

.nav {
    position: absolute;
    top: 30px;
    right: 100px;
    display: inline-block;
    margin: 20px auto;
}
.nav li {
    display: inline-block;
    margin-right: 20px;
}
.nav li a {
    text-decoration: none;
    color: #333;
}
.underline {
    position: absolute;
    top: 30px;
    left: 0;
    width: 32px;
    height: 2px;
    background: #333;
    -webkit-transition: all .5s;
       -moz-transition: all .5s;
        -ms-transition: all .5s;
         -o-transition: all .5s;
            transition: all .5s;
}

HTML 结构

<ul class="nav">
    <li><a href="javascript:;">首页</a></li>
    <li><a href="javascript:;">产品中心</a></li>
    <li><a href="javascript:;">关于我们</a></li>
    <li><a href="javascript:;">联系我们</a></li>
    <li class="underline"></li>
</ul>

Native 原生写法

// Native
(function () {
    var nav = document.querySelector('.nav'),
        underline = nav.querySelector('.underline');

    nav.addEventListener('mouseover', function (event) {
        var _target = event.target;
        if (_target.nodeName == "LI" || _target.nodeName == "A") {
            underline.style.left = _target.offsetLeft + 'px';
            underline.style.width = _target.offsetWidth + 'px';
        }
    }, false);
})();

jQuery 写法

// jQuery
(function ($) {
    var $nav = $('.nav'),
        $underline = $nav.find('.underline');

    $nav.on('mouseover', 'li', function() {
        var _navOffsetLeft = $nav.offset().left,
            _targetOffsetLeft = $(this).offset().left,
            _targetWidth = $(this).width();

        $underline.css({
            'left': _targetOffsetLeft - _navOffsetLeft + 'px',
            'width': _targetWidth + 'px'
        });
    });
})(jQuery);

另外我编写了插件放在Github上面(nav-nuderline.js), https://github.com/wwlsky/nav-nuderline/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 15,201评论 1 180
  • 如果所有人都如出一辙 ,那是不是说,已经没有存在的必要了。
    模拟器阅读 231评论 0 0
  • 电影《七月与安生》: 七月与安生本来就不是一路人,她们就是两个世界的人。无论从家庭环境、性格、人生追求,怎么看也看...
    仗践走天涯阅读 1,434评论 4 2
  • 你偶尔从我梦中来 让我跟你聊着一时 平凡家话 或是生活里的小插曲 喜悦舒心的感觉 像是我每次路过油菜花田 那晌午妖...
    Life零絮阅读 164评论 0 0

友情链接更多精彩内容