Вот один из них, если вы не хотите использовать jQuery и ориентированы только на самые последние браузеры.
Демонстрация: http://jsfiddle.net/ThinkingStiff/9UUb9/
HTML:
<div id="posts-frame">
<div id="highlight"></div>
<ul id="posts">
<li class="post">post one</li>
<li class="post">post two</li>
<li class="post">post three</li>
<li class="post">post four</li>
<ul>
</div>
CSS:
#highlight {
border-left: 1px solid #4D90F0;
height: 0;
margin-left: 1px;
position: absolute;
top: 0;
transition: top 200ms ease, height 200ms ease;
-moz-transition: top 200ms ease, height 200ms ease;
-ms-transition: top 200ms ease, height 200ms ease;
-o-transition: top 200ms ease, height 200ms ease;
-webkit-transition: top 200ms ease, height 200ms ease;
}
.post {
border: 1px solid lightgray;
display: block;
height: 45px;
padding-left: 4px;
}
.post:nth-child( 2 ) {
height: 70px;
}
#posts {
padding: 0;
margin: 0;
width: 400px;
}
#posts-frame {
position: relative;
}
Сценарий:
function selectPost( event ) {
var highlight = document.getElementById( 'highlight' );
highlight.style.height = event.target.clientHeight + 'px';
highlight.style.top = ( event.target.offsetTop + 1 ) + 'px';
};
document.getElementById( 'posts' ).addEventListener( 'click', selectPost, false);