js 使用面向对象 写鼠标拖动效果 并储存于本地存储。

之前写过鼠标拖动视觉效果。但并未使用面向对象来书写。页面刷新后,无法保存在上次鼠标抬起的位置。这次补充这一效果。

依然使用DIV加入样式来模拟。

<style>
      #box{width: 100px;height: 100px;background: red;position: absolute;left: 0;top:0;}
 </style>
<body>
    <div id="box"></div>
</body>
<script>
    class Drag{
        constructor(){
            // 引入元素。
            this.box = document.getElementById("box");
        }
        addEvent(){
            // 事件绑定。
            var that = this;
            // 鼠标按下。
            this.box.onmousedown = function(eve){
                var downE = eve || window.event;
                // 鼠标移动。
                document.onmousemove = function(eve){
                    var moveE = eve || window.event;
                    that.move(downE, moveE);
                }
                // 鼠标抬起。
                document.onmouseup = function(){
                    that.up();
                }
            }
        }
        // 按下鼠标移动时获取坐标值。
        move(d,m){
            this.box.style.left = m.pageX - d.offsetX + "px";
            this.box.style.top = m.pageY - d.offsetY + "px";
        }
        // 鼠标抬起时,Gong元素。瞬间获得。抬起时的鼠标坐标。并保持在抬起位置。
        up(){
            document.onmousemove = null;
            var pos = {
                x:this.box.offsetLeft,
                y:this.box.offsetTop
            }
            // 将抬起时的位置。储存在本地存储中。下次打开页面还在上次抬起的位置。
            localStorage.setItem("weiZhi",JSON.stringify(pos));
        }
        // 本地存储坐标。
        getPos(){
            var p = localStorage.getItem("weiZhi")
            if(p){
                p = JSON.parse(p);
            }else{
                p = {x:0,y:0}
            }
            this.box.style.left = p.x + "px";
            this.box.style.top = p.y + "px";
        }
    }
    var d = new Drag();
    d.getPos()
    d.addEvent();
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值