2012-03-26 36 views
1

我想要做的是,当用户点击的东西:我怎样才能简单地在表单上绕一个矩形?

<div id="FormContainer"> 
    <form> 
    ... 
    </form> 
</div> 

<a href="#" onClick="FlashElement()">Make it flash</a> 

这短暂闪烁的FormContainer内周围形成一个矩形。有什么办法可以做到这一点?

+0

如果您正在使用jQuery只是用动画的方法,从一些色彩动画到其正常的颜色,所以它看起来像闪烁。 – Francisc 2012-03-26 21:26:51

+0

你可以使用js/jquery在元素上放置边框 - vs透明或白色边框?有些插件可以让我知道如果你不得不淡化它的颜色。 – mikevoermans 2012-03-26 21:28:41

+2

@Francisc:jQuery不会将框中的颜色动画化。他还需要jQueryUI才能完成这项工作。只是为了这个简单的任务,这完全是过度的,他会尽最大努力自己写一个有点动画的函数。 – jAndy 2012-03-26 21:31:22

回答

1

一个快速和简单的方法是将绘制彩色边框,然后在短时间之后将其删除:

function FlashElement() { 
    var $el=$('#FormContainer'), oldBorder=$el.css('border'); 
    $el.css({border:'4px solid yellow'}); 
    setTimeout(function() { $el.css({border:oldBorder}); }, 500); 
} 

如果你想有一个重复的闪烁效果,那么你可以多次调用“的setTimeout”躲/显示在所希望的时间间隔的边界,例如:

// ... 
    var newBorder = '4px solid yellow'; 
    $el.css({border:newBorder}); 
    setTimeout(function() { $el.css({border:oldBorder}); }, 100); 
    setTimeout(function() { $el.css({border:newBorder}); }, 200); 
    setTimeout(function() { $el.css({border:oldBorder}); }, 300); 
    setTimeout(function() { $el.css({border:newBorder}); }, 400); 
    setTimeout(function() { $el.css({border:oldBorder}); }, 500); 
1

使用animate功能与“颜色”插件组合。例如:http://jsfiddle.net/mostthingsweb/wjDJm/4/

HTML:

<div>my content</div> 

<br/> 
<button id='button'>Click me</button>​ 

CSS:

div { 
    padding: 3px; 
    border: 1px solid transparent; 
}​ 

JS:

function makeColors(color){ 
    return { 
     borderTopColor: color, 
     borderBottomColor: color, 
     borderRightColor: color, 
     borderLeftColor: color 
    } 
} 

$("#button").click(function() { 
    $("div").stop().animate(makeColors("red"), 1000, function(){ 
     $(this).animate(makeColors("transparent"), 500);   
    }); 
});​ 

备注:

1

使用this plugin和下面的代码和here's the demo

$(function() { 
    $('div').on('click', function() { 
     $el = $(this); 
     $el.css({border:'1px solid #FFF'}); 
     $el.animate({ 
      'borderColor': '#F00' 
     }); 
     setTimeout(function() { 
      $el.animate({ 
       'borderColor': '#FFF' 
      }); 
     }, 1000); 
    }); 
});​ 
相关问题