Вариантов много, зависят некоторые от особенностей поведения и вёрстки.
Но вот, как я делаю чаще подобную задачу:
- Оборачиваем текст в контейнер (по умолчанию выставляем ему высоту) и внутри контейнера кладём ещё один div-блок (пропишите ему свойства, абсолютное позиционирование внизу контейнера, сделайте background градиентом или в фотошопе сделайте нужный спрайт)
- Слушаем клик по контейнеру с текстом и после клика делаем .slideDown() одновременно скрывая div-блок с градиентом (можно сразу просто убрать, а можно fideOut() прописать)
При повторном клике по тексту можно проверить, открыт он или нет (можно вешать какой-нибудь класс для проверки), и если открыт, то делаем animate({height: ваша_высота_по_умолчанию}, 300) и убираем класс, если ставили.
Если что-то не понятно, пишите, помогу чем смогу ;-)
P.S. Может быть есть вариант анимации на css3, но я не очень пока в ней разбираюсь.