如何 我喜欢向jQuery添加函数,所以这个函数会有所帮助: 现在我们可以写: 演示:小提琴(附加参数) 我在这里放了一个jquery插件 非常短的版本 精简版 由此代码激活: 插件版本 由此代码激活: 是对的吗 ? 来自CSS-Tricks 我会推荐jQueryUI Position实用程序 这给你提供了更多的可能性而不仅仅是居中... 这是我的目标.我最终将它用于我的Lightbox克隆.此解决方案的主要优点是即使窗口调整大小,元素也会自动保持居中,这使其成为这种用法的理想选择. 您可以单独使用CSS来像这样居中: 工作实例
我正在扩展@TonyL给出的伟大答案.我正在添加Math.abs()来包装值,并且我还考虑到jQuery可能处于"无冲突"模式,例如在WordPress中. 我建议您使用Math.abs()包装顶部和左侧值,如下所示.如果窗口太小,并且您的模态对话框顶部有一个关闭框,这将防止看不到关闭框的问题.托尼的功能可能具有负面价值.关于如何结束负值的一个很好的例子是,如果你有一个大的居中对话框,但最终用户已经安装了几个工具栏和/或增加了他的默认字体 - 在这种情况下,模态对话框上的关闭框(如果在顶部)可能不可见和可点击. 我做的另一件事是通过缓存$(window)对象来加快速度,以便减少额外的DOM遍历,并使用集群CSS. 要使用,您可以执行以下操作: 我会使用jQuery UI 看工作演示. 如果我有一个id为"test"的div来居中,那么下面的脚本会将div放在文档就绪的窗口中.(位置选项中"my"和"at"的默认值为"center") 我想纠正一个问题. 如果 现在盒子在 我不认为如果你想要一个总是位于页面中间的元素,那么绝对位置会是最好的.你可能想要一个固定的元素.我找到了另一个使用固定定位的jquery居中插件.它被称为固定中心. 这是未经测试的,但这样的事情应该有效.
1> Tony L...:jQuery.fn.center = function () {
this.css("position","absolute");
this.css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2) +
$(window).scrollTop()) + "px");
this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 2) +
$(window).scrollLeft()) + "px");
return this;
}
$(element).center();
为什么这不是jQuery功能的原生部分?
我建议的一个改变:你应该使用this.outerHeight()和this.outerWidth()而不仅仅是this.height()和this.width().否则,如果对象有边框或填充,它将稍微偏离中心.
如果我不想以包含`
答案中的代码应使用"position:fixed",因为"absolute"是从第一个相对父项计算的,代码使用window来计算中心.
我还建议添加支持,以便在调整窗口大小时,它将调整页面上的元素.目前它保持原始尺寸.
要使用固定定位而不是绝对定位,只需删除`+ $(window).scrollTop()`和`+ $(window).scrollLeft()`.(当然,将"绝对"改为"固定"`).
2> molokoloco..:$('#myDiv').css({top:'50%',left:'50%',margin:'-'+($('#myDiv').height() / 2)+'px 0 0 -'+($('#myDiv').width() / 2)+'px'});
(function($){
$.fn.extend({
center: function () {
return this.each(function() {
var top = ($(window).height() - $(this).outerHeight()) / 2;
var left = ($(window).width() - $(this).outerWidth()) / 2;
$(this).css({position:'absolute', margin:0, top: (top > 0 ? top : 0)+'px', left: (left > 0 ? left : 0)+'px'});
});
}
});
})(jQuery);
$('#mainDiv').center();
(function($){
$.fn.extend({
center: function (options) {
var options = $.extend({ // Default values
inside:window, // element, center into window
transition: 0, // millisecond, transition time
minX:0, // pixel, minimum left element value
minY:0, // pixel, minimum top element value
withScrolling:true, // booleen, take care of the scrollbar (scrollTop)
vertical:true, // booleen, center vertical
horizontal:true // booleen, center horizontal
}, options);
return this.each(function() {
var props = {position:'absolute'};
if (options.vertical) {
var top = ($(options.inside).height() - $(this).outerHeight()) / 2;
if (options.withScrolling) top += $(options.inside).scrollTop() || 0;
top = (top > options.minY ? top : options.minY);
$.extend(props, {top: top+'px'});
}
if (options.horizontal) {
var left = ($(options.inside).width() - $(this).outerWidth()) / 2;
if (options.withScrolling) left += $(options.inside).scrollLeft() || 0;
left = (left > options.minX ? left : options.minX);
$.extend(props, {left: left+'px'});
}
if (options.transition > 0) $(this).animate(props, options.transition);
else $(this).css(props);
return $(this);
});
}
});
})(jQuery);
$(document).ready(function(){
$('#mainDiv').center();
$(window).bind('resize', function() {
$('#mainDiv').center({transition:300});
});
);
.center {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%); /* Yep! */
width: 48%;
height: 59%;
}
3> cetnar..:$('your-selector').position({
of: $(window)
});
@Michelangelo:您需要jqueryUI库将.position()用作函数.退房:api.jqueryui.com/position/
4> Juho Vepsälä..:$.fn.center = function() {
this.css({
'position': 'fixed',
'left': '50%',
'top': '50%'
});
this.css({
'margin-left': -this.outerWidth() / 2 + 'px',
'margin-top': -this.outerHeight() / 2 + 'px'
});
return this;
}
我认为这很有效......在我的情况下由于使用了响应式设计而出错:我的div的宽度随着屏幕宽度的变化而变化.完美的工作是Tony L'的答案,然后添加:`$(window).resize(function(){$('#mydiv').center()});`(mydiv是一个模态对话框,所以当它关闭我删除resize事件处理程序.)
5> apaul..:.center{
position: absolute;
height: 50px;
width: 50px;
background:red;
top:calc(50% - 50px/2); /* height divided by 2*/
left:calc(50% - 50px/2); /* width divided by 2*/
}
6> Volomike..:jQuery.fn.center = function ($) {
var w = $(window);
this.css({
'position':'absolute',
'top':Math.abs(((w.height() - this.outerHeight()) / 2) + w.scrollTop()),
'left':Math.abs(((w.width() - this.outerWidth()) / 2) + w.scrollLeft())
});
return this;
}
jQuery(document).ready(function($){
$('#myelem').center();
});
7> 小智..:position
函数.
8> 小智..:this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
this.height
(假设用户调整屏幕大小并且内容是动态的)scrollTop() = 0
,上面的代码将不起作用,例如:window.height
是600
this.height
的650
600 - 650 = -50
-50 / 2 = -25
-25
屏幕中央.
9> 小智..:
10> Andrew Hedge..:var myElement = $('#myElement');
myElement.css({
position: 'absolute',
left: '50%',
'margin-left': 0 - (myElement.width() / 2)
});
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有