2012-03-26 33 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); 
    }); 
});​ 
相關問題