本来jQuery有一个certer插件,不过少了一个功能,就是基于视口(ViewPort)的居中.
改写一下,代码如下:
jQuery.fn.center = function(f) {
return this.each(function(){
var p = f===false?document.body:this.parentNode;
if ( p.nodeName.toLowerCase()!= "body" && jQuery.css(p,"position") == 'static' )
p.style.position = 'relative';
var s = this.style;
s.position = 'absolute';
if(p.nodeName.toLowerCase() == "body")
var w=$(window);
if(!f || f == "horizontal") {
s.left = "0px";
if(p.nodeName.toLowerCase() == "body") {
var clientLeft = w.scrollLeft() - 10 + (w.width() - parseInt(jQuery.css(this,"width")))/2;
s.left = Math.max(clientLeft,0) + "px";
}else if(((parseInt(jQuery.css(p,"width")) - parseInt(jQuery.css(this,"width")))/2) > 0)
s.left = ((parseInt(jQuery.css(p,"width")) - parseInt(jQuery.css(this,"width")))/2) + "px";
}
if(!f || f == "vertical") {
s.top = "0px";
if(p.nodeName.toLowerCase() == "body") {
var clientHeight = w.scrollTop() - 10 + (w.height() - parseInt(jQuery.css(this,"height")))/2;
s.top = Math.max(clientHeight,0) + "px";
}else if(((parseInt(jQuery.css(p,"height")) - parseInt(jQuery.css(this,"height")))/2) > 0)
s.top = ((parseInt(jQuery.css(p,"height")) - parseInt(jQuery.css(this,"height")))/2) + "px";
}
});
};
使用,
$(expr).center();
$(expr).center(false);
如果expr 的 parentNode 是body 或者参数是 false的话就会真的 ViewPort 居中.
另外加的偏移量 10 是个偷懒的方法,比如有了滚动条,会好一些,没有的话视觉上也差别不大,不过没有这个偏移量又有
滚动条的话
视觉上就不太舒服了
分享到:
- 2008-11-26 19:15
- 浏览 2045
- 评论(2)
- 论坛回复 / 浏览 (2 / 2326)
- 查看更多
相关推荐
《jQuery插件库:jQuery数字钟的深度解析与应用》 在网页设计和Web开发领域,jQuery库以其简洁、高效和强大的功能深受开发者喜爱。它极大地简化了JavaScript的DOM操作,动画效果,以及事件处理等任务。而在这个名为...
jQuery Countdown 插件是开发者用来实现网页倒计时功能的一个强大工具。这个插件基于流行的JavaScript库jQuery构建,为用户提供了一系列灵活的选项和自定义能力,使得在网站上创建各种类型的倒计时变得轻而易举。在...
《jQuery弹窗插件TipsWindow深度解析》 在Web开发中,交互性和用户体验是至关重要的因素,而弹窗作为常见的用户交互元素,被广泛应用在各种网页功能中,如提示信息、登录注册、广告展示等。jQuery,作为一个轻量级...
除了基础功能外,开发者还可以结合其他jQuery插件或自定义JavaScript代码,实现更复杂的功能,例如: - **表单验证**:在浮动层内嵌入表单,并使用验证插件检查用户输入。 - **异步加载**:动态加载浮动层内容,如...
本篇文章将深入探讨jQuery插件的制作过程,帮助读者更好地理解和运用jQuery插件。 首先,我们要明白jQuery插件的基本结构。一个简单的jQuery插件通常包含以下部分: 1. **命名空间**:为了防止与其他插件冲突,...
创建jQuery插件,处理分页逻辑: ```javascript (function($) { $.fn.extend({ pagination: function(options) { var settings = $.extend({ itemsPerPage: 10, totalPages: null, currentPage: 1, onChange...
本教程将详细讲解如何利用jQuery创建一个自定义的月份选择插件,帮助开发者提高用户体验,使得用户能方便快捷地选择日期。 首先,我们需要了解jQuery的基本用法。jQuery的核心特性是其简洁的语法,例如$(selector)....
环形动画导航菜单jQuery插件是一款用于网页交互设计的工具,它通过JavaScript库jQuery实现,为网站的导航菜单带来独特的视觉效果。这款插件利用HTML、CSS和JavaScript技术,将传统线性的导航菜单转变为环形布局,...
"jquery插件弹出层"是利用jQuery实现的一种交互功能,用于在页面上创建可自定义大小、位置,并带有淡入淡出效果的弹出对话框或窗口。这种弹出层常用于显示详细信息、用户提示、表单或任何需要突出显示的内容,不打断...
**jQuery应用六:窗口效果(jQuery插件的写法)** 在Web开发中,jQuery库以其简洁、强大的API,使得JavaScript编程变得更加简单。本篇将深入讲解如何利用jQuery实现窗口效果,并探讨jQuery插件的编写方法。我们将...
**jQuery.ipicture.js 插件详解** jQuery.ipicture.js 是一款强大的JavaScript插件,它允许开发者在网页中的地图上创建标记,并且可以结合图文及链接进行丰富的信息展示。这款插件特别适合用于地理信息系统(GIS)...
快速返回顶部jquery插件</title> <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="js/...
1. **基本布局模式**:该插件支持多种布局模式,如`north`(北)、`south`(南)、`east`(东)、`west`(西)和`center`(中心)。这些区域可以独立调整大小,为用户提供灵活的界面设计。 2. **实时响应式布局**:...
jqGrid是一款基于jQuery的开源表格插件,专为数据管理和展示设计,提供了丰富的功能和高度的自定义性。它在Web开发中广泛应用于构建高效、交互式的数据网格。以下是关于jqGrid的一些关键知识点: 1. **基本使用**:...
PoshyTip是一款基于jQuery的精美提示插件,它为网页元素提供了优雅且可自定义的tooltips(提示框)效果。这款插件以其高度的灵活性、丰富的样式选择和易于使用的API而受到开发者喜爱。在网页设计中,tooltips通常...
### JQuery插件FlexiGrid之完全配置与使用 #### 一、引言 FlexiGrid是一款基于jQuery的轻量级表格插件,它为开发者提供了简单易用的方式来展示和操作数据表格。FlexiGrid支持多种功能,如排序、分页、筛选等,非常...
综上所述,FlexiGrid是一个强大的jQuery插件,它能帮助开发者快速构建具有高级特性的数据表格。通过灵活配置和丰富的API,你可以根据项目需求定制出满足各种需求的表格组件。在实际应用中,记得结合自己的数据源和...
**jQuery Poshy Tip 插件详解** jQuery Poshy Tip 是一款功能强大的鼠标悬停提示插件,它允许开发者为网页元素添加美观且可定制的提示信息。这款插件以其易于使用、高度可定制和良好的用户体验而受到广泛欢迎。在...
jQuery Wookmark瀑布流插件是一款广泛应用于网页布局的JavaScript工具,它允许开发者轻松实现网格布局,特别是“瀑布流”效果。瀑布流布局是一种流行的设计模式,常用于图片展示、电商产品陈列等场景,它的特点是...
《jQuery Skitter幻灯片插件:打造独特的百叶窗切换效果》 在网页设计中,动态效果的应用能够提升用户体验,使网站更具吸引力。其中,幻灯片切换效果是常见的一种设计手法,它能以优雅的方式展示内容,引导用户的...