如何设置水平和垂直固定位置

时间:2019-12-11 11:05:52

标签: javascript html css

我实际上有一个问题。我正在为我的大学开发一个网站。

顶部有一个典型的标题。该标头下方是一个div,它具有一些过滤功能,可以过滤位于下方的表格。

该表通常非常大。因此,有时必须在两个方向(水平和垂直)上滚动。如果要滚动,则标题应保持其位置。在标题和过滤器div之间有一个标题。该标题应该隐藏。

过滤器应稍微移到顶部,然后保持在页眉下方。为此,我使用了position: sticky。这很好。

但是,如果我向右滚动,则滤镜会移出视口。

那么过滤器div是否有垂直粘性,并保持水平在其固定位置?

这是我的问题的一个例子:

body {
  height: 100%;
  display: block;
}
.header {
  background-color: red;
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  z-index: 1;
}

.body {
  padding-top: 20px;
  width: 100%;
  height: 100%;
}

.filter {
  display: flex;
  flex-direction: row;
  align-items: center;
  background-color: blue;
  width: 100%;
  position: sticky;
  position: -webkit-sticky;
  top: 20px;
  z-index: 1;
}



th {
  width: 200px;
  background-color: purple;
  position: sticky;
  top: 40px;
}

td {
  width: 200px;
  background-color: lightblue;
}

table {
  position: relative;
  border-collapse: collapse;
  width: 1500px;
}
<html>
<body>
<div class="header">
Header
</div>
<div class="body">
  <h2>
    Headline
  </h2>
  <div class="filter">
    Filters
  </div>
  <span>some text</span>
  <div class="table">
    <table>
      <thead>
        <tr>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
          <th>a</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
        <tr>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
          <td>b</td>
        </tr>
      </tbody>
    </table>
  </div>
</div>
</body>
</html>

因此,当我水平滚动时,我不想失去垂直的粘性行为。我想同时使用粘性垂直和水平固定。

4 个答案:

答案 0 :(得分:1)

您可以使用简单的CSS修复此问题。下面的代码

.filter {位置:固定;顶部:76像素;}

答案 1 :(得分:1)

对于那些感兴趣的人:

我已经完成了!解决的办法是设置一个特定的宽度。不是100%的相对宽度。

谢谢大家的帮助。

答案 2 :(得分:0)

overflow-x: auto;类添加body,并为top: 20px; left: 0;类设置filter

希望这是您正在寻找的解决方案。

body {
  height: 100%;
  display: block;
}
.header {
  background-color: red;
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  z-index: 1;
}

.body {
  padding-top: 20px;
  width: 100%;
  height: 100%;
  overflow-x: auto;
}

.filter {
  display: flex;
  flex-direction: row;
  align-items: center;
  background-color: blue;
  width: 100%;
  position: sticky;
  position: -webkit-sticky;
  top: 20px;
  left: 0;
  z-index: 1;
}



th {
  width: 200px;
  background-color: purple;
  position: sticky;
  top: 40px;
}

td {
  width: 200px;
  background-color: lightblue;
}

table {
  position: relative;
  border-collapse: collapse;
  width: 1500px;
}
<body>
  <div class="header">
  Header
  </div>
  <div class="body">
    <h2>
      Headline
    </h2>
    <div class="filter">
      Filters
    </div>
    <span>some text</span>
    <div class="table">
      <table>
        <thead>
          <tr>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
            <th>a</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
          <tr>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
            <td>b</td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</body>

答案 3 :(得分:0)

我刚刚添加了一点CSS,一切正常:)

.table {
   overflow-x:auto;
}