宽度为100%的textarea会忽略IE7中父元素的宽度
我在表中有以下文本区域:
<table width="300"><tr><td> <textarea style="width:100%"> longstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstring </textarea> </td></tr></table>
在textarea中使用长字符串,textarea可以扩展以容纳IE7中的一行,而在其他浏览器中则保留300px的宽度。
关于如何在IE中解决此问题的任何想法?
解决方案
回答
你试过了吗...
溢出:隐藏;
??
我不确定它是否应该在textarea的表中...尝试一下
回答
或者,如何:
overflow: scroll;
编辑:
我实际上对此进行了测试。我认为这种行为是因为表格的宽度在表格上,我相信(我对此无能为力)我很早以前就读过,表格的宽度是建议的宽度,但是可以扩展以容纳表格的内容。没有把握。我知道如果我们使用<DIV>
而不是表,它会工作。另外,如果将300像素宽度应用于包含的<TD>元素,而不是<TABLE>元素,则它也可以正常工作。另外," overflow:scroll"什么也没做! :P
好的,时髦的IE行为,可以肯定!
回答
IE也支持word-break
CSS 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:
用<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元素都会使我们超过该宽度,因此所有赌注都关闭了。该元素变得尽可能宽以容纳内容。
另外的技巧是将宽度值用任何引号括起来,以正确地嵌套该值(<表宽度='300'
)。如果有人出现并将其更改为%,则它将忽略该%,否则。
不幸的是,我们总是很难在IE中中断没有"自然"中断的字符串,除非我们可以做一些通过代码将其中断的事情。
回答
另一个骇人听闻的选择,但对我而言唯一可行的选择,是该页面上的其他建议中没有一个是将textarea包装在具有固定表格布局的单个单元格表格中。
<table style="width:100%;table-layout:fixed"><tr><td> <textarea style="width:100%">longstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstringlongstring</textarea> </td></tr></table>