css 如何避免 Flink div由于显示和隐藏滚动条鼠标进入

slmsl1lt  于 2023-03-25  发布在  Flink
关注(0)|答案(4)|浏览(158)

我展示了一个鼠标悬停时的滚动条,它会在UI中产生 Flink 效果。谁能建议如何避免它?代码在这里

.parent {
        width:100%;
        max-height: 400px;
        overflow-y: hidden;
      }
     .parent:hover {
        overflow-y: scroll;
     }
     .table {
       width: 100%;
     }
<div class="parent">
   <table class="table">
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
    </table>
</div>
8aqjt8rx

8aqjt8rx1#

您有两种选择:
1.在右边添加一个与滚动条宽度相同大小的边距(我相信默认值是16px). margin-right: 16px
1.如果你不太关心跨浏览器兼容性,只要使用overflow: overlay就可以了

编辑:IE死了,所以我们现在都可以很高兴#2

xtfmy6hx

xtfmy6hx2#

首先,你可以添加CSS width:到滚动条。之后,添加到.parent{}宽度(从100%中减去滚动条宽度)。你可以使用CSS calc();函数来实现这一点。当你悬停父级时,添加CSS宽度100%。但是如果你想使用绝对100%的表宽度,有一个家伙通过jQuery解决了:https://stackoverflow.com/a/17380697/8660891 * 抱歉我的英语不好:)

::-webkit-scrollbar {
    width: 15px;
    padding:0px;
}
::-webkit-scrollbar-thumb {
  min-height:50px;
  background-color:#888;
  height: 50px;
}
::-webkit-scrollbar-track {
    background: #e3e3e3;
}
.parent {
        width:calc(100% - 15px);
        max-height: 200px;
        overflow-y: hidden;
      }
     
     .parent:hover {
        overflow-y: scroll;
        width: 100%;
     }
     .table {
       width: 100%;
     }
<div class="parent">
   <table class="table">
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
      <tr><td>Key</td><td>Value</td></tr>
    </table>
</div>
c8ib6hqw

c8ib6hqw3#

如果这个表是可滚动的,那么当用户将鼠标悬停在它上面时,它的糟糕UI实践只显示它是可滚动的(触摸设备呢?)
解决这个问题和 Flink 的最好方法是完全不隐藏滚动条,就像这样:

.parent {
        width:100%;
        max-height: 400px;
        overflow-y: scroll; // or overflow-y:auto; 
      }
     .table {
       width: 100%;
     }
b09cbbtk

b09cbbtk4#

使用这个技巧来解决这个问题:

.parent {
  width: 100%;
  max-height: 200px;
  overflow: auto;
  visibility: hidden;
}

.parent:hover,
.parent:focus {
  visibility: visible;
}

.child {
  visibility: visible;
}

.table {
  width: 100%;
}
<div class="parent">
  <div class="child">
    <table class="table">
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
      <tr>
        <td>Key</td>
        <td>Value</td>
      </tr>
    </table>
  </div>
</div>

相关问题