【小技巧】制作一个滑动过渡切换的导航条

实现效果图:

这里写图片描述


原理:

  1. 使用2个相同的导航条,一个(nav1)放置在底部做为默认样式,一个(nav2)做为鼠标悬浮上去的样式。
  2. 将nav1和nav2全部绝对定位于同一个父容器。
  3. nav2的宽度只设置为一个菜单的大小,让溢出的部分隐藏,这样就透出底部的默认样式,达到没被训中的效果。
  4. 通过js来控制滑块(bg)在nav2上滑动,滑动到的地方就显示出悬浮效果。


demo代码:

<div>
        <div class="box1">
            <div class="bg">
                <ul class="demoNav1" style="left:-10px">
                    <li class="on">全部案例</li>
                    <li>网站设计</li>
                    <li>APP开发</li>
                    <li>微信平台</li>
                    <li>软件开发</li>
                </ul>
            </div>
        </div>
        <div class="box">
            <ul class="demoNav">
                <li class="on">全部案例</li>
                <li>网站设计</li>
                <li>APP开发</li>
                <li>微信平台</li>
                <li>软件开发</li>
            </ul>
        </div>
    </div>

javascript脚本:

<script type="text/javascript">
        //导航栏活动效果
        $(document).ready(function () {
            var menuLi = $(".demoNav li");
            var bg = $(".bg");
            menuLi.hover(
            function () {
                for (var i = 0, len = menuLi.length; i < len; i++) {
                    if ($(this).index() == i) {
                        $(".demoNav1").css("left", -menuLi.outerWidth(true) * i-10);
                        bg.animate({ left: menuLi.outerWidth(true) * i }, { queue: false, duration: 100 });
                    }
                }
            }
            );
        });
    </script>

css样式:

/*案例页面导航条*/
.demoNav, .demoNav1 {
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: 14pt;
}

.box, .box1 {
    height: 50px;
    position: absolute;
}

.box {
    width: 707px;
    z-index: 0;
}

.box1 {
    width: 0px;
    z-index: 1;
}

    .box ul, .box1 ul {
        width: 707px;
        position: absolute;
        z-index: 2;
        left: 0;
        top: 0;
    }

    .box li, .box1 li {
        width: 100px;
        height: 50px;
        float: left;
        line-height: 50px;
        cursor: pointer;
        text-align: center;
        border-radius: 5px;
    }

.box li {
    margin: 0 10px;
    background: #F5F5F5;
}

.box1 li {
    margin: 0 10px;
    background: #4D4D4D;
    color: white;
}

    .box li:last-child, .box1 li:last-child {
        border: none;
    }

.bg {
    width: 100px;
    height: 50px;
    position: absolute;
    z-index: 1;
    margin-left: 10px;
    overflow: hidden;
}

源码下载:http://pan.baidu.com/s/1kU7QaVl

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的HTML和CSS示例,用于创建一个滑动顶部固定导航菜单: HTML代码: ```html <header> <nav> <ul> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Services</a></li> <li><a href="#">Contact</a></li> </ul> </nav> </header> <main> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed dapibus magna quis lectus mattis, vel malesuada mi dictum. Etiam non odio non ipsum fermentum mollis. Nullam auctor nulla a mi scelerisque, vel lobortis sapien convallis. Sed vel lacus lorem. Nunc condimentum nunc eu velit finibus, vel venenatis nunc pulvinar. Sed at nulla sit amet purus bibendum interdum. Sed sed lectus vitae sapien tristique mattis. Sed sit amet justo ac neque faucibus auctor. Aenean vel enim vitae ipsum semper venenatis.</p> <p>Phasellus pulvinar leo non mi eleifend, ac luctus quam efficitur. Donec aliquam lorem sit amet lacus euismod, vel sollicitudin ex interdum. Fusce congue, lorem id vulputate molestie, orci leo facilisis sapien, et commodo felis leo quis sapien. Praesent nec purus id ligula commodo feugiat. Suspendisse potenti. Fusce commodo mi vel est eleifend, vel vestibulum nulla maximus. Praesent non risus ut velit consequat varius. Mauris ut tellus sit amet ligula porttitor accumsan. Donec accumsan aliquam condimentum. Integer nec bibendum mauris. Donec congue, ex id luctus elementum, elit sapien commodo leo, euismod placerat arcu magna vel metus. Aenean laoreet, velit vel bibendum interdum, nisi nibh porta lectus, ac pellentesque ligula arcu eu elit. Nullam id est sed elit scelerisque tincidunt eu sed lorem. Sed vel diam nec ante egestas feugiat.</p> <p>Aliquam erat volutpat. Aliquam ut arcu id mi blandit ultricies. Nullam vel odio eu urna lacinia semper quis vel dui. Donec nec placerat risus. Morbi lacinia, justo quis consequat porttitor, arcu velit lobortis est, eget eleifend nibh sem eget nulla. Sed bibendum auctor nunc, eu pharetra purus. Fusce sed laoreet est. Quisque euismod dictum mi, eget efficitur dolor pulvinar id. Vivamus ac finibus nisl. Aliquam erat volutpat. Ut quis malesuada justo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas lacinia augue vel metus accumsan, et interdum enim aliquam. Nam sit amet blandit quam. Donec id nibh euismod, malesuada nunc et, rhoncus ipsum.</p> </main> ``` CSS代码: ```css header { position: fixed; top: 0; left: 0; width: 100%; background-color: #fff; box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); z-index: 9999; /* 设置一个较高的 z-index 值,使导航菜单在其他元素之上 */ } nav { display: flex; justify-content: space-between; align-items: center; height: 60px; padding: 0 20px; } ul { list-style: none; margin: 0; padding: 0; display: flex; } li { margin: 0 10px; } a { text-decoration: none; color: #333; } main { margin-top: 80px; /* 为了避免内容被导航菜单遮挡,需要设置一个导航菜单高度相等的 margin-top */ } ``` 通过将`header`元素设置为固定定位并将`top`属性设置为0,我们可以将导航菜单固定在页面顶部。此外,我们还可以使用`z-index`属性将其置于其他元素之上。使用简单的Flexbox布局,我们可以轻松地将导航菜单水平居中,并在菜单项之间添一些间距。最后,我们为内容区域设置了一个导航菜单相等的`margin-top`,以避免内容被导航菜单遮挡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值