jquery重置边框动画

发布于 2024-12-26 07:08:18 字数 1285 浏览 3 评论 0原文

我有一个带有 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

峩卟喜欢 2025-01-02 07:08:18

您需要防止动画排队

jQuery(".products-two").mouseenter(
    function(){
        jQuery(this).stop(true,true).animate({borderColor: '#999999'},400);
    }).mouseleave(
    function(){
        jQuery(this).stop(true,true).animate({borderColor: '#E6E6E6', queue: false}, 800);
    }
    );

You need to prevent the animation from queueing.

jQuery(".products-two").mouseenter(
    function(){
        jQuery(this).stop(true,true).animate({borderColor: '#999999'},400);
    }).mouseleave(
    function(){
        jQuery(this).stop(true,true).animate({borderColor: '#E6E6E6', queue: false}, 800);
    }
    );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文