一、请看下面的HTML代码
1
<HTML>
2
<HEAD>
3
<TITLE>Position </TITLE>
4
</HEAD>
5
<BODY>
6
<table border=1>
7
<tr>
8
<td >
9
<textarea id="textareaInput" style="font-family: Tahoma; font-size: 11px;" cols="35" rows="3"/></textarea>
10
</td>
11
<td width='300' align='right' >
12
<DIV id=senddiv style="WIDTH: 70px; HEIGHT: 41px;">
13
<IMG id=btnSendOut style="WIDTH: 70px; POSITION: absolute; HEIGHT: 41px" src="windows_button_bg.gif">
14
<div id=divSendOut style="WIDTH: 70px; POSITION: absolute; HEIGHT: 41px;line-height:41px" align='center' >Send</div>
15
</DIV>
16
</td>
17
</tr>
18
</table>
19
</div>
20
</BODY>
21
</HTML>
<HTML>2
<HEAD>3
<TITLE>Position </TITLE>4
</HEAD>5
<BODY>6
<table border=1>7
<tr>8
<td >9
<textarea id="textareaInput" style="font-family: Tahoma; font-size: 11px;" cols="35" rows="3"/></textarea>10
</td>11
<td width='300' align='right' >12
<DIV id=senddiv style="WIDTH: 70px; HEIGHT: 41px;">13
<IMG id=btnSendOut style="WIDTH: 70px; POSITION: absolute; HEIGHT: 41px" src="windows_button_bg.gif">14
<div id=divSendOut style="WIDTH: 70px; POSITION: absolute; HEIGHT: 41px;line-height:41px" align='center' >Send</div>15
</DIV>16
</td>17
</tr>18
</table>19
</div>20
</BODY>21
</HTML>
二、运行的结果
三、问题
为什么img(id为btnSendOut)和文字div(id为divSendOut)出现在table外了呢?
四、原因
img和文字div都用的绝对(position:absolute)位置,但都没有设置left和top属性,这样会根据当前的HTML位置来确定left和top属性。上级容器是个div(id为senddiv)中,此div延续上级td的align属性,这样当前位置应在div的右边。于是img和文字div从div(id为senddiv)的右边开始显示,由于都是绝对的,脱离HTML的显示,所以都会超出table外。
五、解决方案
找到了原因,解决起来就容易了。我们只需要把div(id为senddiv)的align属性设置为left就可以了。因为img,div(id为divSendOut),div(id为senddiv)的大小都是一样的。
对于把字符串"Send"居中在div(id为divSendOut)中间,我们可以设置div的line-height属性(注意该属性的单位)和height属性一样就可以了。但是如果需要居中的不是文字,而且其它的对象,例如另一个div,则就需要利用脚本来控制了。
本文分析了一个HTML页面中元素定位出现问题的原因,并提供了相应的解决方案。详细解释了如何通过调整CSS属性来修正元素的位置,确保它们正确地显示在表格内。
294

被折叠的 条评论
为什么被折叠?



