原生js (面向对象版) --- 小羊肖恩动画(可拖拽)

在这里插入图片描述
这个案例,js部分分两个大块:
1:创建小羊
2: 小羊运动
其中小羊运动部分分3块:
1)小羊在初始位置运动起来
2)小羊在从屏幕右边,运动到屏幕左边
3) 小羊拖拽到屏幕的任意地方,拖拽时小羊停止运动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html,body {
            width: 100%;
            height: 100%;
        }
        .stage {
            width: 100%;
            height: 100%;
            background-color:  #4a96ee;
            position: relative;
        }
        .sheep {
            position: absolute;
            right:-164px;
            bottom: 0;
            width: 164px;
            height: 122px;
            background: url("img/sheep.png") no-repeat ;
            background-position: (0,0);
            cursor: grabbing;
        }
    </style>
</head>
<body>
    <div class="stage" id="_stage">
        <!-- <div class="sheep"></div> -->
    </div>
</body>
</html>
<script>
    // 创建小羊对象
    var sheeps = {
        comproperty: {
            frequency: 70,//频率
            speed: 10,// 速度
            maxSheeps : 8,// 屏幕上最大羊的指数
            runNum: 0,
            stage: document.getElementById('_stage')
        },
        init: function () {// 初始化函数
            this.createSheep();
        },
        createSheep: function() {// 创建小羊
            function SheepClass(data) { // 构造函数
                this.sheep = document.createElement("div");// 属性sheep是div
                this.sheep.className = "sheep";
                this.sheep.stage = data.stage;
                this.sheep.speed = data.speed;
                this.sheep.currentSpeed = data.speed;
                this.runNum = data.runNum;
                this.imgTop = 0; /* 背景图片top定位的初始位置*/
                this.sheep.frequency = Math.floor(Math.random()*data.frequency + 30);//速率是随机的
                data.stage.appendChild(this.sheep);
            }
            var that = this;// that 保存sheeps这个对象
            var timer = setInterval(function(){
                if(that.comproperty.stage.children.length < 8)// 舞台上的小羊数小于8只就创建小羊
                {
                    var sheepPlus = new SheepClass(that.comproperty); //创建小羊对象
                    that.sheepRunning(sheepPlus);// 小羊运动
                }
            
            },1000);
            
        },
        sheepRunning: function(sheepPlus){ // 小羊运动
            /*
                运动分两部分 
                1:小羊运动起来
                2:小羊跑起来
            */
            sheepPlus.timer = setInterval(function(){
                sheepPlus.runNum += 164;
                if(sheepPlus.runNum >= 1312)
                {
                    sheepPlus.runNum = 0;
                }
                // 小羊运动
                sheepPlus.sheep.style.backgroundPosition = -sheepPlus.runNum + 'px '+ sheepPlus.imgTop + 'px';
                // 小羊跑起来
                sheepPlus.sheep.style.left = sheepPlus.sheep.offsetLeft - sheepPlus.sheep.speed + 'px';
                if(sheepPlus.sheep.offsetLeft < -164)
                {
                    clearInterval(sheepPlus.timer);
                    sheepPlus.sheep.stage.removeChild(sheepPlus.sheep);
                }
           
            },sheepPlus.sheep.frequency);// 频率随机

            // 小羊拖拽
            sheepPlus.sheep.onmousedown = function(event){
                var event = event || window.event;
                var clientX = event.clientX;
                var clientY = event.clientY;
                sheepPlus.imgTop = -128;
                this.speed = 0;
                sheepPlus.sheep.style.backgroundPosition =  -sheepPlus.runNum + 'px ' + sheepPlus.imgTop + 'px';       
            document.onmousemove = function(event){
                var event = event || window.event;
                var moveClientX = event.clientX;
                var moveClientY = event.clientY;
                sheepPlus.sheep.style.left = moveClientX - clientX + sheepPlus.sheep.offsetLeft + 'px';
                sheepPlus.sheep.style.top = moveClientY - clientY + sheepPlus.sheep.offsetTop + 'px';
                clientX = moveClientX;// 更新坐标
                clientY = moveClientY;// 更新坐标
            }
            document.onmouseup = function(){
                document.onmousemove = null;
                sheepPlus.sheep.speed = sheepPlus.sheep.currentSpeed;//速度还原
                sheepPlus.imgTop = 0;// 图片的top定位复原
            }
            }
}
}
sheeps.init();
</script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
原生的JavaScript中,我们可以通过以下步骤来添加el-button: 1. 首先,获取一个父元素的引用,该父元素将包含el-button。可以通过getElementById()、querySelector()等方法获取到父元素的引用。 2. 使用document.createElement()方法创建一个新的按钮元素。这个方法将会创建一个具有指定标签名的元素节点,并返回对该节点的引用。在这种情况下,我们需要创建一个<button>元素。 3. 为新创建的按钮元素设置class或id,以便能够样式化或定位它。例如,可以使用element.className或element.id属性为按钮元素设置class或id。 4. 创建一个文本节点,将按钮的文本设置为所需的文本内容。使用document.createTextNode()方法创建一个新的文本节点,并使用element.appendChild()方法将其添加到按钮元素中。 5. 将新创建的按钮元素添加到父元素中,这样它将显示在父元素中。使用父元素的appendChild()方法将按钮元素作为子节点添加到父元素中。 以下是一个示例代码,演示了如何使用原生JavaScript添加el-button: ```javascript // 获取父元素的引用 var parentElement = document.getElementById("parent"); // 创建一个新的按钮元素 var buttonElement = document.createElement("button"); // 为按钮元素设置class或id buttonElement.className = "el-button"; buttonElement.id = "button"; // 创建一个文本节点,并将文本设置为按钮的内容 var buttonText = document.createTextNode("点击我"); buttonElement.appendChild(buttonText); // 将按钮元素添加到父元素中 parentElement.appendChild(buttonElement); ``` 通过按照上述步骤,我们可以使用原生JavaScript向父元素中添加一个el-button。请注意,上述代码仅为示例,并假设已经有一个`id`为`parent`的父元素存在。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值