JS高级动画
图片跟着鼠标飞
利用了鼠标的移动事件以及元素的坐标属性。
var img = document.querySelector("img")
document.onmousemove = function(event){
    var event = event || window.event
    var x = event.clientX-img.offsetWidth/2
    var y = event.clientY-img.offsetHeight/2
    img.style.left = x+"px"
    img.style.top = y+"px"
}
鼠标移动产生残影动画
    var box = document.querySelector("div")
    var all = document.querySelectorAll("div")
    document.onmousemove = function(event){
        var num = 0
        var x = event.pageX;
        var y = event.pageY;
        setInterval(function(){
        all[num].style.display = "block"
        all[num].style.left = x-box.clientWidth/2+"px"
        all[num].style.top = y-box.clientHeight/2+ "px"
        num++
        },30)
    }
Tab切换动画
<style>
        dl dt{
            width: 100px;
            height: 50px;
            background-color: blueviolet;
            float: left;
            margin-left: 10px;
            text-align: center;
            line-height: 50px;
        }
        dt:hover{
            background-color: cornflowerblue;
            color: darkkhaki;
            font-size: 25px;
        }
        dl::after{
            content: "";
            display: block;
            clear: both;
        }
        div{
            width: 400px;
            height: 200px;
            background-color: coral;
            text-align: center;
            line-height: 200px;
            display: none;
        }
    </style>
</head>
<body>
    <dl >
        <dt>标题1</dt>
        <dt>标题2</dt>
        <dt>标题3</dt>
    </dl>
    <div >内容1</div>
    <div>内容2</div>
    <div>内容3</div>
</body>
</html>
<script>
    var dlList = document.querySelector("dl").children
    var divList = document.querySelectorAll("div")
        for(let i = 0;i<dlList.length;i++){
            dlList[i].onmouseenter = function(){
                for(var j = 0;j<divList.length;j++){
                    divList[j].style.display = "none"  
                }
                divList[i].style.display = "block"
            }
        }
</script>
拖曳盒子动画
var header = document.querySelector("header")
var div = document.querySelector("div")
div.onmousedown = function(){
    document.onmousemove = function(event){
        var event = event || window.event
        var left = event.clientX - header.offsetLeft - header.clientLeft - div.offsetWidth/2
        var top = event.clientY - header.offsetTop - header.clientTop-div.offsetHeight/2
        if(top<=0){
            top = 0
        }else if(top >= header.scrollHeight-div.scrollHeight){
            top = header.scrollHeight-div.scrollHeight
        }
        if(left<=0){
            left = 0
        }else if(left>= header.scrollWidth-div.scrollWidth){
            left =  header.scrollWidth-div.scrollWidth
        }
        div.style.left = left + "px"
        div.style.top = top + "px"
    }
}
document.onmouseup = function(){
    document.onmousemove = null
}
小球触璧反弹
var header = document.querySelector("header")
    var div = document.querySelector("div")
    var btn1 = document.querySelector("button")//开始按钮
    var btn2 = document.querySelectorAll("button")//暂停按钮
    var x = 0;
    var y = 0;
    var Timer;
    //初始方向
    var addX = true;
    var addY = true;
    btn1.onclick = function(){
        btn2[1].disabled = false
        btn1.disabled = true
        clearInterval(Timer)
        Timer = setInterval(function(){
            var xMax = header.scrollWidth - div.offsetWidth
            var yMax = header.scrollHeight - div.offsetHeight
            if(addX){
                x++
            if(x>=xMax){
                addX = false
            }else{
                    div.style.left = x+"px"
            }
            }else{
            x--
            if(x<=0){
                addX = true
            }else{
                div.style.left = x+"px"
            }
            }  
            if(addY){
            y++
            if(y>=yMax){
                addY = false
            }else{
                div.style.top = y+"px"
            }
            }else{
            y--
            if(y<=0){
                addY = true
            }else{
                div.style.top = y+"px"
            }
            }
        },1)
    }
    btn2[1].onclick = function(){
        btn1.disabled = false
        btn2[1].disabled = true
        clearInterval(Timer)
    }
秒表计时
var Timer
    var num = 7200;
    var hour = document.getElementById("hour")
    var minutes = document.getElementById("minutes")
    var second = document.getElementById("second")
    var start = document.querySelector("button")
    var pause = document.querySelectorAll("button")[1]
    var end = document.querySelectorAll("button")[2]
    start.onclick = function(){
        clearInterval(Timer)
        Timer = setInterval(function(){
            num--
            var h = add0(Math.floor( num/60/60))
            var m = add0(Math.floor(num/60)%60)
            var s = add0(num%60)
            hour.innerHTML = h
            minutes.innerHTML = m
            second.innerHTML = s
        },1)
        start.disabled = true
    }
    pause.onclick = function(){
        clearInterval(Timer)
        start.disabled = false
    }
    end.onclick = function(){
        start.disabled = false
        clearInterval(Timer)
        hour.innerHTML = "00"
        minutes.innerHTML = "00"
        second.innerHTML = "00"
    }
    function add0 (num){
        return num<10?"0"+num:num
    }
放大镜
    <style>
        * {
          margin: 0;
          padding: 0;
        }
        header,
        footer {
          float: left;
          border: 1px solid red;
          width: 500px;
          height: 500px;
          overflow: hidden;
          position: relative;
        }
        header img {
          height: 500px;
          width: 500px;
        }
        footer img {
          height: 1100px;
          width: 1100px;
        }
        #mask {
          position: absolute;
          left: 0px;
          top: 0px;
          width: 200px;
          height: 200px;
          background-color: rgba(1, 1, 1, 0.4);
        }
      </style>
</head>
<body>
    <header>
        <img id="smallImg" src="./img/2.jpg" alt="" />
        <div id="mask"></div>
      </header>
      <footer>
        <img id="bigImg" src="./img/2.jpg" alt="" />
      </footer>
</body>
</html>
<script>
    var header = document.querySelector("header")
    var footer = document.querySelector("footer")
    var mask = document.getElementById("mask")
    header.onmousemove = function(event){
        var event = event || window.event
        var maskLeft = event.clientX-mask.clientWidth/2-header.offsetLeft-header.clientLeft
        var maskTop = event.clientY-mask.clientHeight/2-header.offsetTop-header.clientTop
        var maxLeft = header.offsetWidth-mask.offsetWidth
        var maxTop = header.offsetHeight-mask.offsetHeight
        if(maskLeft>maxLeft){
            maskLeft = maxLeft
        }
        if(maskLeft<0){
            maskLeft = 0
        }
        if(maskTop>maxLeft){
            maskTop = maxTop
        }
        if(maskTop<0){
            maskTop = 0
        }
        mask.style.left = maskLeft+"px"
        mask.style.top = maskTop+"px"
        var scrollLeft = maskLeft*2
        var scrollTop = maskTop*2
        footer.scrollLeft = scrollLeft
        footer.scrollTop = scrollTop
    }
返回顶部
var img = document.querySelector("img")
var Timer
img.onclick = function(){
    clearInterval(Timer)
    Timer = setInterval(function(){
        document.documentElement.scrollTop--
        document.body.scrollTop--
        console.log(document.documentElement.scrollTop--)
    },1)
}
window.onscroll = function(event){
    var event = event || window.event
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
    if(scrollTop>100){
        img.style.display = "block"
    }
    if(scrollTop<=0){
        clearInterval(Timer)
        img.style.display = "none"
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号