现在用DIV来定位的方式使用得越来越广泛。
我最近在使用DIV定位图片的时候,发现DIV不能直接设置图片的垂直对齐方式
狠伤了一阵脑筋,然后到网上找了很多解决办法。
但是似乎都不太行,后来发现了  孟子E章(我超级惊讶孟子E章的知识广泛程度) 
给别人回答问题的一个帖子里面
有一个解决方法看起来很正宗。如下

<div id="Layer1" 
style
="position:absolute; 
width:500px; 
height:305px; 
z-index:1; 
background-color: #999999; 
border: 1px none #000000;
padding-top:expression(this.style.top+(this.offsetHeight-mxh.offsetHeight)/2)"
 
align
=center >
<img src="http://sz.luohuedu.net/xml/Images/logo.gif" id=mxh>
</div>


拿来用了以后发现还是不能成功。
接下来又查了一下资料,发现他这个方法里面有两个问题。

  1. this.style.top 取出来的不是数字而是一个字符串,例如 50px,所以expression里面没有办法运算。正确的方法应该是 this.style.pixelTop属性,这样取出来的才是数字。
  2. 图片放到DIV里面以后,其top属性值的计算不再是从窗口的左上角开始计算,而是从DIV容器的左上角开始计算,因此DIV的上填充距离不需要再加上DIV的top值

依据以上两点,我对孟子E章的方法进行了些许的修改,得到下面的这个方法。我测试过是成功的。
整个过程费了不少时间,这里贴出来分享给大家,省得大家再走弯路,尤其是还没有使用过expression的朋友们。

<div id="Layer1" 
    style
="
        position:absolute; 
        left:261px; 
        top:50px; 
        width:251px; 
        height:105px; 
        z-index:1; 
        overflow:hidden; 
        border: 1px solid #0066CC;
        padding-top:expression((this.offsetHeight-myImage.offsetHeight)/2);
    "
 
    align
="center">
    
<img src="12.gif" width="70" height="76" align="absmiddle" id="myImage">
</div>

 有一个关键点提醒大家注意一下,图片要给出ID,才能进行计算。切记~

感谢孟子E章,感谢他的博学,呵呵呵
再一次惊叹于孟子E章知识面的广阔。

posted on 2006-08-28 00:16  WilliamsQi  阅读(1365)  评论(0编辑  收藏  举报



CoolCha 库查搜索
查手机号码归属地
查IP地址、火车车次、邮编、在线翻译... 淘星助手