Css 不断调整a<;textarea>;在IE、FF、Safari/Chrome下

Css 不断调整a<;textarea>;在IE、FF、Safari/Chrome下,css,cross-browser,textarea,Css,Cross Browser,Textarea,我有一个,需要放入一个大小不是预先确定的空间(是屏幕大小的百分比)。通过设置常规CSS属性,我可以在FireFox中获得良好的效果: #container { width: 70%; height:70% } #text_area { width: 100%; height: 100%; margin: 0; padding:0; } 然而,在IE6和IE7中,我得到了不同的、奇怪的结果。在IE6中,文本框的左右两侧似乎都有填充,推动了容器的大小增长。在IE7中,文本框的左边有填充,但不会使容

我有一个
,需要放入一个大小不是预先确定的空间(是屏幕大小的百分比)。通过设置常规CSS属性,我可以在FireFox中获得良好的效果:

#container { width: 70%; height:70% }
#text_area { width: 100%; height: 100%; margin: 0; padding:0; }
然而,在IE6和IE7中,我得到了不同的、奇怪的结果。在IE6中,文本框的左右两侧似乎都有填充,推动了容器的大小增长。在IE7中,文本框的左边有填充,但不会使容器的大小变大——相反,它的右边缘会推到容器的外面

在IE6或IE7中,高度设置似乎没有效果;在这两种情况下,
都有两行长,忽略了height:100%指令

是否有一种一致的方法来跨浏览器调整
的大小

有没有办法去掉
左侧的填充


更新 使用
position:absolute
移除填充,但
宽度:100%
仍然拧紧。IE7似乎将100%宽度计算得太大,导致包含它的
溢出


如果有机会,我将创建一个独立的示例…

可能有一种我不知道的狡猾的CSS方法来实现这一点,但根据我的经验,这是使用一点Javascript是合理的

您可以使用JQuery或Prototype或纯Javascript获得所需的高度(我想是当前窗口的高度),然后


不过,我觉得左手边的填充物很奇怪。你能举个例子吗?

我在IE7中也看到了ASP.Net文本框控件的这个问题。我不记得我在哪里找到了解决方案(但是找到它的人的道具),但我遇到了同样的问题,即带有width=“100%”的文本框实际上会破坏DOM,而我的整个内容部分会“溢出”到相邻部分(例如基于表的导航)

我最终采用的解决方案是将asp:Textbox包装在自己的表中,并设置“table layout:fixed;width:100%”属性和Textbox/textarea上的“position:relative;width:100%”属性,因此块看起来如下:

<table style="width: 100%; table-layout: fixed;">
  <tbody>
    <tr>
     <td>
      <asp:Textbox id="txtMyTextbox" runat="server" Width="100%" style="position: relative;"/>
     </td>
    </tr>
   </tbody>
 </table>


希望这能有所帮助。

为了解决此类问题,必须考虑如何在浏览器中处理百分比。首先百分比不存在,它们在某个点被转换为像素。步骤是:1)浏览器渲染所有标记;2)浏览器测量外部、父对象和百分比大小的框以获取其像素大小,并根据其百分比大小设置子框的大小。 我认为首先要验证的是textarea的父框的大小,以及它的父框,等等。这可以通过检查Firebug和IE开发者工具栏中的“布局”信息来完成,并找出在两种浏览器中测量的不同之处。一旦找到元素(或元素),就可以调整CSS来考虑它们。

请记住,百分比大小考虑父框内容的宽度和高度,以调整子元素的大小,而不是填充。因此,如果父框的宽度为500px,并且有100px的填充,则具有100%宽度的子元素将为500px,并且100px的填充将在其周围,并且两个元素将占据屏幕的700px。

请尝试

在文本区域css上添加最小高度:100%。在包含绝对位置的div上,在css上将位置设置为相对


当你在做的时候,也要使用过渡的doctype而不是strict。确保没有未关闭的标签。如果您可以使页面符合XHTML或HTML标准,这样跨浏览器兼容性问题就会少一些,我会更好。

尝试将
显示:块
边框:0
添加到
文本区域

前者应考虑高度问题,后者防止
宽度:100%
溢出。

-1不是“ASP.Net文本框”服务器端吗?它不只是在HTML页面中生成一个
?另外,当使用
是完全错误的时候,这不是一个完美的例子吗?ASP.Net文本框是页面上的一个而不是一个。@Shawn:嗯,
呈现一个HTML
,这就是我认为的意思。@Mufasa:什么的解决方案?将文本框包装在空表中应该没有任何效果!巴拉德:你有没有找到答案?这是一个2年半的问题和超过4k的视图。一定有人知道一个好的,正确的方法来处理这个?
<table style="width: 100%; table-layout: fixed;">
  <tbody>
    <tr>
     <td>
      <asp:Textbox id="txtMyTextbox" runat="server" Width="100%" style="position: relative;"/>
     </td>
    </tr>
   </tbody>
 </table>