简易拖动窗口-面向对象封装
来源:互联网 发布:沈阳办公软件培训班 编辑:程序博客网 时间:2024/04/27 13:39
HTML
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>0305_拖动窗口</title> <link rel="stylesheet" type="text/css" href="css/drag.css" /> <style> body{background: #FCFDED;} .divClass{ width:200px;height: 300px;background: #41C9C5; border-radius: 15px;overflow: hidden; position: absolute; } .titleClass{ width:95%;height: 20px;background: #36ADAA; margin:5px auto;border-radius: 15px;cursor: pointer; } .titleClass:hover{ background: #42D1CE; } </style> </head> <body> <div id="startBtn">按钮</div> </body></html>
JS
;(function(win){ var divConfig = { 'class':'divClass', 'id':'divId' } var titleConfig = { 'class':'titleClass', 'id':'titleId' } //创建一个构造函数 function Drag(){ this.getId = function(n){ return document.getElementById(n); } } //在构造函数的原型链上定义一些方法 Drag.prototype = { init: function(){ var _self = this; _self.getId('startBtn').onclick = function(){ _self.event(); } }, event: function(){ var _self = this; //外面的div var _div = _self.createDom('div'); _self.setAttr(_div, divConfig); _self.appendTo(document.body, _div); //title div var _title = _self.createDom('div'); _self.setAttr(_title, titleConfig); _title.onmousedown = function(e){ _self.mouseMove(); } _self.appendTo(_self.getId(divConfig.id), _title); }, appendTo: function(parent, sub){ var _self = this; parent.appendChild(sub); }, createDom:function(n){ var _self = this; //判断该元素存不存在 var _elem = _self.getId(n); if (!_elem) { return document.createElement(n); }else{ return _elem; } }, setAttr: function(n, o){ var _self = this; for(var i in o){ n.setAttribute(i, o[i]); } }, mouseMove: function(){ var _self = this; document.onmousemove = function(e){ //clientX 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标 var x = e.clientX; var y = e.clientY; _self.getId(divConfig.id).style.left = x - 100 + 'px'; _self.getId(divConfig.id).style.top = y -10 + 'px'; } document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; } } } //将对象挂在win参数上,实际是挂在了webfeel的命名空间下面, //这样后面其实会造成链式调用很长 win.drag = new Drag();})(window.webfeel = window.webfeel || {});//添加webfeel命名空间,并先判断是否存在,如果不存在就定义为一个空对象//调用webfeel.drag.init();
当然JS要放在之前。
效果没什么好展示的,主要还是看下里面对象的封装吧,先定义构造函数,再在原型上定义一些方法,最后通过new操作符创建一个对象实例并调用他。
0 0
- 简易拖动窗口-面向对象封装
- 3.1 面向对象的窗口类的封装
- 对象在窗口间拖动
- 面向对象----抽象----封装
- 面向对象中的封装
- 面向对象之封装
- 面向对象,封装,静态
- 面向对象之封装
- 面向对象之封装
- 面向对象--封装
- 面向对象之封装
- javascript 面向对象 封装
- 面向对象--封装
- 面向对象 封装
- java 面向对象----封装
- 11 面向对象 封装
- 封装(面向对象)
- 面向对象概述+封装
- UVALive 4048 Fund Management(状压DP)
- 什么是词云呢?10 行 Python 代码的词云
- Flask入门:sqlite3 + psutil + echarts 监测CPU使用率
- sdutacm-树-堆结构练习——合并果子之哈夫曼树
- Phabricator安装与配置
- 简易拖动窗口-面向对象封装
- error: #5: cannot open source input file "core_cm4.h": No such file or directory
- Android Studio 使用SVN的详细讲解
- VMware tool安装遇“正在进行简易安装时,无法手动启动VMware tools安装”问题的解决方案
- C#简单异步例子
- Java中多态的方法调用顺序问题
- sdutacm-字典树
- 50. Pow(x, n)
- 深入浅出Redis-Spring整合Redis