Я изучаю всевозможные вещи. Я использовал только jQuery - нет интерфейса, нет Аккордеона UI, нет эффектов пользовательского интерфейса и получил эффект слайда, который я хотел. Не уверен в терминологии этого визуального эффекта. (Я думаю, что это половина проблемы с jQuery - что я называю различными эффектами). Я думаю, что, может быть, некоторые люди называют это «тумблером».
Нажмите, чтобы увидеть эффект: http://jsbin.com/ogape
Вот HTML фрагмент
<div id="div0">
<p id="intro"><a href="#" class='expander'>+</a> Introduction</p>
<div class='indented' style='display:none'>
<p >
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer
vulputate, nibh non rhoncus euismod, erat odio pellentesque lacus,
sit amet convallis mi augue et odio. Phasellus cursus urna facilisis quam.
</p>
<p> Quisque pharetra lacus quis sapien. Duis
id est non wisi sagittis adipiscing. Nulla facilisi. Etiam quam erat,
lobortis eu, facilisis nec, blandit hendrerit, metus. Fusce
hendrerit. Nunc magna libero, sollicitudin non, vulputate non, ornare
id, nulla. Suspendisse potenti. Nullam in mauris.
</p>
</div>
</div>
Это код JQuery:
var slideOut = function(element){
var parent = $(element).parent().parent(); // outer div
var dList = parent.children("div"); // inner div, all siblings of the <a>
dList.animate({opacity: 'toggle', height: 'toggle'}, 'slow');
};
$(document).ready(function() {
$('div p a[href="#"]').click(function() { slideOut(this); });
});
Эта функция slideOut() немного упрощен от чего это на самом деле. Он также меняет местами + и - для кнопки расширителя в реальном коде, что делает его немного более сложным:
var slideOut = function(element){
var parent = $(element).parent().parent(); // outer div
var dList = parent.children("div"); // inner div, all siblings of the <a>
dList.animate({opacity: 'toggle', height: 'toggle'}, 'slow');
// swap characters on the expander "button"
var o = dList.css("opacity");
// dash is narrower than +, so we must compensate
if (o==1) {
$(element).html("+")
.css("padding-left", "1px")
.css("padding-right", "1px");
} else {
$(element).html("-")
.css("padding-left", "3px")
.css("padding-right", "3px");
}
};
Вы можете увидеть полный HTML/код на расслоении плотного демонстрационной ссылки живой, указанной выше.
Главное, что я не знал, это то, что можно анимировать высоту, вызвав анимацию с помощью "toggle".
is slideToggle в базе jQuery? Или есть отдельный модуль или плагин? – Cheeso
slideToggle находится в базе jQuery, что приятно. Но, я получаю некоторые странные артефакты анимации, в IE. Есть прыжок, прямо в конце слайда, когда появляется div. Я не вижу этого, когда делаю '.animate ({height: 'toggle'}) ' – Cheeso
Вы тоже можете это сделать, если он работает хорошо. Я считаю, что это все, что он делает. –