【问题标题】:How to have the first column fixed and the rest of the columns to scroll horizontally如何固定第一列,其余列水平滚动
【发布时间】:2016-07-01 04:47:47
【问题描述】:

我可以添加滚动条,但我面临的问题是当标题太大时,标题溢出并且没有崩溃。我希望标题文本分解到下一行,其余列的高度应与标题相同。

HTML:

<div id="outerdiv">
    <div id="innerdiv">
        <table>
            <tr>
                <td class="headcol">Big Rowwwww1</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">2</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">3</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">4</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">5</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">6</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">7</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">8</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
            <tr>
                <td class="headcol">9</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
                <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            </tr>
        </table>
    </div>
</div>

CSS:

 body {
        font:16px Calibri;
    }
    table {
        border-collapse:separate;
        border-top: 3px solid grey;
    }
    td {
        margin:0;
        border:3px solid grey;
        border-top-width:0px;
        white-space:nowrap;
    }
    #outerdiv {
        position: absolute;
        top: 0;
        left: 0;
        right: 5em;
    }
    #innerdiv {
        width: 100%;
        overflow-x:scroll;
        margin-left: 5em;
        overflow-y:visible;
        padding-bottom:1px;
    }
    .headcol {
        position:absolute;
        width:5em;
        left:0;
        top:auto;
        border-right: 0px none black;
        border-top-width:3px;
        /*only relevant for first row*/
        margin-top:-3px;
        /*compensate for top border*/
    }
    .headcol:before {
        content:'Row ';
    }
    .long {
        background:yellow;
        letter-spacing:1em;
    }

当前的工作代码在小提琴链接下面 http://jsfiddle.net/DYgD6/693/

【问题讨论】:

标签: html css


【解决方案1】:

body {
  font: 16 px Calibri;
}
table {
  border - collapse: separate;
  border - top: 3 px solid grey;
}
td {
  margin: 0;
  border: 3 px solid grey;
  border - top - width: 0 px;
  /*white-space:nowrap;*/
  height: 80 px;
}#
outerdiv {
  position: absolute;
  top: 0;
  left: 0;
  right: 5e m;
}#
innerdiv {
  width: 100 % ;
  overflow - x: scroll;
  margin - left: 5e m;
  overflow - y: visible;
  padding - bottom: 1 px;
}
.headcol {
  position: absolute;
  width: 5e m;
  left: 0;
  top: auto;
  border - right: 0 px none black;
  border - top - width: 3 px;
  /*only relevant for first row*/
  margin - top: -3 px;
  /*compensate for top border*/
  word - wrap: break -word;
}
.headcol: before {
  content: 'Row ';
}
.long {
  background: yellow;
  letter - spacing: 1e m;
}
<div id="outerdiv">
   <div id="innerdiv">
      <table>
         <tr>
            <td class="headcol">Big Rowwwww1</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">2</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">3</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">4</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">5</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">6</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">7</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">8</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
         <tr>
            <td class="headcol">9</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
            <td class="long">QWERTYUIOPASDFGHJKLZXCVBNM</td>
         </tr>
      </table>
   </div>
</div>

我对您现有的 css 做了一些更改,请查看相同的内容并尝试以下操作:

        body {
        font:16px Calibri;
    }
    table {
        border-collapse:separate;
        border-top: 3px solid grey;
    }
    td {
        margin:0;
        border:3px solid grey;
        border-top-width:0px;
        /*white-space:nowrap;*/
        height:80px;
    }
    #outerdiv {
        position: absolute;
        top: 0;
        left: 0;
        right: 5em;
    }
    #innerdiv {
        width: 100%;
        overflow-x:scroll;
        margin-left: 5em;
        overflow-y:visible;
        padding-bottom:1px;
    }
    .headcol {
        position:absolute;
        width:5em;
        left:0;
        top:auto;
        border-right: 0px none black;
        border-top-width:3px;
        /*only relevant for first row*/
        margin-top:-3px;
        /*compensate for top border*/
        word-wrap: break-word;
    }
    .headcol:before {
        content:'Row ';
    }
    .long {
        background:yellow;
        letter-spacing:1em;
    }

【讨论】:

  • 谢谢。但我认为高度不应该是固定的。我希望高度自动更新为行中的最高高度。我们不能这样做吗?
  • 据我所知,如果您使用 .headcol { position:absolute;},您将无法获得所需的输出。一旦你将使用位置:相对;它会起作用的。但这会违反您所需的其他功能。对不起:(
猜你喜欢
  • 2020-12-22
  • 2011-03-25
  • 2011-10-25
  • 2014-03-07
  • 2017-05-23
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
相关资源
最近更新 更多