js特效5(4个特效)

1.随机点名

<body>
<button id="begin">开始点名</button>
<button id="over">结束点名</button>
<div id="name"></div>
<script>
    window.onload = function (ev) {
        var begin = f('begin');
        var over = f('over');
        var name = f('name');
        //定义变量
        var ding = null;
        var namearr = ['小明','小花','小红','小亮','小白','小蓝','小紫','小黄','小美'];
        name.innerText = namearr[0];
        //开始点名
        begin.onclick = function (ev1) {
            clearInterval(ding);
            ding = setInterval(function () {
                var s_num = parseInt( Math.random() * namearr.length);//随机数
                var s_name = namearr[s_num];
                name.innerText = s_name;
            },20)
        };
        //结束点名
        over.onclick = function (ev2) {
            clearInterval(ding);
        }
    };
    function f(id) {
        return document.getElementById(id);
    }
</script>
</body>

一次定时器

setTimeout(function () {

        },20)

2.匀速动画

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>匀速动画</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        #box{
            width: 90px;
            height: 90px;
            background-color: red;
        }
    </style>
</head>
<body>
<button id="btn">开始动画</button>
<div id="box"></div>
<script>
    window.onload = function (ev) {
        var btn = f('btn');
        var box = f('box');
        var ding = null, begin = 0, step = 50, target = 599;//起始、步长,终点
        btn.onclick = function (ev1) {
            clearInterval(ding);
            ding = setInterval(function () {
                begin += step;
                if ( begin >= target){
                    begin = target;//因为begin可能会超过599,所以最后让它等于target
                    clearInterval(ding);
                }
                box.style.marginLeft = begin + 'px';
            },100)
        }
    };
    function f(id) {
        return document.getElementById(id);
    }
</script>
</body>
</html>

2.1匀速动画的封装

<script>
    window.onload = function (ev) {
      dong('btn','box',50,800);
    };
    //封装动画
    function dong(btnId, boxId, step, target) {
        var btn = f(btnId);
        var box = f(boxId);
        var ding = null, begin = 0;
        btn.onclick = function (ev1) {
            clearInterval(ding);
            ding = setInterval(function () {
                begin += step;
                if ( begin >= target){
                    begin = target;//因为begin可能会超过599,所以最后让它等于target
                    clearInterval(ding);
                }
                box.style.marginLeft = begin + 'px';
            },100)
        }
    }
    function f(id) {
        return document.getElementById(id);
    }
</script>

3.缓动动画

缓动公式:起始值 += (结束值 - 起始值) * 环动系数 环动系数在0~1之间

(function (w) {
    w.Tool = {
        $: function (id) {
            return document.getElementById(id);
        }
    };
})(window);//将Tool绑到window里
<body>
<button id="btn">开始动画</button>
<div id="box"></div>
<script src="工具/Tool.js"></script>
<script>
    //缓动公式:起始值 += (结束值 - 起始值) *环动系数   环动系数在0~1
    window.addEventListener('load',function (ev) {
        var ding = null, begin = 0, target = 800;
        Tool.$('btn').addEventListener('click',function () {
            clearInterval(ding);
            ding = setInterval(function () {
                begin += (target - begin) *0.2;
                if (Math.round(begin) >= target){
                    begin = target;
                    clearInterval(ding);
                }
                Tool.$('box').style.marginLeft = begin + 'px';
            },100);
        })
    })

</script>
</body>
</html>

4.轮播切换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>轮播切换</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        a{
            color: black;
            text-decoration: none;
        }
        #box{
            position: relative;
            width: 322px;
            height: 258px;
            border: 1px solid #ccc;
            margin: 100px auto;
        }
        .left, .right{
            width: 60px;
            height: 250px;
            float: left;
        }
        .center{
            width: 200px;
            height: 251px;
            float: left;
            border-left: 1px solid #ccc;
            border-right: 1px solid #ccc;
            overflow: hidden;
        }
        li{
            line-height: 27px;
            text-align: center;
            border: 1px solid #ccc;
        }
        .xuan{
            background-color: red;
        }
    </style>
</head>
<body>
<div id="box">
    <ul class="left">
        <li class="xuan"><a href="#">美食1</a></li>
        <li><a href="#">美食2</a></li>
        <li><a href="#">美食3</a></li>
        <li><a href="#">美食4</a></li>
        <li><a href="#">美食5</a></li>
        <li><a href="#">美食6</a></li>
        <li><a href="#">美食7</a></li>
        <li><a href="#">美食8</a></li>
        <li><a href="#">美食9</a></li>
    </ul>
    <ul class="center">
        <a href="#"><img src="image/img1.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img2.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img3.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img4.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img5.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img6.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img7.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img8.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img9.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img10.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img11.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img12.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img13.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img14.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img15.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img16.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img17.jpg" width="200" height="250"/></a>
        <a href="#"><img src="image/img18.jpg" width="200" height="250"/></a>
    </ul>
    <ul class="right">
        <li><a href="#">美食10</a></li>
        <li><a href="#">美食11</a></li>
        <li><a href="#">美食12</a></li>
        <li><a href="#">美食13</a></li>
        <li><a href="#">美食14</a></li>
        <li><a href="#">美食15</a></li>
        <li><a href="#">美食16</a></li>
        <li><a href="#">美食17</a></li>
        <li><a href="#">美食18</a></li>
    </ul>
</div>
<script>
    window.addEventListener('load',function (ev) {
        var allLi = document.getElementsByTagName('li');
        var allImg = document.getElementsByTagName('img');
        var loop = 0;//索引
        setInterval(function () {
            loop++;
            loop %= 18;//因为18一个循环
            for (var i = 0; i < allLi.length; i++){
                allLi[i].className = '';
                allImg[i].style.display = 'none';
            }
            //处理选中
            allLi[loop].className = 'xuan';
            allImg[loop].style.display = 'block';
        },1000)
    })
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值