jquery重置边框动画
我有一个带有 1px 实心边框的 div。我想用 jquery 给它一个边框颜色动画。这是我的代码;
//Products border motion
jQuery(".products-two").mouseenter(
function(){
jQuery(this).stop(true,true).animate({borderColor: '#999999'},400);
}).mouseleave(
function(){
jQuery(this).stop(true,true).animate({borderColor: '#E6E6E6'}, 800);
}
);
我还从 ; 导入 ui 类
http://ajax.googleapis.com/ajax/libs/jqueryui /1.8/jquery-ui.js
我的问题是;
当 mouseleave 函数起作用时,它首先删除边框,然后更改边框颜色。这并不能提供平滑的运动。我应该怎么办?
更新 - 我还更改了运动时间,现在意识到当鼠标进入时也会发生这种情况。它首先删除边框,然后添加边框并更改其颜色。
解决方案 - 由于我无法回答我的问题,我想与其他可能感兴趣的人分享解决方案。
我猜这是关于 jquery ui 类的错误。因为当我使用具有默认边框属性的常规 jquery 库时,它可以工作。我跳过了这个 ui 方法并将其用作临时解决方案。
//Products border motion
jQuery(".products-two").mouseenter(
function(){
jQuery(this).stop().animate({borderTopColor:'#999999', borderBottomColor:'#999999',borderLeftColor:'#999999',borderRightColor:'#999999'},400);
}).mouseleave(
function(){
jQuery(this).stop().animate({borderTopColor:'#E6E6E6', borderBottomColor:'#E6E6E6',borderLeftColor:'#E6E6E6',borderRightColor:'#E6E6E6'},400);
}
);
I have a div with 1px solid border. and I want to give it a border color animation with jquery. Here is my code ;
//Products border motion
jQuery(".products-two").mouseenter(
function(){
jQuery(this).stop(true,true).animate({borderColor: '#999999'},400);
}).mouseleave(
function(){
jQuery(this).stop(true,true).animate({borderColor: '#E6E6E6'}, 800);
}
);
I also import ui class from ;
http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.js
My problem is;
When mouseleave function works, it removes the border first, then it changes the border color. And that doesn't give a smooth motion. What should I do?
UPDATE - I also changed motion time and now realized it's also happening when mouse enters. It removes the border first, then it adds the border and changes its color.
SOLUTION - Since I can not answer my questions I wanted share the solution for others who may interest.
I guess this is a bug about jquery ui class. Because when I use regular jquery library with default border properties it works. I skipped this ui method and used this as a temp solution.
//Products border motion
jQuery(".products-two").mouseenter(
function(){
jQuery(this).stop().animate({borderTopColor:'#999999', borderBottomColor:'#999999',borderLeftColor:'#999999',borderRightColor:'#999999'},400);
}).mouseleave(
function(){
jQuery(this).stop().animate({borderTopColor:'#E6E6E6', borderBottomColor:'#E6E6E6',borderLeftColor:'#E6E6E6',borderRightColor:'#E6E6E6'},400);
}
);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要防止动画排队。
You need to prevent the animation from queueing.