javascript - div 元素上的鼠标滚轮水平滚动

标签 javascript jquery html css

我尝试在用户使用鼠标滚轮时在 div 元素上创建水平滚动。

这是截图:

enter image description here

这是我的 div 的代码:

<div id="contact_list">
            <ul>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
                <li>
                    <img src="/img/img_example.jpg" class="img_contact_area" />
                    <div class="contact_presence"></div>
                </li>
        </div>

我在我的 JS 中使用鼠标滚轮插件如下:

$("#contact_list").mousewheel(function(event, delta, deltaX, deltaY) {
    var o = '';
    if (deltaY > 0){
                      $("#contact_list").animate({scrollRight : '-=200'}, 'slow');
                              }
    else if (deltaY < 0){
                              $("#contact_list").animate({scrollRight :'+=200'}, 'slow');
                 }

});

但是没有效果,因为我使用了 JS 代码,所以可以很好地检测到滚动,但是 delta 始终等于 -1..

我的代码或任何其他解决方案在我的元素上进行水平滚动时是否存在问题?

这是 CSS:

#contact_list ul {
    list-style-type: none;
    white-space:nowrap;
    overflow-x:auto;
}

#contact_list ul li {
    display:inline;
}

最佳答案

如果 contact_list 只有水平滚动条,则鼠标滚轮将使用它。我的猜测是您对元素应用了一种样式,这完全阻止了它显示滚动条,这就是滚轮不起作用的原因。首先,让浏览器呈现一个滚动条,看看它是否能正常工作。

如果父容器有滚动条,事情就会变得困惑,所以尽量避免这种情况。

[编辑] 您还应该看看这个答案:https://stackoverflow.com/a/22518932/34088如何绑定(bind)到原始事件并找出增量。请注意,此代码在很大程度上依赖于浏览器。

我认为主要问题是如果DOM节点没有滚动条:如果没有,那么浏览器就不能滚动它,所以mousewheel事件会一直报“I moved the element 0 像素”。在此处输入代码

相关:

关于javascript - div 元素上的鼠标滚轮水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584722/

相关文章:

javascript - 在 Rails 中自动提交 HTML 选择下拉列表

Jquery DataTable - 在 ajax 之前处理并针对条件禁用 ajax 的函数

jquery - 单击正文,但其他一些标签不起作用

当某些 CSS 类在输入字段上时,Javascript 将不会运行

javascript - 如何使用javascript HTML5 canvas绘制通过N个点的曲线?

java - 使用 Tapestry 4.0.1 在 @For 循环中显示 javascript/css 工具提示

javascript - ng-repeat 被注释并且不显示 JSON 对象的结果

带边框的 HTML 样式

javascript - 为什么 border-radius 会导致 Chrome 中按钮的样式发生巨大变化?

javascript - d3js 删除元素的过渡