【问题标题】:Fixed width on second td in editable table可编辑表中第二个 td 的固定宽度
【发布时间】:2014-10-29 05:58:37
【问题描述】:

我想为我的可编辑表格设置一个固定宽度,但我也想为每个 TD 设置不同的宽度。 在我的尝试中,我能够将表格设置为固定宽度,但这会导致 TD 的宽度看起来是 50%,而不是设置固定宽度之前的 80% - 20%

CSS

table {
  margin: 15px 0;
  border: 1px solid black;
  table-layout: fixed;
  width: 100%;
}
.fixed td:nth-of-type(1) {width:20%;}
.fixed td:nth-of-type(2) {width:80%; text-align: left;}
.fixed {
margin:0px;padding:0px;
width:100%;

    border:1px solid #000; }
.fixed td {
margin:0px;padding:0px;
width:100%;
    border:1px solid #000; }

HTML

<div class="fixed" contenteditable="true">
<table>
    <tbody>
<tr>
            <td colspan="2">Header:</td>

</tr>
        <tr>
            <td>Name:</td>
            <td><br/></td>
</tr>
        <tr>
            <td>DOB::</td>
            <td><br/></td>
</tr>
        <tr>
            <td>Comments:</td>
            <td><br/></td>
</tr>

        </table>

我错过了什么?检查this Fiddle 是否有帮助。通过键入足够的内容来尝试一下,在某个点之后它会自动转到下一行。

【问题讨论】:

    标签: html css html-table contenteditable


    【解决方案1】:

    您的代码的问题是您的第一个&lt;tr&gt; 拥有colspan="2"。因此,当您为表的所有 TD 提供 width:100% 时,css 不会按您的意愿应用于基础 TD。

    您的解决方案是将 Header td: &lt;td colspan="2"&gt;Header:&lt;/td&gt; 分离到一个单独的表中(请参阅下面的 HTML-1) 将底层 TD 放在与标头相同的 TR 中(请参阅下面的 HTML-2)。

    还像我在下面所做的那样更改 CSS 并简化它。你写了很多不必要的 CSS。

    Working Fiddle Here

    这是我尝试过的。试试这个:

    HTML-1:

    <table class="fixed" >
        <tbody>
        <tr>
            <td colspan="2">Header:</td>
        </tr>
        </tbody>
    </table>
    <table  class="fixed" >
        <tbody>
        <tr>
            <td>Name:</td>
            <td>test</td>
        </tr>
        <tr>
            <td>DOB::</td>
            <td>tes</td>
        </tr>
        <tr>
            <td>Comments:</td>
            <td>test</td>
        </tr>
    </table>
    

    HTML-2:

    <table class="fixed" >
    <tbody>
      <tr>
            <td colspan="2">Header:</td>
        <tr>
            <td>Name:</td>
            <td>test</td>
        </tr>
        <tr>
            <td>DOB::</td>
            <td>tes</td>
        </tr>
        <tr>
            <td>Comments:</td>
            <td>test</td>
        </tr>
     </tr>
    </tbody>
    </table>
    

    简化的 CSS:

    table {
      margin: 0 0;
      width: 100%;
      table-layout: fixed;
    }
    
    .fixed td:nth-of-type(1) {width:80%;}
    .fixed td:nth-of-type(2) {width:20%; text-align: left;}
    
    .fixed td {
    margin:0px;padding:0px;
    border:1px solid #000; }
    

    【讨论】:

    • 谢谢,感谢您的回复。但是,这也是我被卡住的地方,这使我可以将表格宽度更改为 80% - 20%,但这并不是真正的固定宽度。如果您想测试,请在第二个 td 中输入您可以输入的所有信息,并看到它永远持续下去,并且不会停下来转到下一行。我更新了,所以你可以在这里测试Fiddle
    • @Twaret 我已经更新了我的答案。看看这对你有没有帮助。
    • @Twaret 至于信息文本永远持续,它会发生,因为您的表格是 100% 宽度。如果你想要真正的固定宽度,那么你应该给表格一个确定的宽度,而不是 100%。将表格宽度设为 500 像素或 700 像素。如果您给 100% 将始终占用屏幕尺寸或父元素的 100% 宽度,并且它将继续扩大宽度直到屏幕尺寸。
    • @Twaret 如果对您有用,请勾选并接受此答案。
    • @Twaret 很高兴我能帮上忙。并使用简化的 css。最好有一个更简单、更干净的代码
    【解决方案2】:

    您的 html 语法有错误,尽管这与问题无关。 看看你是否需要像this fiddle 这样的东西。

    table {
      margin: 15px 0;
      border: 1px solid black;
      
      width: 100%;
    }
    .fixed td:nth-of-type(1) {width:20%;}
    .fixed td:nth-of-type(2) {width:80%; text-align: left;}
    .fixed {
    margin:0px;padding:0px;
    width:100%;
    
        border:1px solid #000; }
    .fixed td {
    margin:0px;padding:0px;
    width:100%;
        border:1px solid #000; }
    <div class="fixed" contenteditable="true">
    <table>
    	<tbody>
    <tr>
    			<td colspan="2">Header:</td>
    			
    </tr>
    		<tr>
    			<td>Name:</td>
    			<td><br/></td>
    </tr>
    		<tr>
    			<td>DOB::</td>
    			<td><br/></td>
    </tr>
    		<tr>
    			<td>Comments:</td>
    			<td><br/></td>
    </tr>
        </tbody>	
        </table></div>

    否则,您将无法实现可变 td 宽度,因为所有 td 在列中将具有相同的宽度。 您可以使用 colspan 属性来解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-27
      • 2012-11-18
      • 2017-03-13
      • 2011-10-03
      • 2013-12-24
      • 2013-03-03
      • 2011-01-06
      • 2011-10-24
      相关资源
      最近更新 更多