当我的页面加载活动的手风琴项目时,幻灯片会打开,这会导致页面上的其他元素也移动一秒钟。
我希望活动的手风琴项目能够呈现"已经打开",但仍然保留用户点击另一个手风琴项目的动画,或者甚至保留最初打开的项目的动画用户选择另一个项目,然后选择原始项目。
我找不到任何用于执行此操作的CSS,所以也许它在javascript中的某些东西?如果是这样,我将如何重写这一点。
非常感谢任何关于如何实现这一目标的建议!
答案 0 :(得分:2)
根据我所知,没有简单的解决方案,但您可以在加载时覆盖某些属性,以便默认显示活动项。您必须从手风琴开始,没有任何项目是活动的,即没有一个手风琴项目有.is-active
类:
<强> HTML 强>
<ul class="accordion" data-accordion data-allow-all-closed='true'>
<li class="accordion-item" data-accordion-item>
<a href="#" class="accordion-title">Accordion 1</a>
<div class="accordion-content" data-tab-content>
Panel 1. Lorem ipsum dolor
</div>
</li>
<li class="accordion-item" data-accordion-item>
<a href="#" class="accordion-title">Accordion 2</a>
<div class="accordion-content" data-tab-content>
Panel 2. Lorem ipsum dolor
</div>
</li>
<li class="accordion-item" data-accordion-item>
<a href="#" class="accordion-title">Accordion 3</a>
<div class="accordion-content" data-tab-content>
Panel 3. Lorem ipsum dolor
</div>
</li>
</ul>
<强> jQuery的:强>
//Initialise the Foundation plugins
$(document).foundation();
function activateWithoutAnimation(itemIndex) {
//Get the accordion item according to its index (0 based)
var $accordionItem = $('.accordion-title:eq(' + itemIndex + ')');
//Set the aria attributes of the accordion item you want to appear
$accordionItem.attr('aria-expanded', 'true');
$accordionItem.attr('aria-selected', 'true');
//Set the attributes of the content.
$accordionItem.next().attr('aria-hidden', 'false');
$accordionItem.next().css('display', 'block');
//This is essential as it lets foundation know that the item is active (to re-allow toggling)
$accordionItem.trigger('click');
}
//Call the function.
activateWithoutAnimation(0);
可能有更好的方法来做到这一点,但从我读过的内容来看,没有允许动画被禁用的选项。我试过覆盖基金会提供的默认值无济于事。
<强> Fiddle Demo 强>
答案 1 :(得分:1)
CSS解决方案
如果在初始加载时使用默认助手类.is-active
,那么一些普通的CSS可以消除幻灯片打开动画。
.is-active .accordion-content {
display: block;
}