3. 窗口效果
window.html
<html>
<head>
<title>窗口效果</title>
<meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8”>
<link type=”text/css” rel=”stylesheet” href=”css/window.css” />
<script type=”text/javascript” src=”js/jquery.js”></script>
<script type=”text/javascript” src=”js/ window.js”></script>
</head>
<body>
<input type="button" value="左下角显示窗口" id="leftpop" />
<input type="button" value="屏幕中间显示窗口" id="centerpop" />
<div class="window">
<div class="title" id="center">
<img alt="关闭" src="images/close.gif" />
我是中间显示窗口的标题栏
</div>
<div class="content">
我是中间显示窗口的内容区
</div>
</div>
<div class="window" id="left">
<div class="title">
<img alt="关闭" src="image/close.gif" />
我是左边显示窗口的标题栏
</div>
<div class="content">
我是左边显示窗口的内容区
</div>
</div>
<div class="window" id="right">
<div class="title">
<img alt="关闭" src="image/close.gif" />
我是右边显示窗口的标题栏
</div>
<div class="content">
我是右边显示窗口的内容区
</div>
</div>
</body>
</html>
window.css
.window {
background-color: #D0DEF0;
width: 250px;
/*padding: 2px;*/
margin: 5px;
position: absolute; /*控制窗口绝对定位*/
display:none;
}
.content {
height: 150px;
background-color: white;
border: 2px solid #D0DEF0;
padding: 2px;
overflow: auto; /*可显示滚动条*/
}
.title {
padding:4px;
font-size: 14px;
}
.title img {
width: 16px;
height: 16px;
float: right;
cursor: pointer;
}
window.js
$(document).ready(function() {
//1. 点击按钮可以在屏幕中间显示一个窗口
//2. 点击按钮2可以在屏幕的左下角显示一个窗口
var contentwin = $("#center").mywin({left: "center", top: "center"});
var leftwin = $("#left").mywin({left: "left", top: "bottom"}, function() {
leftwin.slideUp("slow");
} );
$("#contentpop").click(function(){
//鼠标点击按钮之后,把id为center的窗口显示在页面中间
//计算位于屏幕中间的窗口的左边界和上边界的值
// 浏览器可视区域的宽和高,当前窗口的宽和高
contentwin.show("slow");
});
$("#leftpop").click(function() {
leftwin.slideDown("slow");
}
});
//position包含两个属性,一个是left,一个是top
//hidefunc表示执行窗口隐藏的方法
$.fn.mywin = function(position, hidefunc) {
if(position && position instanceof Object) {
var positionleft = position.left;
var positiontop = position.top;
var windowobj = $(window);
var browserwidth = $(window).width();
var browserheight = $(window).height();
var scrollLeft = $(window).scrollLeft();
var scrollTop = $(windwo).scrollTop();
var currentwin = this;
var cwinwidth = currentwin.outerWidth(true);
var cwinheight = currentwin.outerHeight(true);
var left;
var top;
function calLeft(positionleft,scrollLeft,browsewidth,cwinwidth){
if(positionleft && typeof positionleft == "string") {
if(positionleft == "center") {
left = scrollLeft + (browserwidth – cwinwidth) /2;
}else if (positionleft == "left") {
left = scrollLeft;
}else if (positionleft == "right") {
left = scrollLeft + browserwidth – cwinwidth;
}else {
left = scrollLeft + (browserwidth – cwinwidth) /2;
}
}else if(positionleft && typeof positionleft == "number" ) {
left = positionleft;
}else {
left = 0;
}
currentwin.data("positionleft",positionleft);
}
calLeft(positionleft,scrollLeft,browsewidth,cwinwidth)
function calTop(positiontop,scrollTop,browseheight,cwinwidthheight) {
if(positiontop && typeof positiontop == "string") {
if(positiontop == "center") {
top =scrollTop + (browserheight – cwinheight) / 2;
}else if (positiontop == "top") {
top = scrollTop;
}else if (positiontop == "bottom") {
top = scrollTop + browseheight – cwinheight;
}else {
top =scrollTop + (browserheight – cwinheight) / 2;
}
} else if(positionleft && typeof positiontop == "number" ) {
top = positionleft;
}else {
top = 0;
}
currentwin.data("positiontop",positiontop);
}
calTop(positiontop,scrollTop,browseheight,cwinwidthheight);
var scrollTimeout;
$(window).scroll(function() {
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(function() { //延时处理
var browserwidth = $(window).width();
var browserheight = $(window).height();
var scrollLeft = $(window).scrollLeft();
var scrollTop = $(windwo).scrollTop();
calLeft(currentwin.data("positionleft"),scrollLeft,browsewidth,cwinwidth);
calTp[(currentwin.data("positiontop"),scrollLeft,browsheight,cwinheight);
currentwin.animate({
left: left,
top: top;
},300);
},300);
});
$(window).resize(function(){
var browserwidth = $(window).width();
var browserheight = $(window).height();
var scrollLeft = $(window).scrollLeft();
var scrollTop = $(windwo).scrollTop();
calLeft(currentwin.data("positionleft"),scrollLeft,browsewidth,cwinwidth);
calTp[(currentwin.data("positiontop"),scrollLeft,browsheight,cwinheight);
currentwin.animate({
left: left,
top: top;
},300);
});
currentwin.css("left",left).css("top",top);
currentwin.children(".title").children("img").click(function(){
if(!hidefunc) {
currentwin.hide("slow");
}else {
hidefunc();
}
});
return currentwin; //返回当前对象,以便可以级联的执行其他方法
}
}
知识宝典
1. 页面中模拟的窗口可以通过html的div标签来实现,窗口中的标题栏和内容区域可以再分别用一个div来表示
2. 让一组div看起来是窗口的样式,有很多种方法,比如可以设定整个窗口使用一种背景色,然后内容区域使用另一种背景色,并且给窗口一定的padding值(或者是内容区域设置边框),以达到内容区域和标题栏以后窗口外边的对比,从而看起来是窗口的效果
3. 正确理解float的效果,实际上会影响到后面的一个元素和float的元素之间的显示效果
4. overflow属性值为auto时,当内容区域很多超过了定义的高度或宽度时,就会显示滚动条
5. position属性值为absolute是,元素将在页面中绝对定位。如果祖先节点中有position:relative的定义,则相对于这个祖先节点的左上角进行定位
6. 浏览器可视区域的宽和高可以通过$(window).width() 和$(window).height()的方式获得
7. 浏览器滚动条的左边界和上边界可以通过$(window).scrollLeft()和$(window).scrollTop()来获得
8. 窗口定位到屏幕可视区域的正中间,需要用屏幕可视区域的宽减去窗口的宽,然后除2,在加上滚动条的左边界值,才能获得窗口需要的左边界值;上边界值也是同理的方法获得。
9. 插件的编写方法:$.fn.muplugin = function(){}, 方法中的this表示的是执行这个方法的jquery对象,注意方法应该在最后return this, 一保证其他jquery方法可以级联操作
10. instanceof可以用于判断一个变量是不是某个Js类的实例,比如判断是不是一个Object, 用法obj instanceof Obj
11. typeof可以用于判断一个变量的数据类型,比如typeof str == “string”
12. height()和width()方法获得的是元素本身的高和宽,innerHeight()和innerWidth()获得的是包括了padding的高和宽,outerHeight()和outerWidth()获得是包括了border和padding的高和宽,outerHeight(true)和outerWidth(true)获得是包括margin,border和padding的高和宽
13. scroll可以用于注册浏览器或某一节点的滚动条滚动所需要执行的操作
14. resize可以用于注册浏览器大小改变时所需要执行的操作
15. jquery提供的事件操作在注册的时候是增量的,比如有两段代码都是$(window).scroll(function(){}),第二段的function内容不会覆盖到第一段,而是在scroll时,两段代码都被执行
16. animate方法可以对left,top值进行一定时间内的变化,达到动画效果
17. dequene方法可以从动画队列的开头移除一个动画效果,并立即执行它。这样可以保证队列后面的动画不用等待开头的动画,也能执行。
18. is方法可以用来判断一个对象是否满足is方法参数中jquery选择器
19. :visible选择器可以用于获取页面中的可见元素
20. 浏览器间的差异导致在document.ready中的代码获得浏览器可视区域宽高已经滚动条left,top的值不一定都是正确的,因此我们需要保证在这个方法完成之后再来获得这些值。
21. $.browser可以用于判断浏览器的类型,判断方法可以是$.browser.msie == true, 可以使用的是包括$.browser.opera、$.browser.safari、$.browser.mozilla
22. $.browser.version可以判断浏览器的版本号,例如$.browser.version.indexOf(“8”)
分享到:
相关推荐
"jQuery实战:窗口效果"这个主题主要关注如何利用jQuery来实现各种窗口(Window)相关的动态效果,这包括但不限于弹出框、滑动面板、模态对话框等。下面将详细介绍jQuery在实现这些效果时的关键知识点。 1. **选择...
几个jquery的使用案例 JQuery实战第一讲:概述、环境准备及入门实例 JQuery实战第二讲:可以编辑的表格 JQuery实战第三讲:横向纵向菜单 JQuery实战第四讲:标签页效果 ...JQuery实战第六讲:窗口效果
《jQuery EasyUI 全面解析与实战应用》 jQuery EasyUI 是一款基于 jQuery 的前端框架,它提供了一系列的预定义的 CSS 样式和 JavaScript 插件,使得开发者能够快速构建用户界面,大大提升了开发效率。这个“jquery-...
《JQuery实战》视频教程源码及PPT是一套针对前端开发者精心编排的课程资源,旨在深入浅出地教授如何高效使用JQuery这一强大的JavaScript库。本教程通过丰富的实例和PPT讲解,帮助学习者从基础到进阶,全面掌握JQuery...
- "JQuery实战第六讲:窗口效果":这节课将涉及窗口弹出、拖动、缩放等高级效果,提升网页的交互性和用户体验。 6. **其他辅助资料** - "www.heyjava.com.url":可能是一个链接,指向更多jQuery相关资源或示例,...
`jquery1.7.2中文API修正版.chm` 提供了关于jQuery 1.7.2版本的中文文档,包括选择器、DOM操作、事件处理、效果和Ajax等内容,是理解jQuery操作网页元素的关键。 **jQuery EasyUI框架** jQuery EasyUI 将jQuery的...
在"jquery-easyui-1.8"的样例中,你会看到这些组件的实战应用,通过它们你可以学习如何在实际项目中集成和配置 EasyUI。此外,EasyUI 还提供了丰富的 API 和插件系统,允许开发者扩展和定制功能,以满足特定需求。 ...
“JQuery实战第六讲:窗口效果”专注于窗口动画和行为,如弹窗、滑动面板等。通过jQuery的动画API,可以轻松创建复杂的视觉效果,提升用户体验。 **第六部分:菜单系统** 最后,在“JQuery实战第三讲:横向纵向菜单...
JQuery实战第一讲:概述、环境准备及入门实例JQuery实战第二讲:可以编辑的表格JQuery实战第三讲:横向纵向菜单JQuery实战第四讲:标签页效果JQuery实战第五讲:级联下拉框效果JQuery实战第六讲:窗口效果 ...
6. **JQuery实战第六讲:窗口效果**:这部分可能涵盖各种窗口效果,如模态对话框、滑动面板或弹出窗口的创建。JQuery的动画函数和插件在这里起到关键作用,使窗口打开、关闭或移动时有良好的用户体验。 7. **JQuery...
3. **Dialog(对话框)**:弹出式窗口,常用于显示信息、确认操作等。 4. **Menu(菜单)**:创建下拉或级联菜单,提供导航和操作选项。 5. **Button(按钮)**:提供各种形式的按钮,如普通按钮、链接按钮、提交...
2. 对话框(Dialog):演示了如何创建弹出窗口,实现信息提示、表单编辑等场景。 3. 下拉菜单(Combobox):提供了联动下拉、远程加载数据等高级用法,帮助开发者实现复杂的输入控制。 4. 树形控件(Tree):包括...
这个“jQuery实战放大镜效果实现演示”的代码示例是一个基础版本,你可以在此基础上添加更多功能,如动态加载高分辨率图片、添加滑动条控制放大比例等。总之,理解这个实现过程将有助于你更好地掌握jQuery和网页交互...
jQuery UI 是一个基于 jQuery JavaScript 库的开源插件,它为开发者提供了丰富的用户界面组件和交互效果。这个下载资源包含了一整套用于构建交互式网页应用的工具,使开发者能够快速实现诸如拖放、日期选择器、...
本篇文档基于一份由ITCAST提供的jQuery实战教程,聚焦于如何利用jQuery创建窗口效果。通过一系列实用技巧与示例,帮助读者深入理解并掌握相关技术点。 #### 二、核心知识点解析 ##### 2.1 模拟窗口的基本构建 - *...
在本文中,我们将深入探讨通过标题和描述所提及的jQuery实战案例,包括级联下拉框效果、横向纵向菜单、可编辑的表格、标签页效果、窗口效果以及环境准备与入门实例。 **1. jQuery实战第一讲:概述与环境准备及入门...
`JQuery实战第六讲:窗口效果`可能涵盖了以下内容: 1. **窗口加载事件**: 使用`$(window).load()`或`$(document).ready()`在页面加载完成后执行代码。 2. **窗口滚动事件**: 利用`$(window).scroll()`监听滚动条...
1. **对话框(Dialog)**:用于展示模态或非模态窗口,常用于表单填写、信息提示等场景。 2. **表格(Grid)**:提供数据展示和操作功能,支持排序、分页、过滤等操作。 3. **菜单(Menu)**:创建下拉菜单和级联...
《jQuery Scroll Follow插件详解与应用实践》 在网页设计中,为了提升用户体验,有时我们需要让某些元素在用户滚动页面时依然保持在...同时,也可以结合其他jQuery插件或CSS3技术,进一步增强页面的动态效果和交互性。
- **布局组件**:如面板(Panel)、窗口(Window)和对话框(Dialog),用于构建页面的基本结构。 - **表单组件**:包括输入框(Input)、下拉框(ComboBox)、日期选择器(DateBox)等,便于数据输入与验证。 - ...