如何在div的中心显示图像

我有一个Ajax的装载GIF图像的div

<div id="mydiv" style="height: 400px; text-align: center;"> <img src="/Content/ajax-loader.gif" class="ajax-loader"/> </div> 
 .ajax-loader { /*hidden from IE 5-6 */ margin-top: 0; /* to clean up, just in case IE later supports valign! */ vertical-align: middle; margin-top: expression(( 150 - this.height ) / 2); } 

但无法显示在中心(垂直和水平)。 需要帮助。

以下假定图像的宽度和高度是已知的:

 #mydiv { height: 400px; position: relative; background-color: gray; /* for demonstration */ } .ajax-loader { position: absolute; left: 50%; top: 50%; margin-left: -32px; /* -1 * image width / 2 */ margin-top: -32px; /* -1 * image height / 2 */ } 
 <div id="mydiv"> <img src="http://dummyimage.com/64x64/000/fff.gif&text=LOADING" class="ajax-loader"> </div> 

全屏阿贾克斯装载机,一些不透明的。

运用

 $('#mydiv').show(); $('#mydiv').hide(); 

切换它。

 #mydiv { position:absolute; top:0; left:0; width:100%; height:100%; z-index:1000; background-color:grey; opacity: .8; } .ajax-loader { position: absolute; left: 50%; top: 50%; margin-left: -32px; /* -1 * image width / 2 */ margin-top: -32px; /* -1 * image height / 2 */ display: block; } <div id="mydiv"> <img src="lib/jQueryhttp://img.dovov.comajax-loader.gif" class="ajax-loader"/> </div> 

将这个div放在你正在更新的区域内:

 <div id="myLoader" class="ajax-loader"></div> 

并添加到您的CSS:

 .ajax-loader { cursor: wait; background:#ffffff url('ajax-loader.gif') no-repeat center center; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=75)"; filter: alpha(opacity=75); opacity: 0.75; position: absolute; z-index: 10000; display: none; } 

当你想显示它时,只需调用:

 $('#myLoader').css({ height: $('#myLoader').parent().height(), width: $('#myLoader').parent().width() }); $('#myLoader').show(); 

或者一些等同物。

其他的方法来中心horizo​​ntaly和verticaly在一个div里面的图像:

  1. 未知的图像大小
  2. 未知的div大小
  3. 响应

DEMO

HTML:

 <div> <img src="http://lorempixel.com/output/people-qg-50-50-1.jpg" alt="" /> </div> 

CSS:

 div{ position:relative; } img{ position:absolute; top:0; bottom:0; left:0; right:0; margin:auto; } 

使用:

 display:inline-block; 

要么:

 display:block; 

和:

 text-align:Center; 

里面的CSS文件…然后它会出现

你可以用属性align来做到这一点

 <div id="mydiv" align="center"> <img src="/Content/ajax-loader.gif" class="ajax-loader"/> </div> 

戴夫摩根的解决scheme为我工作。

这是一个更清洁的版本。

上述所有解决scheme的问题是,你需要在你的容器之前创build一些图像或div。 这是浪费资源,很难适用于具体的目标。 让jquery代替生成div。

这是我的代码:

JS

 $('#trigger').on('click', function(){ var target = $('#stage'); var el = $('<div class="spinner" />').width(target.width()).height(target.height()); target.prepend(el); }); 

CSS

 .spinner{ position: absolute; cursor: wait; z-index: 10000; -khtml-opacity:.50; -moz-opacity:.50; -ms-filter:"alpha(opacity=50)"; filter:alpha(opacity=50); filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5); opacity:.50; background: url('../img/system/ajax.gif') no-repeat center #f8f8f8; }