将元素置于元素内部居中 (jQuery)

发布于 2024-08-16 03:15:46 字数 314 浏览 3 评论 0 原文

<div class="preview">
  <span class="center">This will be centered</div>
</div>

预览具有固定宽度 (120x120),但跨度可以包含任何内容(图像、文本)。如何使用 jQuery 将其垂直水平居中?我查找了一些片段,但它们都将元素集中在“主体”内,而不是另一个元素。如果可能的话,我想避免使用“插件”。

非常感谢!

<div class="preview">
  <span class="center">This will be centered</div>
</div>

Preview has fixed width (120x120), but span may contain anything (image, text). How do I center it vertically and horizontally using jQuery? I looked up some snippets but they all center elements inside the 'body' not another element. I'd like to avoid use a 'plugin' for this if possible.

Many thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

只是偏爱你 2024-08-23 03:15:46

最新的 jQuery UI 有一个位置组件:

$("#myDialog").position({
   my: "center",
   at: "center",
   of: window
});

Doc: http://jqueryui.com/demos/position/
获取:http://jqueryui.com/download

The latest jQuery UI has a position component:

$("#myDialog").position({
   my: "center",
   at: "center",
   of: window
});

Doc: http://jqueryui.com/demos/position/
Get: http://jqueryui.com/download

梦途 2024-08-23 03:15:46

既然你不介意使用 jQuery,你可以使用 Center Element 插件

它就像这样简单正在做:

$(".preview").center();

Since you don't mind using jQuery, you can use the Center Element Plugin

It's as simple as doing:

$(".preview").center();
倒数 2024-08-23 03:15:46

既然你提到你正在使用 jquery,我假设你想通过 javascript 来做到这一点。您可以使用 Jquery 将样式添加到 DOM 中的元素。您可以使用

http://docs.jquery.com/CSS/css#properties

  $(.center).css({'display' : 'block', 'text-align' : 'center'});

根据元素的不同,如果将边距设置为,则可以将其居中,而无需使用 text-align:center

margin: 0 auto 0 auto

这会将顶部和底部的边距设置为零,并将左侧和右侧设置为自动,这可以用于将块元素置于另一个块元素的中心。

要在 jquery 中垂直居中元素,您可以使用此

http://cool-javascripts.com/jquery/vertical-alignment-of-contents-inside-an-element-using-jquery.html

    function ($) {
    $.fn.vAlign = function(container) {
        return this.each(function(i){
    if(container == null) {
       container = 'div';
    }
    var paddingPx = 10; //change this value as you need (It is the extra height for the parent element)
    $(this).html("<" + container + ">" + $(this).html() + "</" + container + ">");
    var el = $(this).children(container + ":first");
    var elh = $(el).height(); //new element height
    var ph = $(this).height(); //parent height
    if(elh > ph) { //if new element height is larger apply this to parent
        $(this).height(elh + paddingPx);
        ph = elh + paddingPx;
    }
    var nh = (ph - elh) / 2; //new margin to apply
    $(el).css('margin-top', nh);
        });
     };
})(jQuery);

Since you mentioned you're using jquery, i assume you would like to do this via javascript. You can add styles to elements in the DOM using Jquery. You can use

http://docs.jquery.com/CSS/css#properties

  $(.center).css({'display' : 'block', 'text-align' : 'center'});

Depending on the element, you may be able to center it without having to use text-align:center if you set the margin to

margin: 0 auto 0 auto

This will set the margin on the top and bottom to zero, and auto on the left and right, this can be used to center the block element inside of another block element.

To center an element vertically in jquery you can use this

http://cool-javascripts.com/jquery/vertical-alignment-of-contents-inside-an-element-using-jquery.html

    function ($) {
    $.fn.vAlign = function(container) {
        return this.each(function(i){
    if(container == null) {
       container = 'div';
    }
    var paddingPx = 10; //change this value as you need (It is the extra height for the parent element)
    $(this).html("<" + container + ">" + $(this).html() + "</" + container + ">");
    var el = $(this).children(container + ":first");
    var elh = $(el).height(); //new element height
    var ph = $(this).height(); //parent height
    if(elh > ph) { //if new element height is larger apply this to parent
        $(this).height(elh + paddingPx);
        ph = elh + paddingPx;
    }
    var nh = (ph - elh) / 2; //new margin to apply
    $(el).css('margin-top', nh);
        });
     };
})(jQuery);
苍暮颜 2024-08-23 03:15:46

您可以使用仅 CSS 的解决方案(忽略 IE)

这将居中


使用 display:block 也可以工作,但仅适用于水平对齐,对于垂直对齐,您需要按照上面的代码模拟表格,或者使用 JavaScript。

You can use a CSS only solution (ignoring IE)

<div class="preview" style="display:table-cell;vertical-align:middle;text-align:center;margin:0 auto">
<span class="center">This will be centered</div>
</div>

using display:block will also work but only for horizontal alignment, for vertical alignment either you will need to emulate a table as per the above code or alternatively use JavaScript.

清引 2024-08-23 03:15:46

您可以将自己的函数添加到 jquery:

// Centers on div
jQuery.fn.center = function (div) {
this.css("position", "absolute");

var position = div.position();
this.css("top", Math.max(0, ((div.height() - this.outerHeight()) / 2) + position.top) + "px");

this.css("left", Math.max(0, ((div.width() - this.outerWidth()) / 2) + position.left) + "px");
return this;
};

使用:

$('#ajxload').center($('#mapWrapper')).show();

从代码中获取概念 使用 jQuery 将 DIV 置于屏幕中央

You could add your own function to jquery:

// Centers on div
jQuery.fn.center = function (div) {
this.css("position", "absolute");

var position = div.position();
this.css("top", Math.max(0, ((div.height() - this.outerHeight()) / 2) + position.top) + "px");

this.css("left", Math.max(0, ((div.width() - this.outerWidth()) / 2) + position.left) + "px");
return this;
};

Use:

$('#ajxload').center($('#mapWrapper')).show();

Took the concept from the code at Using jQuery to center a DIV on the screen

π浅易 2024-08-23 03:15:46

你可以使用 CSS 来做到这一点。
这篇文章提供了一个很好的解决方案 - http://mindthesemicolon.com/how-to-center-an-element-vertically-and-horizo​​ntally-using-css/

基本上:

1.将子项设置为绝对位置。
2。将父级设置为相对位置。
3。将子项的左侧和顶部设置为 50%。
4。 Translation(-50%,-50%) 向左和顶部移动子元素宽度的一半。

You could do it using CSS.
This post provides a good solution - http://mindthesemicolon.com/how-to-center-an-element-vertically-and-horizontally-using-css/

Basically:

1. Set the child to position absolute.
2. Set the parent to position relative.
3. Set child's left and top to 50%.
4. translate(-50%,-50%) to shift left and top by half the width of the child element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文