碰撞缓冲效果的导航条 js

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>碰撞缓冲效果的导航条</title>
<style type="text/css">
* { padding: 0; margin: 0; }
li { list-style: none; }
body { background: #fff; }
ul { width: 202px; margin: 40px auto 0; position: relative; }
li { width: 200px; height: 30px; line-height: 30px; padding-left: 10px; border: 1px solid #ccc; border-left: 3px solid #666; font-size: 14px; color: #333; margin-bottom: 5px; position: relative; z-index: 2; }
a { color: #333; text-decoration: none; }
.active { font-weight: bold; background: #fff0f0; }
#bar { width: 10px; padding-left: 0; background: #cc6699; border: 1px solid #cc6699; position: absolute; top: 0; left: -14px; z-index: 3; }
</style>
<script type="text/javascript">
    var obj = null;
    var aLis = null;
    var oBar = null;
    var iTime = null;
    var iSpeed = 0;
    var iAcc = 3;
    var onOff = 0;
    var iPrev = 0;
    var iNext = 0;
    function goTime() {
        for (var i = 0; i < aLis.length; i += 1) {
            if (aLis[i] === this) {
                var iTarget = (aLis[0].offsetHeight + 5) * i;
                iNext = i;
                onOff = iNext - iPrev;
                if (iTime) {
                    clearInterval(iTime);
                }
                if (onOff >= 0) {
                    iTime = setInterval("elasticity(" + iTarget + ")", 35);
                }
                else {
                    iTime = setInterval("postpone(" + iTarget + ")", 35);
                }
                iPrev = iNext;
            }
            aLis[i].className = "";
            this.className = "active";
        }
    }
    function elasticity(target) {
        var top = oBar.offsetTop;
        iSpeed += iAcc;
        top += iSpeed;
        if (top >= target) {
            iSpeed *= -0.7;
            if (Math.abs(iSpeed) <= iAcc) {
                clearInterval(iTime);
                iTime = null;
            }
            top = target;
        }
        oBar.style.top = top + "px";
    }
    function postpone(target) {
        if (oBar.offsetTop === target) {
            clearInterval(iTime);
            iTime = null;
        }
        else {
            iSpeed = (target - oBar.offsetTop) / 4;
            oBar.style.top = oBar.offsetTop + iSpeed + "px";
        }
    }
    window.onload = function () {
        obj = document.getElementById("nav");
        aLis = obj.getElementsByTagName("li");
        oBar = document.getElementById("bar");
        for (var i = 0; i < aLis.length; i += 1) {
            if (aLis[i].id != "bar") {
                aLis[i].onmouseover = goTime;
            }
        }
    };
</script>
</head>
<body>
<ul id="nav">
<li class="active"><a href="#">首页</a></li>
<li><a href="/">烈火学院</a></li>
<li><a href="/">妙味课程</a></li>
<li><a href="/">联系方式</a></li>
<li id="bar"></li>
</ul>
</body>
</html>

转载原文:http://www.veryhuo.com/a/view/31222.html

时间: 2024-11-10 10:27:43

碰撞缓冲效果的导航条 js的相关文章

使用CSS3制作导航条和毛玻璃效果

导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些.简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理.这种效果对用户来说是十分具有视觉冲击力的. 本次分享的主题:通过CSS3来制作类似下面的导航条和毛玻璃效果. 导航条是梯形形状的. 背景区域的毛玻璃效果. 把导航条和毛玻璃效果在一篇文章中分享其实是有原因的.因为这两个效果的实现离不开一个重要的思想. 用语言来描述就是:父元素设置position:relative,其伪元素(after或者before)设置

原生js吸顶式导航条

<!--吸顶式导航条--><nav class="nav"> <div> <a href="javascript: return false"><img src="n.jpg" ></a> <div class="topNav"> <div> <input type="text" placeholder=&

多种类型的导航条制作【css3,jquery】

导航条的使用很广,每个网站都会做出具有自己特色的导航条.最近特地去了解了各种类型的导航条,比如具有高亮显示的导航条,中英文互相切换的导航条,具有弹性动画的导航条,甚至是具有摩擦运动动画的导航条(文字下面有横线)等.每种导航条都有自己的特色,比如高亮显示的导航条看起来比较简单,但是视觉效果还不错,具有动画效果的导航条在视觉上也是有很好的效果. 接下来将会一一介绍4种应用比较广的导航条,即:高亮显示的导航条,中英文互相切换的导航条,具有弹性动画的导航条,具有摩擦运动动画的导航条. 1.高亮显示的导航

导航条——展开式导航条

1.概述 对于一个企业网站来说,“联系我们”超链接是必不可少的.为了更加引人注意,可以将其制作成具有展开式动画效果的导航条.运行本实例,读者可以看到页面右侧的“联系我们”导航条是慢慢展开的,并且每次刷新页面时,都会以同样的动画效果展开. 2.技术要点 本例主要通过自定义JavaScript函数ourmove()控制Image对象的height属性值实现的.为了实现动画效果,在JavaScript函数中还需要应用setTimeout()方法延迟执行改变图片高度的操作. 3.具体实现 (1)在网页中

JS实现导航条效果——current跟随鼠标hover移动

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条

本博主在一次个人移动端项目中,遇到这么一个需求:希望自己的项目中,头部导航条的效果可以像今日头条那样,横向滚动! 对于这样的效果,在各大移动端项目中几乎是随处可见,为什么呢? 我们都知道,对于移动端也就是手机上,我们页面的宽度并不像PC端那样大,可以显示很长的导航项,但对于我们移动端来说,由于功能的拓展,或者业务的细分,往往导航项也会随之增多,一旦超过移动端在一行的页面显示宽度,那便会出现导航项换行的现象,虽说也有这样布局,但一旦导航项增多到一定程度的时候,我们的页面(首页)将均被导航项霸占,这

导航条效果

<!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-widt

导航条点击按钮切换效果

<!--[if IE]><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><![endif]--><html xmlns="http://www.w3.org/1999/xhtml"><head>&

很酷的导航条下拉效果

<style type="text/css"><!--.p9{ font-family: "宋体"; font-size: 9pt; }body { font-family: "宋体"; font-size: 9pt; margin-top: 0px; margin-left: 0px; margin-right: 0px}UNKNOWN { TEXT-DECORATION: none}A:visited { TEXT-DECO