可以使用CSS3动画将光标更改为指针延迟吗?

时间:2014-09-11 18:43:21

标签: html css html5 css3

我有一个图像(当盘旋时)放大(使用CSS动画)。 该图像也是指向另一页的链接。

因此,如果光标指向'指针'访问者立即徘徊 - 看起来它只是动画效果 - 他们可能没有意识到它是一个超链接。

(现在它已经是2014年)有一个简单的方法,例如'过渡延迟'延迟光标更改,直到动画结束?

感谢。

4 个答案:

答案 0 :(得分:2)

不确定是否有办法使用纯CSS,这个解决方案包含jQuery。

在CSS

中设置光标类型
#image {
    cursor: default; //default is the "arrow"
}

然后使用jQuery在悬停时修改图像,并在动画完成时更改指针。

$("#image").hover(function(){
    $(this).animate({
        "width": 200,
        "height": 200,
     }, 1500 );   
     setTimeout(pointer, 1500);
});

function pointer() {
    $("#image").css('cursor', 'pointer'); //pointer is the "hand"
}

JS Fiddle Demo

答案 1 :(得分:2)

您可以使用Javascript来检测悬停转换结束时触发的transitionend事件。

MDN transitionend docs州:

  

当CSS转换完成时会触发transitionend事件。

因此,将侦听器绑定到元素,并相应地更改游标:

var element = document.getElementById("myDiv");
element.addEventListener("transitionend", function() {
    element.style.cursor = "pointer";
}, false);

答案 2 :(得分:1)

您可以使用JavaScript编写纯CSS CSS:

#image{
     cursor: default;
     transition: cursor 3s linear ;
}
#image:hover{
     cursor: pointer;
}

实际上CSS转换是针对数字样式进行的,但是当您使用它们来更改像光标(或文本对齐,显示,...)之类的内容时,它会突然改变该属性在你持续时间的中间你写的价值 因此,如果你设置3秒的时间,那么它将在1.5秒内正确地改变你的属性

答案 3 :(得分:0)

这对我有用。我使用jQuery和setTimeout在8毫秒后应用CSS类。

JavaScript:

  var timeoutRef; 
  var mySpan = $("span");
    
  mySpan.on("mouseover", function () {
      timeoutRef = setTimeout(function () {
        mySpan.addClass("help");
      }, 800);
    })
    .on("mouseout", function () {
      clearTimeout(timeoutRef);
      mySpan.removeClass("help");
    });

然后是CSS类:

span.help {
  cursor: help;
}