如何让我的猫头鹰旋转木马方向跟随鼠标滚轮方向

Posted

技术标签:

【中文标题】如何让我的猫头鹰旋转木马方向跟随鼠标滚轮方向【英文标题】:How can I make my owl carousel direction follow the mouse wheel direction 【发布时间】:2018-09-19 22:22:37 【问题描述】:

当我滚动鼠标滚轮时它会移动,但是当我改变滚动方向时它不会改变它的方向。 如何使我的猫头鹰旋转木马方向跟随鼠标滚轮方向? 当我滚动鼠标滚轮时它会移动,但是当我改变滚动方向时它不会改变它的方向。 ?

var owl = $('.owl-carousel');
owl.owlCarousel(
    loop: true,
    margin: 10,
    padding: 10,
    responsiveClass: true,
    rtl: false,
    stagePadding: 100,
    smartSpeed: 550,
    autoplay: true,
    autoplayTimeout: 1000,
    autoplayHoverPause: true,
    nav: true,
    responsiveClass: true,
    responsive: 
        0: 
            items: 1,
            nav: true
        ,
        600: 
            items: 3,
            nav: true
        ,
        1000: 
            items: 5,
            nav: true,
            
        
    
)
owl.on('mousewheel', '.owl-stage', function (e) 
    if (e.deltaY > 0) 
        owl.trigger('next.owl');
     else 
        owl.trigger('prev.owl');
    
    e.preventDefault();
);
html
            width: 100vw;
            background: linear-gradient(0deg,#aaaaaa,#f0f0f0) no-repeat;
        
    .demo-container
        margin-top: 5em;
        background: linear-gradient(0deg,#aaaaaa,#f0f0f0);
    
    .owl-carousel .owl-stage-outer
        overflow: visible;
    
    .sb-carousel-wrap 
    position: relative;
    margin-left: -15px;
    margin-right: -15px;
    z-index: 1;

.sb-carousel-wrap .brand-carousel-gradient 
    position: absolute;
    top: 0;
    width: 105px;
    height: 100%;
    z-index: 10;

.brand-carousel-gradient.left 
    left: 0;
    background-image: linear-gradient(to left, rgba(255, 255, 255, 0.0), #fbfbfb);

.brand-carousel-gradient.right 
    right: 0;
    background-image: linear-gradient(to right, rgba(255, 255, 255, 0.0), #fbfbfb);

.sb-car-img
	overflow: hidden;

.sb-car-img:hover img
     transform: scale(1.2);


.sb-itm-img  
  	transition: all 0.6s ease-in 0s;
	-webkit-transition:  all 0.6s ease-in 0s;
	-ms-transition:  all 0.6s ease-in 0s;

.my-slider
	float: left:
	width:100%;
	padding: 0 15px;
	overflow: hidden;
<div class="my-slider">
<div class="sb-carousel-wrap">
        <div class="brand-carousel-gradient left"></div>
        <div class="brand-carousel-gradient right"></div>
       <div class="demo-container">
         <div class="owl-carousel owl-theme">
    
            <div class="item">
                <div class="sb-car-img">
                    <img src="https://images.pexels.com/photos/923361/pexels-photo-923361.jpeg?auto=compress&cs=tinysrgb&h=350" class="sb-itm-img" >
                </div>
             </div>
            <div class="item">
                <div class="sb-car-img">
                    <img src="https://images.pexels.com/photos/923361/pexels-photo-923361.jpeg?auto=compress&cs=tinysrgb&h=350" class="sb-itm-img" >
                </div>
            </div>
            <div class="item">
                <div class="sb-car-img">
                    <img src="https://images.pexels.com/photos/923361/pexels-photo-923361.jpeg?auto=compress&cs=tinysrgb&h=350" class="sb-itm-img" >
                </div>
            </div>
            <div class="item">
                <div class="sb-car-img">
                    <img src="https://images.pexels.com/photos/923361/pexels-photo-923361.jpeg?auto=compress&cs=tinysrgb&h=350" class="sb-itm-img" >
                </div>
    
            </div>
            <div class="item">
                <div class="sb-car-img">
                    <img src="https://images.pexels.com/photos/923361/pexels-photo-923361.jpeg?auto=compress&cs=tinysrgb&h=350" class="sb-itm-img" >
                </div>
    
            </div>
            <div class="item">
                <div class="sb-car-img">
                    <img src="https://images.pexels.com/photos/923361/pexels-photo-923361.jpeg?auto=compress&cs=tinysrgb&h=350" class="sb-itm-img" >
                </div>
    
    
            </div>
            <div class="item">
                <div class="sb-car-img">
                    <img src="https://images.pexels.com/photos/923361/pexels-photo-923361.jpeg?auto=compress&cs=tinysrgb&h=350" class="sb-itm-img" >
                </div>
    
    
            </div>
    
        </div>
    </div>
    </div>
</div>
<link rel="stylesheet" type="text/css" href="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.carousel.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/owl.carousel.js"></script>

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。

在 Chrome 开发者工具 (F12) 中,使用日志检查滚轮事件:

console.log(e);

这将告诉您e.deltaY 不存在于事件对象中。但是,e.originalEvent 属性确实存在,并且e.originalEvent.deltaY 存在于此处。

因此,将回调更改为:

    ...
    if (e.originalEvent.deltaY > 0) 
    ...

滚动条现在应该可以在两个方向上正常工作了。

[编辑] 我考虑让它在 IE(11) 中工作。 IE11 显示了 Chrome 对象中不存在的滚轮事件对象属性e.originalEvent.wheelDelta,这可以与deltaY 一样使用。

在这种情况下,我们可以使用

    ...
    if (e.originalEvent.wheelDelta> 0) 
    ...

它应该可以在 Chrome 和 IE11 上运行。

为了在 Firefox 中也能正常工作,需要一个不同的回调事件 AND 属性:

回调是DOMMouseScroll,要测试的属性是e.originalEvent.detail,如下:

owl.on('DOMMouseScroll','.owl-stage',function(e)
    if (e.originalEvent.detail > 0)
        owl.trigger('next.owl');
     
    else 
        owl.trigger('prev.owl');
    
    e.preventDefault();
); 

作为旁注,我查看了 Owl 演示,它确实按照文档中的描述运行,使用 e.deltaY。

【讨论】:

【参考方案2】:

我有同样的问题。 要解决此问题,只需替换:

if (e.deltaY > 0) 

与:

if (e.originalEvent.deltaY>0)

【讨论】:

以上是关于如何让我的猫头鹰旋转木马方向跟随鼠标滚轮方向的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu17.10鼠标滚轮方向反了,请问咋解决

如何检测鼠标滚轮滚动的方向?

Qt笔记(十七)之鼠标滚轮事件方向

如何将图像(播放器)旋转到鼠标方向?

如果单独设置mac鼠标滚轮方向?

C ++中船动画的旋转