【发布时间】:2015-07-27 13:02:48
【问题描述】:
我有可滚动列表,只想通过悬停来显示滚动条,但我也希望能够通过 first touch 在移动浏览器(iOS、Android)上的列表上滚动——总是像列表一样的行为有overflow-y: auto。我尝试使用此代码(http://codepen.io/sergdenisov/pen/RPazyg):
HTML:
<ul class="list js-list">
<li>Test Test Test Test Test Test Test Test Test</li>
...
<li>Test Test Test Test Test Test Test Test Test</li>
</ul>
CSS:
.list {
-webkit-overflow-scrolling: touch;
padding: 0 30px 0 0;
overflow: hidden;
height: 300px;
width: 300px;
background: gray;
list-style: none;
}
.list_scrollable {
overflow-y: auto;
}
Javascript:
$('.js-list').on({
'mouseenter touchstart': function() {
$(this).addClass('list_scrollable');
},
'mouseleave touchend': function() {
$(this).removeClass('list_scrollable');
}
});
但移动浏览器上的滚动功能只能通过在滚动前额外点击列表来激活。有什么想法吗?
【问题讨论】:
-
尝试
mouseover而不是mouseenter -
想想你为什么要这样做。现在想想那里有很多人实际上使用滚动条来滚动。如果没有滚动条供他们查看,他们将如何滚动您的内容?
-
请记住,ALL 演示代码(HTML、CSS、JS)只是建议。浏览器或足够熟练的用户可以随意忽略您的任何格式。正如@NiettheDarkAbsol 所说,这对您的用户有什么价值?如果你不能回答,那就不要这样做。
-
@Vinc199789 有什么区别?
touchstart在mouseenter和mouseover之前触发,通常在移动浏览器上——patrickhlauke.github.io/touch/tests/results。 -
@NiettheDarkAbsol 是的,我想过。这不是我的愿望,但我公司的设计师想要这种行为。我正在寻找它的可能性,也许我不会这样做。
标签: javascript jquery html css scroll