【问题标题】:Overflow of a table hidden?隐藏的表溢出?
【发布时间】:2013-05-08 01:13:08
【问题描述】:

我在这里要做的是在 最大宽度为 300 像素的 div 中创建一个带有 Javascript(成功)的表格。

现在,如果我的表格宽度超过 300 像素,我希望隐藏 溢出,但是即使我将 <td> 设置为是不同的宽度:

<style>
#tablespace {
margin:auto;
position:relative;
width:300px;
overflow:hidden;    
}
</style>

<button onclick="CreateTable()" >Try it</button>
<div id="tablespace">
   <p id="tablespace"> </p>
</div>

<script>
function CreateTable()
{
    var tablecontents = "";
    tablecontents = "<table border=1>";
//number of rows
for (var i = 0; i < 3; i ++)
{ 
tablecontents += "<tr>";
//number of columns
    for (var a = 0; a < 5; a ++)
    {
      tablecontents += "<td height= 50, width= 100>" + i + "</td>";      
    }
    tablecontents += "</tr>";
}
tablecontents += "</table>";
document.getElementById("tablespace").innerHTML = tablecontents;
}
</script>

所以我使用单元格的高度为 50 像素和宽度为 100 像素,因为我的 div 的最大宽度为 300 像素,我应该只看到 2 个半单元格,然后其余的单元格被隐藏,但事实并非如此。

我知道这可能是一个基本错误,但我不知道。

【问题讨论】:

    标签: javascript css html-table overflow


    【解决方案1】:

    在表格单元格上使用min-width

    演示: http://jsfiddle.net/jUqvj/

    快速示例:

    CSS:

    div {
        max-width: 300px;
        border: 1px solid #f00;
        overflow: hidden;
    }
    #table1 td {
        min-width: 100px;
        border: 1px solid #0ff;
    }
    #table2 td {
        width: 100px; /* here it's not effective as desired */
        border: 1px solid #0ff;
    }
    

    HTML:

    <pre>With min-width on table cells</pre>
    <div>
        <table id="table1">
            <tr>
                <td>Col1</td>
                <td>Col2</td>
                <td>Col3</td>
                <td>Col4</td>
            </tr>
            <tr>
                <td>Col1</td>
                <td>Col2</td>
                <td>Col3</td>
                <td>Col4</td>
            </tr>
            <tr>
                <td>Col1</td>
                <td>Col2</td>
                <td>Col3</td>
                <td>Col4</td>
            </tr>
        </table>
    </div>
    <hr><br>
    <pre>Without min-width on table cells</pre>
    <div>
        <table id="table2">
            <tr>
                <td>Col1</td>
                <td>Col2</td>
                <td>Col3</td>
                <td>Col4</td>
            </tr>
            <tr>
                <td>Col1</td>
                <td>Col2</td>
                <td>Col3</td>
                <td>Col4</td>
            </tr>
            <tr>
                <td>Col1</td>
                <td>Col2</td>
                <td>Col3</td>
                <td>Col4</td>
            </tr>
        </table>
    </div>
    

    【讨论】:

      【解决方案2】:

      尝试改变这个(我不知道这实际上是否已经在代码中):

      tablecontents += "<td height= 50, width= 100>" + i + "</td>";
      

      tablecontents += '<td height="50px", width="100px">' + i + "</td>";
      

      顺便说一句,我建议跳过所有这些 HTML3 参数,并通过单独的 CSS 类来完成所有这些操作

      tablecontents += '<td class='croppedTable'>' + i + "</td>";
      

      <style>
      #tablespace {
      margin:auto;
      position:relative;
      width:300px;
      overflow:hidden;    
      }
      
      .croppedTable {
      ... some styles ...
      }
      .croppedTable TD {
      ... some additional styles ...
      width: 100px;
      height: 50px;
      
      }
      </style>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-03
        • 1970-01-01
        • 2014-03-25
        • 2017-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多