文本框设置100%宽度,内容过多时所在td的宽度失效

最近在修改项目的一个需求变更时,无意间发现了以前的一个问题,

这里拿出来讨论,可能在其他项目中没有碰到这样的需求或者无意中规避了这个问题

也或许已经有html&CSS高手把问题解决,都请来分享一下经验:

问题描述如下

因为客户不太懂技术,把上述td的宽度设置了百分比,然后为了好看又把里面的文本框也设置了width:100%,想让他自适应

更改之后变成这样

 1 <html>
 2     <head>
 3
 4     </head>
 5     <body>
 6         <table style="background-color:green;width:100%">
 7             <tr>
 8                 <th style="width:20%;background-color:red">th1</th>
 9                 <td style="width:30%;background-color:yellow">
10                     <input type="text" style="width:100%" maxlength="100" value="">
11                 </td>
12                 <th style="width:30%;background-color:red">th2</th>
13                 <td style="width:20%;background-color:yellow">
14                     <input type="text" maxlength="100" style="width:100%" value="">
15                 </td>
16             </tr>
17         </table>
18         <table style="background-color:white;width:100%">
19             <tr>
20                 <th style="width:20%;background-color:red">th1</th>
21                 <td style="background-color:yellow">
22                     <input type="text" maxlength="100" style="width:100%" value="">
23                 </td>
24
25             </tr>
26             <tr>
27                 <th style="width:20%;background-color:red">th1</th>
28                 <td style="background-color:yellow">
29                     <input type="text" maxlength="100" style="width:100%" value="">
30                 </td>
31
32             </tr>
33             <tr>
34                 <th style="width:20%;background-color:red">th1</th>
35                 <td style="background-color:yellow">
36                     <input type="text" maxlength="20" style="width:100%" value="">
37                 </td>
38
39             </tr>
40             <tr>
41                 <th style="width:20%;background-color:red">th1</th>
42                 <td style="background-color:yellow">
43                     <input type="text" maxlength="20" style="width:100%" value="">
44                 </td>
45
46             </tr>
47             <tr>
48                 <th style="width:20%;background-color:red">th1</th>
49                 <td style="background-color:yellow">
50                     <input type="text" maxlength="20" style="width:100%" value="">
51                 </td>
52
53             </tr>
54         </table>
55     </body>
56 </html>

因为是老代码,这个画面恶心的地方首先是第一行和下面的各行不在一个table里,

图中的这个文本框对应的数据库表对应的字段是一个100位英文内容,如果满位输出的话,画面变成了这样。。。

 1 <html>
 2     <head>
 3
 4     </head>
 5     <body>
 6         <table style="background-color:green;width:100%">
 7             <tr>
 8                 <th style="width:20%;background-color:red">th1</th>
 9                 <td style="width:30%;background-color:yellow">
10                     <input type="text" style="width:100%" maxlength="100" value="0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789">
11                 </td>
12                 <th style="width:30%;background-color:red">th2</th>
13                 <td style="width:20%;background-color:yellow">
14                     <input type="text" maxlength="100" style="width:100%" value="">
15                 </td>
16             </tr>
17         </table>
18         <table style="background-color:white;width:100%">
19             <tr>
20                 <th style="width:20%;background-color:red">th1</th>
21                 <td style="background-color:yellow">
22                     <input type="text" maxlength="100" style="width:100%" value="">
23                 </td>
24
25             </tr>
26             <tr>
27                 <th style="width:20%;background-color:red">th1</th>
28                 <td style="background-color:yellow">
29                     <input type="text" maxlength="100" style="width:100%" value="">
30                 </td>
31
32             </tr>
33             <tr>
34                 <th style="width:20%;background-color:red">th1</th>
35                 <td style="background-color:yellow">
36                     <input type="text" maxlength="20" style="width:100%" value="">
37                 </td>
38
39             </tr>
40             <tr>
41                 <th style="width:20%;background-color:red">th1</th>
42                 <td style="background-color:yellow">
43                     <input type="text" maxlength="20" style="width:100%" value="">
44                 </td>
45
46             </tr>
47             <tr>
48                 <th style="width:20%;background-color:red">th1</th>
49                 <td style="background-color:yellow">
50                     <input type="text" maxlength="20" style="width:100%" value="">
51                 </td>
52
53             </tr>
54         </table>
55     </body>
56 </html>

