@j08691 回答了问题 How to continuously rotate children in a jQuery animation? 有一个很好的例子。 但是,我需要扩展他的示例,但看不到如何动态地执行此操作。 这是我所拥有的一个小图形:
灰色框是我的横幅组,其中包含褪色的 4 个横幅项目。 绿色框是我的按钮 1 到 4。 单击按钮 1 应显示横幅项目 1 并隐藏所有其他项目。然后轮换过程应继续横幅项目 2。如果我点击按钮 4,它应该显示横幅项目 4。
jsfiddle:http://jsfiddle.net/wxvTp/
html:
<div class="col3 bannergroup">
<div class="banneritem">
<h1>Lorem Ipsum 1</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<a href="#" title="Jetzt unverbindliches Angebot anfordern" class="btn orange">Wir freuen uns auf Ihr Projekt.</a>
</div>
<div class="banneritem">
<h1>Lorem Ipsum 2</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<a href="#" title="Jetzt unverbindliches Angebot anfordern" class="btn orange">Wir freuen uns auf Ihr Projekt.</a>
</div>
<div class="banneritem">
<h1>Lorem Ipsum 3</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<a href="#" title="Jetzt unverbindliches Angebot anfordern" class="btn orange">Wir freuen uns auf Ihr Projekt.</a>
</div>
<div class="banneritem">
<h1>Lorem Ipsum 4</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<a href="#" title="Jetzt unverbindliches Angebot anfordern" class="btn orange">Wir freuen uns auf Ihr Projekt.</a>
</div>
<div class="slider-control-nav desktop"> <!-- buttons are here -->
<a class="button1" href="#">
<img src="images/icon-slider-control-cs.png" alt="Grafikdesign" />
</a>
<a href="#" class="button2">
<img src="images/icon-slider-control-gd.png" alt="Content Strategy" />
</a>
<a class="button3" href="#">
<img src="images/icon-slider-control-wd.png" alt="Grafikdesign" />
</a>
<a class="button4" href="#">
<img src="images/icon-slider-control-cs.png" alt="Content Strategy" />
</a>
</div>
</div>
编辑:这是我尝试过的,但是,a)不起作用,b)必须对所有 4 个按钮进行操作。
$( ".button4" ).click(function() {
$('div.bannergroup').each(function () {
$('div.banneritem', this).not(':nth-child(4)').hide();
var thisDiv = this;
setInterval(function () {
var idx = $('div.banneritem', thisDiv).index($('div.banneritem', thisDiv).filter(':visible'));
$('div.banneritem:eq(' + idx + ')', thisDiv).fadeOut(0, function () {
idx++;
if (idx == ($('div.text', thisDiv).length)) idx = 0;
$('div.banneritem', thisDiv).eq(idx).fadeIn(600);
});
}, 6000);
});
});
最佳答案
看看这个:http://jsfiddle.net/Palpatim/TfK4J/6/
关于之前代码的一些注释:
- 使用 CSS 而不是 jquery 设置
.banneritem
的初始状态。浏览器的工作量减少,并且当 jquery 计算出应该隐藏和显示的内容时,不太可能获得内容的“闪现”。 - 您在
setInterval
调用中做了很多工作,但实际上您只想显示一个新横幅。尽可能重构代码以减少间隔内完成的工作
祝你好运。
[编辑:将 fiddle URL 更正为 banneritem:first-child
上具有 display:block
的 URL]
关于javascript - 在包装器+按钮导航中旋转子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19661245/