使用jQuery在屏幕上居中一个DIV

文章目录

我如何去使用jQuery在屏幕的中心设置<div>

我喜欢给jQuery添加函数,所以这个函数将有助于:

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插件在这里

非常短的版本

$('#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 大专栏  使用jQuery在屏幕上居中一个DIV
                    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});
    });
);

是对的吗 ?

从CSS技巧

.center {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%); /* Yep! */
  width: 48%;
  height: 59%;
}

未经作者同意,本文严禁转载,违者必究!

原文地址:https://www.cnblogs.com/lijianming180/p/12026625.html

时间: 2024-08-29 21:00:06

使用jQuery在屏幕上居中一个DIV的相关文章

directx学习之在屏幕上画一个三角形

前一张已经输出了一个背景为紫色的屏幕,这一节的目标是在该屏幕上输出一个三角形.下面将逐一介绍建立一个三角形的过程. 一个三角形有三个点,叫做顶点.三个点的不同的集合可以建立不同的三角形.能让GPU创建一个三角形,必须将三个顶点的位置告诉它.下面是一个2D的例子. 怎么将三个点的数据传给GPU? 在d3d10中,顶点数据被存在一个缓存资源中.但是应该申请多大的缓存,这就是接下来的问题. 一个顶点就是一个位置,通常也包含一些其他的属性,比如颜色,纹理协调等.顶点结构就定义了那些属性在内存中的位置.

如何居中一个div?

CSS 实现垂直居中的几种方案 说到居中,很多人第一反应应该是水平居中,说到水平居中,肯定道友们有一万种方法做到,CSS3 的FlexBox更是强大到没朋友.但是微笑今天想聊的是 CSS 垂直居中的方法,下面是萌萌的分割线.神马?你敢说不萌? 方式一 :table 布局方法 直接上??: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <t

页面上有一个div 100*100 颜色为黄色 按键盘上下左右键可以操作div移动 ctrl+键盘上下键可以放大缩小 ctrl+键盘左右键可以随机变颜色

1 <body> 2 <div id="w"> 3 <div class="n">按上键可以向上移动</div> 4 <div class="n">按下键可以向下移动</div> 5 <div class="n">按左键可以向左移动</div> 6 <div class="n">按右键可以向右移动&l

在屏幕上创建页签

SAP允许直接通过ABAP代码在屏幕上创建一个页签,相关语法如下. SELECTION-SCREEN BEGIN OF TABBED BLOCK <block> FOR n LINES. 每个页签都是由一个单独的子屏幕控制,N代表分页控件的高度,屏幕载入时必须先通过INITIALIZATION事件对其属性初始化.下例中将定义一个包含两个页签的TAB控件,代码所下所示. 1 REPORT ztest_sum. 2 3 TABLES:mara. 4 *TABLES sscrfields. &quo

jQuery生成一个DIV容器,ID是&quot;rating&quot;.

我们需要一些服务器端代码,这个例子中用到了一个PHP文件,读取rating参数然后返回rating总数和平均数.看一下rate.php代码.虽然这些例子也可以不使用AJAX来实现,但显示我们不会那么做,我们用jQuery生成一个DIV容器,ID是"rating". $(document).ready(function() {        // generate markup        var ratingMarkup = ["lease rate: "]; 

设置一个DIV块固定在屏幕中央(两种方法)

设置一个DIV块固定在屏幕中央(两种方法) 方法一: 对一个div进行以下设置即可实现居中. <style> #a{ position: fixed; top: 0px; left: 0px; right: 0px; bottom: 0px; margin: auto; } </style> <!doctype html> <html lang="zh-cn"> <head> <meta charset="UT

jQuery实现动态添加和删除一个div

本文主要给大家简单介绍一下如何动态的在一个元素添加和删除div,希望能够得到举一反三之效. 代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style type="text/css"> #father { width:150px; height:150px; background-color:red; } #father div {

iOS判断一个View是否显示在屏幕上

有时候做UI的时候,比如需要判断scrollView中一个btn是否显示在屏幕上,可以用以下代码: #pragma mark - 返回一个View所在的位置x,y,是否在rect坐标里面 - (BOOL)isInScreenView:(UIView *)inView withRect:(CGRect)rect{ return CGRectIntersectsRect(inView.frame, rect); } #pragma mark - 返回判断screenRect所在的位置x,y,是否在r

HTML4如何让一个DIV居中对齐?float输入日志标题

float:left,right clear:both 如何让一个DIV居中对齐? 第一步:设置外层的DIV的text-align:center; 第二步:设置里层的DIV的margin:auto 以上两个DIV都不要设置float.