`
achun
  • 浏览: 315451 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

jQuery 插件 center

阅读更多

本来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 是个偷懒的方法,比如有了滚动条,会好一些,没有的话视觉上也差别不大,不过没有这个偏移量又有 滚动条的话 视觉上就不太舒服了

分享到:
评论
2 楼 achun 2008-11-26  
longleg 写道

好像加上
Html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

就不会出现你说的那10像素的问题。

我的应用里永远都是
xhtml1-strict.dtd
还有就是浏览器之间可能有不同,不过这10像素不是什么重点。
1 楼 longleg 2008-11-26  
好像加上
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

就不会出现你说的那10像素的问题。

相关推荐

    jquery插件库-jquery数字钟.zip

    《jQuery插件库:jQuery数字钟的深度解析与应用》 在网页设计和Web开发领域,jQuery库以其简洁、高效和强大的功能深受开发者喜爱。它极大地简化了JavaScript的DOM操作,动画效果,以及事件处理等任务。而在这个名为...

    jQuery 的 countdown 插件

    jQuery Countdown 插件是开发者用来实现网页倒计时功能的一个强大工具。这个插件基于流行的JavaScript库jQuery构建,为用户提供了一系列灵活的选项和自定义能力,使得在网站上创建各种类型的倒计时变得轻而易举。在...

    jquery弹窗插件tipsWindown

    《jQuery弹窗插件TipsWindow深度解析》 在Web开发中,交互性和用户体验是至关重要的因素,而弹窗作为常见的用户交互元素,被广泛应用在各种网页功能中,如提示信息、登录注册、广告展示等。jQuery,作为一个轻量级...

    jquery 浮动层插件

    除了基础功能外,开发者还可以结合其他jQuery插件或自定义JavaScript代码,实现更复杂的功能,例如: - **表单验证**:在浮动层内嵌入表单,并使用验证插件检查用户输入。 - **异步加载**:动态加载浮动层内容,如...

    jQuery插件制作

    本篇文章将深入探讨jQuery插件的制作过程,帮助读者更好地理解和运用jQuery插件。 首先,我们要明白jQuery插件的基本结构。一个简单的jQuery插件通常包含以下部分: 1. **命名空间**:为了防止与其他插件冲突,...

    jQuery实现分页插件

    创建jQuery插件,处理分页逻辑: ```javascript (function($) { $.fn.extend({ pagination: function(options) { var settings = $.extend({ itemsPerPage: 10, totalPages: null, currentPage: 1, onChange...

    jQuery自定义月份选择插件

    本教程将详细讲解如何利用jQuery创建一个自定义的月份选择插件,帮助开发者提高用户体验,使得用户能方便快捷地选择日期。 首先,我们需要了解jQuery的基本用法。jQuery的核心特性是其简洁的语法,例如$(selector)....

    一款环形动画导航菜单jquery插件

    环形动画导航菜单jQuery插件是一款用于网页交互设计的工具,它通过JavaScript库jQuery实现,为网站的导航菜单带来独特的视觉效果。这款插件利用HTML、CSS和JavaScript技术,将传统线性的导航菜单转变为环形布局,...

    jquery插件弹出层

    "jquery插件弹出层"是利用jQuery实现的一种交互功能,用于在页面上创建可自定义大小、位置,并带有淡入淡出效果的弹出对话框或窗口。这种弹出层常用于显示详细信息、用户提示、表单或任何需要突出显示的内容,不打断...

    JQuery应用六:窗口效果(JQuery插件的写法)

    **jQuery应用六:窗口效果(jQuery插件的写法)** 在Web开发中,jQuery库以其简洁、强大的API,使得JavaScript编程变得更加简单。本篇将深入讲解如何利用jQuery实现窗口效果,并探讨jQuery插件的编写方法。我们将...

    javascript插件:jquery.ipicture.js在地图上做标记并可以用图文及链接展示(非常棒)

    **jQuery.ipicture.js 插件详解** jQuery.ipicture.js 是一款强大的JavaScript插件,它允许开发者在网页中的地图上创建标记,并且可以结合图文及链接进行丰富的信息展示。这款插件特别适合用于地理信息系统(GIS)...

    快速返回顶部jquery插件.rar_DEMO_repeat text_快速返回顶部的jquery插件

    快速返回顶部jquery插件&lt;/title&gt; &lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt; &lt;script type=&quot;text/javascript&quot; src=&quot;js/...

    jquery.layout 布局插件精简版

    1. **基本布局模式**:该插件支持多种布局模式,如`north`(北)、`south`(南)、`east`(东)、`west`(西)和`center`(中心)。这些区域可以独立调整大小,为用户提供灵活的界面设计。 2. **实时响应式布局**:...

    poshytip非常漂亮的jquery插件tooltips工具

    PoshyTip是一款基于jQuery的精美提示插件,它为网页元素提供了优雅且可自定义的tooltips(提示框)效果。这款插件以其高度的灵活性、丰富的样式选择和易于使用的API而受到开发者喜爱。在网页设计中,tooltips通常...

    jqGrid插件--JQuery表格插件

    jqGrid是一款基于jQuery的开源表格插件,专为数据管理和展示设计,提供了丰富的功能和高度的自定义性。它在Web开发中广泛应用于构建高效、交互式的数据网格。以下是关于jqGrid的一些关键知识点: 1. **基本使用**:...

    JQuery_插件FlexiGrid_之完全配置与使用

    ### JQuery插件FlexiGrid之完全配置与使用 #### 一、引言 FlexiGrid是一款基于jQuery的轻量级表格插件,它为开发者提供了简单易用的方式来展示和操作数据表格。FlexiGrid支持多种功能,如排序、分页、筛选等,非常...

    jquery插件FlexiGrid的使用(已更新)

    综上所述,FlexiGrid是一个强大的jQuery插件,它能帮助开发者快速构建具有高级特性的数据表格。通过灵活配置和丰富的API,你可以根据项目需求定制出满足各种需求的表格组件。在实际应用中,记得结合自己的数据源和...

    jquery鼠标悬停提示插件

    **jQuery Poshy Tip 插件详解** jQuery Poshy Tip 是一款功能强大的鼠标悬停提示插件,它允许开发者为网页元素添加美观且可定制的提示信息。这款插件以其易于使用、高度可定制和良好的用户体验而受到广泛欢迎。在...

    jQuery Wookmark瀑布流插件

    jQuery Wookmark瀑布流插件是一款广泛应用于网页布局的JavaScript工具,它允许开发者轻松实现网格布局,特别是“瀑布流”效果。瀑布流布局是一种流行的设计模式,常用于图片展示、电商产品陈列等场景,它的特点是...

    jquery skitter幻灯片插件图片类似百叶窗切换效果

    《jQuery Skitter幻灯片插件:打造独特的百叶窗切换效果》 在网页设计中,动态效果的应用能够提升用户体验,使网站更具吸引力。其中,幻灯片切换效果是常见的一种设计手法,它能以优雅的方式展示内容,引导用户的...

Global site tag (gtag.js) - Google Analytics