`
lgx2351
  • 浏览: 175992 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

js常用功能-浮动层知识总结

阅读更多

应用开发时很经常地要生成浮动层,在 浮动层 里显示一些我们需要显示的内容。

生成浮动层主要分为两个部份。一个是外围的div,这个div主要是根据传入的参数值来设置它的属性,如它的left、top、width、height、opacity等值。另一个部份是div里放的一table,这个table有两行,第一行用在拖动和最大化最小化上;第二行是放置浮动层要显示的内容。

 

function drag(elementToDrag, event) {
    var startX = event.clientX, startY = event.clientY;
    var origX = elementToDrag.offsetLeft, origY = elementToDrag.offsetTop;
    var deltaX = startX - origX, deltaY = startY - origY;
    if (document.addEventListener) {  // DOM Level 2 event model
        document.addEventListener("mousemove", moveHandler, true);
        document.addEventListener("mouseup", upHandler, true);
    }
    else if (document.attachEvent) {  // IE 5+ Event Model
        elementToDrag.setCapture( );
        elementToDrag.attachEvent("onmousemove", moveHandler);
        elementToDrag.attachEvent("onmouseup", upHandler);
        elementToDrag.attachEvent("onlosecapture", upHandler);
    }
    else {  // IE 4 Event Model
        var oldmovehandler = document.onmousemove; // used by upHandler( )
        var olduphandler = document.onmouseup;
        document.onmousemove = moveHandler;
        document.onmouseup = upHandler;
    }

    if (event.stopPropagation) event.stopPropagation( );  // DOM Level 2
    else event.cancelBubble = true;                      // IE

    if (event.preventDefault) event.preventDefault( );   // DOM Level 2
    else event.returnValue = false;                     // IE

    function moveHandler(e) {
        if (!e) e = window.event;  // IE Event Model
        elementToDrag.style.left = (e.clientX - deltaX) + "px";
        elementToDrag.style.top = (e.clientY - deltaY) + "px";
        if (e.stopPropagation) e.stopPropagation( );  // DOM Level 2
        else e.cancelBubble = true;                  // IE
    }
    function upHandler(e) {
        if (!e) e = window.event;  // IE Event Model

        if (document.removeEventListener) {  // DOM event model
            document.removeEventListener("mouseup", upHandler, true);
            document.removeEventListener("mousemove", moveHandler, true);
        }
        else if (document.detachEvent) {  // IE 5+ Event Model
            elementToDrag.detachEvent("onlosecapture", upHandler);
            elementToDrag.detachEvent("onmouseup", upHandler);
            elementToDrag.detachEvent("onmousemove", moveHandler);
            elementToDrag.releaseCapture( );
        }
        else {  // IE 4 Event Model
            document.onmouseup = olduphandler;
            document.onmousemove = oldmovehandler;
        }

        if (e.stopPropagation) e.stopPropagation( );  // DOM Level 2
        else e.cancelBubble = true;                  // IE
    }
}

function minimize(floatLayerId,event){
	if (event.stopPropagation) event.stopPropagation( );  // DOM Level 2
    else event.cancelBubble = true;                      // IE

    if (event.preventDefault) event.preventDefault( );   // DOM Level 2
    else event.returnValue = false;                     // IE
	
	var o = document.getElementById(floatLayerId+"TD");
	var eventElement = event.srcElement || event.target;
	if(o.style.display != 'none'){
		o.style.display = 'none';
		eventElement.src = "/ags_web/css/img/bullet_arrow_down.png";
		document.getElementById(floatLayerId+"DIV").style.height = "7px";
	}else{
		o.style.display = '';
		eventElement.src = "/ags_web/css/img/bullet_arrow_up.png";
	}
}

function EngenderDriftLyr(){}
EngenderDriftLyr.prototype = {
	genDriftDiv:function(driftDivId,driftDivPro){
		var dirftDiv = document.createElement("div");
		dirftDiv.id = driftDivId;
		dirftDiv.className = "float-div";
		dirftDiv.style.position = "absolute";
		dirftDiv.style.left = driftDivPro.left||"0px";
		dirftDiv.style.top = driftDivPro.top||"0px";
		dirftDiv.style.width = driftDivPro.width||"200px";
		dirftDiv.style.height = driftDivPro.height||"100px";
		if(driftDivPro.opacity){
			dirftDiv.style.opacity = driftDivPro.opacity;
			dirftDiv.style.filter = 'alpha(opacity=' + parseInt(parseFloat(driftDivPro.opacity)*100) + ')';
		}
		dirftDiv.style.borderColor = driftDivPro.borderColor||"#6495ED";
		dirftDiv.style.zIndex = "1000";
		dirftDiv.style.display = 'none';
		trColor = driftDivPro.trColor||"#6495ED";
		return dirftDiv;
	},
	genDriftContent:function(title,floatLayerId,tableAttr){
		var result = "";
		floatDivId = floatLayerId + "DIV";
		contDivId = floatLayerId + "TD"; 
		titleTdId = floatLayerId + "_TITLETD";
		result =	'<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">'
			+ '<tr class="float-div-cnt-tr" ' + (tableAttr.color?'style="background-color:' + tableAttr.color + '"':"") + '>'
				+'<td id="' + titleTdId + '"height="20" width="100%" style="color:#FFFFFF;cursor:hand;padding-left:5px;"'
					+	'onmousedown=\"drag(document.getElementById(\'' + floatDivId + '\'),event);\">' + title + '</td>'
				+'<td width="15" style="color:#FFFFFF;cursor:hand" onclick="minimize(\'' + floatLayerId + '\',event)"><img src="/ags_web/css/img/bullet_arrow_up.png" style="cursor:hand" /></td>'
				+'<td width="15" style="color:#FFFFFF;cursor:hand" onclick="document.getElementById(\'' + floatDivId + '\').style.display=\'none\'"><img src="/ags_web/css/img/cancel.png" style="cursor:hand" /></td>'
			+'</tr>'
			+'<tr><td colspan="3" valign="top">'
			+'		<div id="' + contDivId + '" class="float-div-cnt" style="height:' + (tableAttr.height?tableAttr.height:'') + 'px;"></div>'
			+' </td></tr>'
			+'</table>';
		return result;
	},
	genDriftLyr:function(LyrTitle,driftLyrId,driftLyrPro){
		document.body.appendChild(this.genDriftDiv(driftLyrId+"DIV",driftLyrPro));
		document.getElementById(driftLyrId+"DIV").innerHTML = this.genDriftContent(LyrTitle,driftLyrId,driftLyrPro);
	}
}

var engenderDriftLyr = new EngenderDriftLyr();

 其中,css代码为:

.float-div{
	left: 40px;
	width: 250px;
	position:absolute;
	opacity: 0.7;
	filter: alpha(opacity=70);
	padding:2px;
	border-width: 1px;
	border-style: solid;
	border-color: #AA2DCF;
	background-color:#FFFFFF;
}
 

 

大概的代码就如上面所写的,只要思路对了,就没有问题了。

在使用上,我们发一个请求把返回的值设置为table内容的innerHTML,然后设置生成的浮动div为可见的就可以了。

 

以上代码要注意的地方如下:
1.以上我们先 createElement 一个 DIV 元素,然后设置它的一些如 id 、 className 、 left 、 top 、 height 、 width 、 opacity 、 borderColor 等属性。且这种写法常与 appendChild 一起使用,把生成的元素加载到另一个元素中。
2.floatdiv.style.left = floatLyrPro.left|| "0px" 与floatdiv.style.left=floatLyrPro.left?floatLyrPro.left:"0px";的写法是一样的,我们常用第二种方式的写法,这在当传入的参数为对象时,用于判断对象的属性是否存在的处理很常用。
3.注意什么时候是传 floatdiv ,什么时候是传 floatdiv.id 如:
document.getElementById(\''+floatdiv.id+'\')
这里显然不能传 floatdiv ,因为 floatdiv 是一个 obj ,如果外面再嵌一个 document.getElementById 就有问题了,这时候应该传的是 floatdiv.id ,这点容易写错。

分享到:
评论

相关推荐

    js浮动客服.zip

    JavaScript 浮动客服系统是一种常见的网站交互功能,它允许用户在浏览网页时随时与客服人员进行沟通,提高用户体验和客户服务效率。在这个“js浮动客服.zip”压缩包中,我们可以找到实现这种功能的相关代码和资源。...

    web前端开发基础知识总结

    ### Web前端开发基础知识总结 #### 一、HTML(HyperText Markup Language)基础知识 **1.1 HTML概述** HTML,即超文本标记语言,是用于创建网页的标准标记语言。它通过一系列预定义的元素来描述文档的结构和内容...

    JavaScript弹出层

    总结,JavaScript弹出层是网页交互设计中的重要组成部分,通过JavaScript和CSS的结合,可以创建功能丰富、用户体验良好的弹出层。理解并熟练掌握这些知识点,将有助于提升网页的交互性和专业性。

    JavaScript CSS Style属性对照表

    本文将详细介绍JavaScript CSS Style属性对照表的相关知识点,包括常用的CSS属性及其对应的JavaScript写法,并通过实例进行讲解。 #### 二、JavaScript操作CSS Style属性的基础 在JavaScript中,可以通过`element....

    纯js版的FF14官网的蓝色碎片浮动动态效果

    总结来说,实现“纯js版的FF14官网的蓝色碎片浮动动态效果”需要综合运用JavaScript的核心概念、DOM操作、动画原理以及现代Web开发的最佳实践。通过这样的项目,开发者不仅可以提升JavaScript技能,还能深入理解Web...

    前端知识点总结

    ### 前端知识点总结 #### 一、命名规范 前端开发中良好的命名规范对于代码的可读性和维护性至关重要。 - **HTML的命名**:遵循语义化原则,使用有意义的标签,如`&lt;article&gt;`、`&lt;section&gt;`等。 - **Class的命名**...

    html、css、 javaScript面试技巧... 知识来源于互联网,只做归纳总结.zip

    在准备HTML、CSS和JavaScript的面试时,理解并掌握这些技术的基础知识以及它们在实际项目中的应用至关重要。面试官通常会考察候选人的理论知识、实践经验、问题解决能力以及对最新技术趋势的了解。以下是一些关键...

    jquery弹出层插件.zip

    1. 插件概念:jQuery插件是基于jQuery库的扩展代码,它封装了一些常用功能,方便开发者快速实现特定效果。弹出层插件即为用于创建各种弹出窗口的工具。 2. 功能特性:常见的jQuery弹出层插件具备以下特点: - 易用...

    web前端开发知识点总结.docx编程资料

    #### 一、HTML知识总结 **1.1 HTML基础** - **HTML概述**:HTML(Hyper Text Markup Language)是用于创建网页的标准标记语言。 - **HTML文档结构**: - `&lt;!DOCTYPE html&gt;`:声明文档类型为HTML5。 - `&lt;html&gt;`:...

    浮动的菜单

    下面将详细介绍浮动菜单的实现方式、设计原则以及相关的技术知识。 一、浮动菜单的实现原理 1. CSS定位:浮动菜单主要依赖于CSS(层叠样式表)的定位属性来实现。常用的定位属性有`position: fixed`,这可以使元素...

    visual_studio_c__网页制作完全手册

    ### Visual Studio C# 网页制作完全手册关键知识点总结 #### 一、系统特点与功能概述 **1. 新闻网站管理系统** - **特点**: - 实用性强,适用于构建新闻内容为主的网站。 - 灵活的页面布局与版块设置。 - ...

    前端基础知识PPT

    ### 前端基础知识概述 本篇文档基于一份内部培训使用的PPT,旨在全面系统地介绍前端开发的基础知识。...以上是对前端基础知识的一个概括性总结,通过理解和掌握这些基本概念和技术,可以更好地进行前端开发工作。

    HTML代码/CSS/javascripr教程.docx

    ### HTML代码/CSS/JavaScript教程知识点总结 #### 一、HTML基础 - **HTML概述**: - HTML(HyperText Markup Language),即超文本标记语言,是一种用于创建网页的标准标记语言。 - HTML文档是由一系列的元素...

    10种漂亮的JS广告

    在本文中,我们将探讨标题中提到的“10种漂亮的JS广告”所涉及的关键知识点,这些广告可能利用了JavaScript的动态特性来提升用户体验和视觉效果。 1. 动态加载:JS广告通常使用异步加载技术,这使得广告能够在不...

    web前端期末大作业——基于HTML+CSS+JavaScript蓝色的远程监控设备系统后台管理界面模板

    ### 知识点总结 #### 一、项目概述 该项目主要是一个面向学生的期末大作业案例,涉及使用HTML、CSS和JavaScript构建一个蓝色调的远程监控设备系统后台管理界面模板。此项目的目的是帮助学生掌握基本的网页设计技能...

    常用的网页漂浮图片广告代码

    在"floatingAd.js"这个JavaScript文件中,我们将编写实现漂浮广告功能的代码。以下是一段简单的示例: ```javascript var ad = document.getElementById('floatingAd'); var initialPos = { top: 50, left: 200 }; ...

    韩顺平轻松搞定网页设计(html.css.js)(完整版)

    JavaScript则用于添加交互功能。掌握这些技术可以帮助开发者制作出既美观又实用的网页。此外,了解W3C标准对于确保网页兼容性和可维护性非常重要。通过实践项目,不断积累经验,可以进一步提升网页设计的能力。

    iPlatUI 前台开发指南

    - **jQuery与Underscore常用API整理**:总结常用的库函数使用技巧。 - **JS中字符串转数字运算规则**:掌握三种字符串转数字的方法,包括转换函数、强制类型转换及利用变量弱类型转换。 - **转换函数**:如...

    python面试宝典

    - 一个快速、小巧、功能丰富的JavaScript库。 5. vue.js - 一个轻量级的JavaScript框架,用于构建用户界面。 【Web开发】 1. Flask - 一个轻量级的Python Web框架。 2. Django - 高级的Python Web框架。 3....

    前端开发基础:HTML+CSS

    - **清除浮动**:确保元素不受浮动元素的影响,避免布局错乱。 #### 响应式设计 - **媒体查询**:根据不同的屏幕尺寸应用不同的样式。 - **视口单位**:使用`vw`、`vh`单位适应屏幕尺寸。 #### 总结 通过本文档...

Global site tag (gtag.js) - Google Analytics