目测,这个文本框因为有一个maxlength=100,的设置,ie试图在允许的范围下,把内容全部显示,但是这样的话,画面就乱了,

测试环境是:IE 9,IE 8下也存在该问题,在chrome下完美解析,如下图:

所以据此推测是IE在解析INPUT上和chrome内核不太一致,但是现在开发是在IE8上进行,除了设置固定width和使用Js动态加载,有没有别的办法来兼容解决问题。。。

注:style=“table-layout:fixed”我用过了,但是这个办法有点狠,不太适合

时间: 2024-08-04 16:32:18

文本框设置100%宽度,内容过多时所在td的宽度失效的相关文章

.Net常用技巧_TextBox文本框限制输入的内容

1,限制只能输入数字 private void txtSize_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar != 8 && e.KeyChar != 13 && !char.IsDigit(e.KeyChar) && e.KeyChar != 46) { MessageBox.Show("请输入数字"); e.Handled = true; } } 2,限制只能

将文本框设置为只读和不可用状态

将文本框设置为只读和不可用状态: 本章节通过实例代码介绍一下如何将文本框设置为只读或者不可用状态,当然比较简单的操作,希望能够对初学者能够带来一定的帮助,代码实例如下: <input type="text" value="蚂蚁部落" readonly/><br/> <input type="text" value="蚂蚁部落" disabled/> 关于只读和不可用的区别可以参阅标签的rea

PPT文本框设置实用技巧分享

我们在制作PPT的过程中,几乎都要与文字打交道,文字一般都是在插入的文本框中输入的,通过输入文本框默认的文字与边框的距离,可以是文本框显得更加的美观:那么,具体是怎样操作的呢?下面将方法告诉大家! 主要有4个方法: 设置文本框间距.设置对齐方式.设置字符间距.设置行距.具体如下: 1.设置文本框间距 鼠标选中形状,然后右键-设置形状格式-文本框-左右上下边距设置为:0厘米. 2.设置对齐方式 鼠标选中形状-点击开始选项卡-选择两端对齐. 3.设置字符间距 鼠标选中形状-点击开始选项卡-字符间距-

input文本框设置移除默认内容(兼容IE低版本)

这里实现的目标是:设置和移除文本框的默认值,鼠标放上去,文字消失 HTML代码如下: JS实现方式如下: <input type="text" class="search" value="请输入关键字进行搜索" id="menu_search" onfocus='if(this.value=="请输入关键字进行搜索"){this.value="";};' onblur='if(th

对文本框中输入的内容放大显示和格式化

在最近做的项目中,发现用户在输入手机号.身份证或者银行卡这些重要的数据的时候,文本框显示的文字不是非常大,也不是非常明显的显示给用户. 往往这些重要数据用户都需要核对好几次,在确保正确无误的时候才敢点击保存,这样总会浪费一点时间,对用户的体验也不是非常友好,如果我们能在用户输入框的上面对输入的内容进行放大.颜色突出并且按照不同的分隔显示,是不是这样更能便于用户快速的核实数据呢. 于是自己利用业务时间就动手封装了一个小插件: 第一步:创建一个样式表sytle.css 1 @charset "utf

HTML input文本框设置和移除默认值

这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: <input id="keyword" name="keyword" size="10" class="inputstyle keywords" value="请输入关键字进行搜索" onfocus='if(this.value==&qu

input文本框设置和移除默认值

这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: [html] view plain copy <input id="keyword" name="keyword" size="10" class="inputstyle keywords" value="请输入关键字进行搜索" onfo

js同步获取文本框textarea输入的内容

<textarea name="" cols="" rows="" class="loe_hk10" id="eml" onkeyup="SwapTxt()"></textarea>   <p id="lyny"> </p><!--//这个地方是同步显示内容的 --> <script type=&quo

js中input文本框设置和移除默认值

这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: [html] view plain copy <input id="keyword" name="keyword" size="10" class="inputstyle keywords" value="请输入关键字进行搜索" onfo