テキストをぶるんってする

最初は普通のテキストです。

html
<ul class="list01">
<li>List 01</li>
<li>List 02</li>
<li>List 03</li>
<li>List 04</li>
</ul>

jQueryの部分。
animate をメソッドチェーンでこまかく繋げてけばぶるんって感じになります。

JavaScript
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('.list01 li').click(function(){
$(this)
.animate({'marginLeft':'10px'}, 20)
.animate({'marginLeft':'-8px'}, 20)
.animate({'marginLeft':'6px'}, 20)
.animate({'marginLeft':'-4px'}, 20)
.animate({'marginLeft':'2px'}, 20)
.animate({'marginLeft':'-0px'}, 20);
});
});
</script>

CSS3でテキストをぶるんってする

CSS3っていってもクラスのON/OFFでJS使います。

JavaScript
$(function() {
var list = $('.list01');
list.find('li').click(function(){
list.children('li').removeClass('active');
$(this).addClass('active');
});
});

アニメーション部分です。
-webkit-とかのベンダープレフィクスは省略してます。

css
.list01 li.active {
animation: buller 0.2s linear;
}
@keyframes buller {
0%{margin-left: 10px;}
20%{margin-left: -8px;}
40%{margin-left: 6px;}
60%{margin-left: -4px;}
80%{margin-left: 2px;}
100%{margin-left: 0px;}
}

枠をぶるんってする

枠だけぶるんってしたいんですよね。
cssは下記のように設定します。
span 要素が枠になっています。
outline プロパティでいけそうな気がしますが、わかりませんでした。

css
.list01 li {
cursor: pointer;
padding: 8px;
position: relative;
margin-bottom: 1px;
list-style: none;
}
.list01 li span {
position: absolute;
border: solid 1px #8EC5E6;
background-color: #E7F2FA;
display: block;
z-index: -1;
width: 100%;
left: 0;
top: 0;
border-radius: 3px;
}

jQueryではクリックしたときにspanを追加して、さにほどと同じようにアニメーションを繋げてきます。

JavaScript
$(function() {
var list = $('.list01');
list.find('li').click(function(){
var listH = $(this).innerHeight();
list.find('span').remove();
$(this)
.append('<span></span>')
.find('span')
.height(listH)
.animate({'marginTop':'4px'}, 20)
.animate({'marginTop':'-4px'}, 20)
.animate({'marginTop':'2px'}, 20)
.animate({'marginTop':'-2px'}, 20)
.animate({'marginTop':'1px'}, 20)
.animate({'marginTop':'0px'}, 20);
});
});

css3で影もアニメーションしてやるとちょっとだけいい感じになります。

css
.list01 li span {
・・・
animation: buller 0.2s linear;
}
@keyframes buller {
0%{box-shadow: 0px 3px 2px #afbed6, 0px -3px 2px #afbed6;}
100%{box-shadow: 0px 0px 0px #afbed6, 0px 0px 0px #afbed6;}
}