宽度为100%的textarea会忽略IE7中父元素的宽度

时间:2020-03-05 18:44:50  来源:igfitidea点击:

我在表中有以下文本区域:

<table width="300"><tr><td>

<textarea style="width:100%">
longstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstring
</textarea>

</td></tr></table>

在textarea中使用长字符串,textarea可以扩展以容纳IE7中的一行,而在其他浏览器中则保留300px的宽度。

关于如何在IE中解决此问题的任何想法?

解决方案

回答

你试过了吗...

溢出:隐藏;

??

我不确定它是否应该在textarea的表中...尝试一下

回答

或者,如何:

overflow: scroll;

编辑:

我实际上对此进行了测试。我认为这种行为是因为表格的宽度在表格上,我相信(我对此无能为力)我很早以前就读过,表格的宽度是建议的宽度,但是可以扩展以容纳表格的内容。没有把握。我知道如果我们使用&lt;DIV>而不是表,它会工作。另外,如果将300像素宽度应用于包含的<TD>元素,而不是<TABLE>元素,则它也可以正常工作。另外," overflow:scroll"什么也没做! :P

好的,时髦的IE行为,可以肯定!

回答

IE也支持word-breakCSS 3属性。

回答

将宽度应用于td,而不是table。

编辑:@Emmett的宽度可以通过CSS轻松地应用。

td {
    width: 300px;
}

产生期望的结果。或者,如果我们使用的是jQuery,则可以通过脚本添加宽度:

$('textarea[width=100%]').parent('td').css('width', '300px');

重要的是,如果开发限制使我们无法直接将其应用于表格单元,则有多种方法可以将其应用于表格单元格。

回答

@彼得·迈耶(Peter Meyer),吉姆·罗伯特(Jim Robert)

我尝试了不同的溢出值,但无济于事。

对wrap属性和自动换行样式使用不同的值进行尝试也没有取得成果。

编辑:

@ dansays,seanb

由于某些特定于应用程序的限制,因此只能将宽度应用于表格。

@travis

设置样式=" word-break:break-all;"有点工作!在IE7和FF中,它仍然以不同的方式包装。如果没有更好的办法,我会接受这个答案。

回答

我能找到的最好的东西,有点hacky:
&lt;div style =" width:300px;溢出:auto;">包裹textarea
可能想玩溢出值

回答

溢出属性是解决方法。特别是,如果要忽略多余的文本,可以使用" overflow:hidden"作为文本上的css属性。

通常,当浏览器具有牢不可破的对象(例如,长字符串没有空格)时,它在各种大小限制(字符串(长)与其容器(短))之间可能会发生冲突。如果我们在不同的浏览器中看到不同的行为,则它们只是以不同的方式解决了该冲突。

顺便说一句,<wbr>标签对长字符串有一个不错的技巧。如果浏览器看到longstringlongstring,那么它将尝试将其作为单个不间断的字符串放入容器中-但是,如果不合适,则它将在wbr处将其分成两半。基本上,这是一个断点,如果可能的话,要不要在此断点(这有点像打印文本中的连字符),这是一个隐含的请求。顺便说一句,在某些版本的Safari和Opera中,这是一个小问题,请查看此quirksmode页面以获取更多信息。

回答

另一个非常棘手的选择,如果我们遇到很多限制,但要知道周围的dom会是什么样子:

style="width:100%;width:expression(this.parentNode.parentNode.parentNode.parentNode.width +'px')"

不太漂亮,但是可以在IE7中使用。
使用jquery或者类似的方法会更整洁,但这取决于我们具有的其他约束。

回答

我以前遇到过这个问题。这与HTML如何解析表格和单元格宽度有关。

我们可以将宽度设置为300,只要元素的内容永远不能超过该宽度即可(我最喜欢的方法是将div的内部宽度确定为一定,并使用溢出规则)。

但是如果没有上述解决方案,那么任何ANY元素都会使我们超过该宽度,因此所有赌注都关闭了。该元素变得尽可能宽以容纳内容。

另外的技巧是将宽度值用任何引号括起来,以正确地嵌套该值(&lt;表宽度='300')。如果有人出现并将其更改为%,则它将忽略该%,否则。

不幸的是,我们总是很难在IE中中断没有"自然"中断的字符串,除非我们可以做一些通过代码将其中断的事情。

回答

另一个骇人听闻的选择,但对我而言唯一可行的选择,是该页面上的其他建议中没有一个是将textarea包装在具有固定表格布局的单个单元格表格中。

<table style="width:100%;table-layout:fixed"><tr><td>
<textarea style="width:100%">longstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstring</textarea>
</td></tr></table>