雨亭原创,转载注明

执行效果:

一窗体实现的功能:

1.鼠标拖动.

2.八个方向的拉伸.

3.可定制窗口标题,内容(文本或HTML),初始大小和位置,最小宽度,高度.

4.支持滚动条.

5.关闭窗体.

6.最大化,最小化窗体.

7.记录最大,最小化之前的位置,可还原回去.

8.可创建多个window窗口.

二浏览器支持情况:

浏览器 版本

1.Chrome 18.0.1025.152 2.Safari 5.1.5 3.Firefox 11.0 4.Opera 11.62 5.IE6,IE7,IE8,IE9

css代码:

/*窗口样式

.winDiv {position: absolute;background-color:#FFFFFF;}

/*拖动样式

.winHead {position: absolute;top:0px;height:

20px;width:100%;background-color:#336699; cursor:

move;z-index:2;}

/*窗体标题

.winTitle{float:left;color:white;font-size:14px;}

/*关闭窗口

.winClose{float:right;cursor:default;width:14px;height:14px;padding-right:1px;}

/*最大化

.winMax{float:right;cursor:default;width:14px;height:14px;padding-right:1px;}

/*最小化

.winMin{float:right;cursor:default;width:14px;height:14px;padding-right:1px;}

.IE6Hack{height:0px;margin:0px;border:0px;padding:0px;width:100%;*height:20px;}

/*窗体内容

.winContent{position:

absolute;top:20px;bottom:0px;width:100%;color:#336699;

overflow:scroll;*top:0px;*height:100%;*bottom:0px;z-index:1;}

/*拉伸主样式

.resize {position: absolute;width: 2px;height: 2px;background:

#336699;}

/*左上

.resize-tl {top: -2px;left: -2px;cursor: nw-resize;

font-size:0}

/*中上

.resize-tm {top: -2px;width:100%;cursor: n-resize;

font-size:0}

/*右上

.resize-tr {top: -2px;right: -2px;cursor: ne-resize;

font-size:0}

/*中右

.resize-ml {top: 0px;height:100%;left: -2px;cursor: w-resize;

font-size:0}

/*中左

.resize-mr {top: 0px;height:100%;right: -2px;cursor: e-resize;

font-size:0}

/*下左

.resize-bl {bottom: -2px;left: -2px;cursor: sw-resize;

font-size:0}

/*下中

.resize-bm {bottom: -2px;left: 0px;width:100%;cursor: s-resize;

font-size:0}

/*下右

.resize-br {bottom: -2px;right: -2px;cursor: se-resize;

font-size:0}

html代码:

/p>

Strict//EN" "DTD/xhtml1-strict.dtd">

lang="en" xml:lang="en">

content="text/html; charset=gb2312" />

测试窗口

rel="stylesheet"

href="win.css">

var content1 = "1.鼠标拖动
"+

"2.八个方向的拉伸
"+

"3.可定制窗口标题,内容(文本或HTML),初始大小和位置,最小宽度,高度.
"+

"4.支持滚动条
"+

"5.关闭窗体
"+

"6.最大化,最小化窗体
"+

"7.记录最大,最小化之前的位置,可还原回去
"+

"8.可创建多个window窗口
";

var content2 =

"浏览器 版本

"+ "Chrome 18.0.1025.152

"+ "Safari 5.1.5

"+ "Firefox 11.0 
"+ "Opera 11.62

"+ "IE6,IE7,IE8,IE9 ";

var win1 = new DivWindow({ winTitle:

"窗体支持的功能", winContent:content1 ,initX: 180,

initY: 80, initW: 200, initH: 200 });

runWindow(win1);

var win2 = new DivWindow({ winTitle: "浏览器支持情况", winContent:content2 ,initX: 280, initY: 180, initW: 200, initH: 200

});

runWindow(win2);

javascript代码:

var curSelected = null

; /*当前操作窗口

var winNumber = 0 ;

/*倒数第二个创建的窗口的Id

var winList = new

Array(); /*窗口对象列表

var winIdList = new

Array(); /*窗口对象Id列表

var mouseX = 0, mouseY = 0

; /*当前鼠标位置

var lastMouseX = 0, lastMouseY = 0 ;/*上次鼠标位置

var zIndex = 2

; /*z轴坐标,因为CSS中最大z-index为2,所以这里设为2

/*注册事件兼容代码

function addEvent(o , t , f )

{

if(o.addEventListener)

o.addEventListener(t,f ,false);

if(o.attachEvent)

o.attachEvent("on"+t,f); }

/*将窗体对象地址和窗体Id进行关联,将新创建窗口添加进body中

function runWindow(win)

{ winList[winList.length] = win ;

winIdList[winIdList.length] = win.winDiv.id

;

/*将窗体加入到Body中

document.body.a(win.winDiv);

}

/*根据窗体Id获得窗体对象地址

function getWinById(id)

{

for(var w in winIdList )

{

if(id == winIdList[w])

return

winList[w] ;

}

}

/*根据窗体对象地址删除窗体Id和窗体对象地址

function delWin(win)

{

for(var w in winList)

{

if(win == winList[w])

{

winList[w] =

null ;

winIdList[w]

= null ;

return

;

}

}

}

/*窗体构造函数

function DivWindow(config)

{

var props =

{

winTitle:

"窗口1", /*窗体标题

winContent:

"hellojames!", /*窗体内容

initX:

50,

initY:50, /*保留初始位置,最大,最小化时使用

initW:

50,

initH:50, /*保留初始大小,最大,最小化时使用

minWidth:200,

minHeight:20, /*最小宽度,最小高度

history:true, /*是否保存前一个窗体位置大小信息

elmX:

50, elmY:

50, /*当前窗体位置

elmW:

50, elmH:

50, /*当前窗体大小

handles:

["tl","tm","tr","ml","mr","bl","bm","br"], /*拉伸窗体的8个方向

element:

null, /*窗体元素

handle:

null, /*当前要触发事件的元素只针对拖拽和拉伸

ie6Hack:

1 , /*针对IE6下拉伸上下拉伸窗口时布局混乱的解决办法,鼠标每移动一次就增加或减少窗体宽度1px

isIE6:

false /*是否是IE6

};

for (var p in props)

this[p] =

(typeof config[p] == "undefined") ? props[p] : config[p];

this.isIE6 =

document.all&&!window.XMLHttpRequest;

/*判断是否是IE6

/*给当前窗体的大小和位置初始化

this.elmX = this.initX ;

this.elmY = this.initY ;

this.elmW = this.initW ;

this.elmH = this.initH ;

/*创建窗体

var winDiv = document_createElement_x("div");

html最小化窗口,[转载]js实现窗口(支持拉伸,拖拽,最大化,最小化,滚动相关推荐

  1. 原生JS实现拖拽进度条、滚动鼠标显示相应的内容

    今天要分享的是运用原生JS实现拖拽进度条.滚动鼠标显示相应的内容,实现效果如下: 以下是代码实现,欢迎大家复制粘贴. <!DOCTYPE html> <html><hea ...

  2. 原生JS实现鼠标按下拖拽效果

    原生JS实现鼠标按下拖拽效果 <!DOCTYPE html> <html lang="en"><head><meta charset=&q ...

  3. html实现鼠标拖拽按钮,JS实现鼠标按下拖拽效果

    原生js实现鼠标按下拖拽效果,供大家参考,具体内容如下 鼠标拖动 body { margin: 0; } div { width: 200px; height: 200px; position: ab ...

  4. Qt 窗口的一些简单设置-标题、图标、最大化最小化按钮、任务栏图标

    一些很零散的窗体控制方法,在这总结一些. 1.更改窗体标题 this->setWindowTitle("窗体标题"); 窗体标题"就是更改的窗体标题 2.控制窗体大 ...

  5. js实现页面元素的拖拽

    平时在我们页面上,经常会悬浮着一些功能按钮,如帮助,联系客服等,按钮的显示比较简单,用定位悬浮在自己需要的位置上就行,比如下面的页面上我们展示一个帮助的按钮,用户点击后可以展示一些帮助的信息: 代码: ...

  6. 原生js实现QQ邮箱邮件拖拽删除功能

    步骤分析: 根据数据结构生成HTML结构 全选和单选功能的实现,以及当其为选中状态时它的父级的颜色变化的 点击删除,删除结构同时删除数据 给每一个li绑定mousedown,tip显示,并且定位在鼠标 ...

  7. 原生拖拽太拉跨了,纯JS自己手写一个拖拽效果,纵享丝滑

    前言 提到元素拖拽,通常都会先想到用 HTML5 的拖拽放置 (Drag 和 Drop) 来实现,它提供了一套完整的事件机制,看起来似乎是首选的解决方案,但实际却不是那么美好,主要是它的样式太过简陋, ...

  8. js实现进度条的拖拽

    目录 代码分析 搭建一个进度条 进度条的样式 js控制拖拽 js整体代码 代码分析 搭建一个进度条 html代码实现 <!-- 外部容器 --><div class="wr ...

  9. vue——js实现图片/文件的拖拽上传(复制粘贴就能用,还有优化空间)

    首先先创建元素容器 <template><div id="drop"><span v-show="isUpload" class= ...

最新文章

  1. Linux终端上如何将图像转换成 ASCII 艺术
  2. FPGA之道(77)静态时序分析(三)同步时序逻辑的分析原理
  3. 表单FORM的5个属性name,method,action,enctype,target
  4. 论文目录用word怎么自动生成或插入?
  5. error 4 in libc-2.12.so 解决办法
  6. 从零开始做一个SLG游戏(三):用unity绘制图形
  7. WF4.0 基础篇 (二十九) WorkflowInspectionServices
  8. Blend设计VSM
  9. ubuntu 系统U盘中 文件出现小锁子
  10. 2020年软考信息安全工程师考试学习资料包
  11. 学计算机好轻松,猎证全国计算机等级考试学习系统
  12. ChannelMergerNode
  13. java swing 字体设置_java如何改变Swing应用程序的默认字体/字号
  14. win2003server域控服务器安装及设置
  15. matlab数组从小到大排序,matlab数组排序
  16. 毕业论文如何设置页码连续编页,页眉奇偶页不同?
  17. CRM管理系统源码PHP开源系统源码
  18. 【硬核技术文】研发绩效,AI算法的完美舞台
  19. 想要制作出好看的软蜡笔画?来看这份JixiPix Pastello Pro操作指南!
  20. 开题报告的国内外研究现状怎么写呢?

热门文章

  1. R语言ggplot2可视化图像设置不同的字体实战
  2. dropout是什么?为什么dropout管用?测试集上是否需要使用dropout?说明为什么神经网络中的dropout可以作为正则化?
  3. 困惑度 (perplexity)
  4. Long-read sequencing for improved analysis
  5. 不用在读长和准确性之间做选择题,PacBio发表新方法
  6. mysql 联合索引长度_MySQL 中索引的长度的限制
  7. stm32使用flymcu烧写程序
  8. IEDA与activiti不兼容等等安装错误问题的解决方案
  9. 在Ubuntu16.04上安装CUDA
  10. Java报错解决:org.apache.http.ConnectionClosedException: Premature end of chunk coded message body: closi