如何使我的无限图像旋转器能够应用于许多旋转框
How to make my Infinite images rotater able to be applied to many rotating boxes
标题名称并没有明确我想做什么,但我将在这里用一些代码进行解释。
一个函数的Javascript,它在div中旋转绝对定位的图像。我面临的问题是,如果我添加了多个div-类旋转项包装器-函数内有两个图像,首先在第一个div内旋转,然后在第二个div内。我想单独旋转它们。
var InfiniteRotator =
{
init: function()
{
//initial fade-in time (in milliseconds)
var initialFadeIn = 1000;
//interval between items (in milliseconds)
var itemInterval = 5000;
//cross-fade time (in milliseconds)
var fadeTime = 2500;
//count number of items
var numberOfItems = $('.rotating-item').length;
//set current item
var currentItem = 0;
//show first item
$('.rotating-item').eq(currentItem).fadeIn(initialFadeIn);
//loop through the items
var infiniteLoop = setInterval(function(){
$('.rotating-item').eq(currentItem).fadeOut(fadeTime);
if(currentItem == numberOfItems -1){
currentItem = 0;
}else{
currentItem++;
}
$('.rotating-item').eq(currentItem).fadeIn(fadeTime);
}, itemInterval);
}
};
InfiniteRotator.init();
编辑到这个和这个功能从不旋转图像
<script>
(function( $ ) {
$.fn.InfiniteRotator = function(options) {
var defaults = {
//initial fade-in time (in milliseconds)
initialFadeIn: 1000,
//interval between items (in milliseconds)
itemInterval: 5000,
//cross-fade time (in milliseconds)
fadeTime: 2500,
currentItem: 0
};
var settings = $.extend( {}, defaults, options );
return this.each(function() {
var numberOfItems = $(this).find('.rotating-item').length;
$(this).find('.rotating-item').eq(settings.currentItem).fadeIn(settings.initialFadeIn);
//loop through the items
var infiniteLoop = setInterval(function(){
$(this).find('.rotating-item').eq(settings.currentItem).fadeOut(settings.fadeTime);
if(settings.currentItem == numberOfItems -1){
settings.currentItem = 0;
}else{
settings.currentItem++;
}
$(this).find('.rotating-item').eq(settings.currentItem).fadeIn(settings.fadeTime);
}, settings.itemInterval);
});
};
}( jQuery ));
$(window).load(function() { //start after HTML, images have loaded
$('#rotating-item-wrapper1').InfiniteRotator();
});
</script>
HTML:
<section>
<div class="imagesPanel" id="P1">
<div class="rotating-item-wrapper" id="rotating-item-wrapper1">
<img class="rotating-item" src="Images/HotelM/1.jpg" alt="">
<img class="rotating-item" src="Images/HotelM/5.jpg" alt="">
</div>
<img src="Images/HotelM/2.jpg" alt="">
<img src="Images/HotelM/3.jpg" alt="">
<img src="Images/HotelM/4.jpg" alt="">
</div>
<div class="imagesPanel">
<img src="Images/rooms/1.jpg" alt="">
<img src="Images/rooms/3.jpg" alt="">
<img src="Images/rooms/5.jpg" alt="">
<img src="Images/rooms/6.jpg" alt="">
</div>
CSS:
section .imagesPanel img{
position: relative;
width: 25%;
height: auto;
border: 0;
float: left;
}
.rotating-item-wrapper {
position: relative;
width: 250px;
height: 188px;
border: 0;
float: left;
}
.rotating-item-wrapper .rotating-item {
height: 100%;
width: 100%;
position: absolute;
top: 0;
left: 0;
display: none;
}
您可以通过以下方式创建一个基本的jquery插件:
(function( $ ) {
$.fn.InfiniteRotator = function(options) {
var defaults = {
//initial fade-in time (in milliseconds)
initialFadeIn: 1000,
//interval between items (in milliseconds)
itemInterval: 5000,
//cross-fade time (in milliseconds)
fadeTime: 2500,
currentItem: 0
};
var settings = $.extend( {}, defaults, options );
return this.each(function() {
var numberOfItems = $(this).find('.rotating-item').length;
$(this).find('.rotating-item').eq(settings.currentItem).fadeIn(settings.initialFadeIn);
//loop through the items
var infiniteLoop = setInterval(function(){
$(this).find('.rotating-item').eq(settings.currentItem).fadeOut(settings.fadeTime);
if(settings.currentItem == numberOfItems -1){
settings.currentItem = 0;
}else{
settings.currentItem++;
}
$(this).find('.rotating-item').eq(settings.currentItem).fadeIn(settings.fadeTime);
}, settings.itemInterval);
});
};
}( jQuery ));
并将其称为$('#mydivid').InfiniteRotator();
或使用您喜欢的选项
您可以将元素传递给init函数,我相信这正是您想要做的。基本上,主元素是包含旋转项的包装器。然后,您可以使用该元素进一步向下遍历以制作动画。
我还注意到,您的示例中的选择器被称为.DivID
,但它是一个类,因为它使用.
作为selctor。。。也许它应该是#id
?在下面的示例中,我将其更改为类选择器。
var InfiniteRotator = {
init: function(element, options) {
console.log(element.length);
var defaults = {
//initial fade-in time (in milliseconds)
initialFadeIn: 1000,
//interval between items (in milliseconds)
itemInterval: 5000,
//cross-fade time (in milliseconds)
fadeTime: 2500,
currentItem: 0
};
var settings = $.extend({}, defaults, options);
var numberOfItems = $(element).find('.rotating-item');
$(this).find('.rotating-item').eq(settings.currentItem).fadeIn(settings.initialFadeIn);
//loop through the items
var infiniteLoop = setInterval(function() {
$(this).find('.rotating-item').stop().eq(settings.currentItem).fadeOut(settings.fadeTime);
if (settings.currentItem == numberOfItems - 1) {
settings.currentItem = 0;
} else {
settings.currentItem++;
}
$(this).find('.rotating-item').stop().eq(settings.currentItem).fadeIn(settings.fadeTime);
}, settings.itemInterval);
}
};
InfiniteRotator.init($(".divClass"), null);
相关文章:
- 将函数的上下文应用于javascript变量
- 将CSS应用于printWindow.print();在Javascript中
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- $scope.apply()何时应用于angular
- Javascript非常简单:'阅读更多''显示较少'应用于Wordpress的功能
- 尝试应用于<tr>在ng单击中
- 如何将javascript仅应用于1个表单中的2个表单提交按钮中的1个
- 将脚本应用于Angular 2上的输入
- Json和$scope的角度之间的差异$eval应用于JSON字符串时
- 如何将参数应用于String.prototype.format函数
- 动态地将过滤器应用于 JSON.parse()
- $location更改不适用于ngchange,而是应用于ngclick
- 如何将 :empty 选择器应用于 XML 文档
- 如何仅在文本字段中有值时才将自定义过滤器应用于 ng-repeat
- 如何使用 JavaScript 将样式应用于 CKEditor 中的选定文本
- MongoDB 无法将$addToSet应用于 Meteor JS 中的非数组
- 将类应用于jquery ui对话框
- 将CSS应用于在JavaScript中创建的表-表的位置不正确
- 如果检查了输入,则将类应用于<身体>,没有jQuery
- 将2D画布(图像+文本)应用于3D表面,并进行360度旋转/动画-可以使用HTML5/CSS3/Javascript或F