我有这个脚本,允许用户移动对象。但是,一旦对象加载,我希望它们全部淡入。我该怎么做?这是我的javascript。这是网站,以便您可以看到它。 http://prototypesyndicate.com/kimmel/
<script type="text/javascript">
$(function() {
/**
* idx:
* index of photo that is currently hold
* idxLarge:
* index of photo that is currently on full mode
* mouseup:
* flag to use on the mouseup and mousedown events,
* to help preventing the browser default selection of elements
*/
var idx,idxLarge = -1;
var mouseup = false;
/**
* for now we hardcode the values of our thumb containers
*/
var photoW = 184;
var photoH = 205;
/**
* the photos and options container
*/
var $container = $('#pd_container');
var $options = $('#pd_options_bar');
var photosSize = $container.find('.pd_photo').length;
/**
* navigation current step
*/
var navPage = 0;
/**
* spreads the photos on the table..
*/
var ie = false;
if ($.browser.msie) {
ie = true;
}
start();
function start(){
$('#pd_loading').show();
var tableW = $container.width();
var tableH = $container.height();
var horizontalMax = tableW - photoW;
var verticalMax = tableH - photoH;
$('<img />').attr('src','images/paperball.png');
/**
* display all the photos on the desk, with a random rotation,
* and also make them draggable.
* on mouse down, we want the photo to enlarge in a few pixels,
* and to rotate 0 degrees
*/
var cntPhotos = 0;
$container.find('.pd_photo').each(function(i){
var $photo = $(this);
$('<img />').load(function(){
++cntPhotos;
var $image = $(this);
var r = Math.floor(Math.random()*201)-100;//*41
var maxzidx = parseInt(findHighestZIndex()) + 1;
var param = {
'top' : Math.floor(Math.random()*verticalMax) +'px',
'left' : Math.floor(Math.random()*horizontalMax) +'px',
'z-index' : maxzidx
};
$photo.css(param);
if(!ie)
$photo.transform({'rotate' : r + 'deg'});
$photo.show();
if(cntPhotos == photosSize){
bindEvents();
$('#pd_loading').hide();
}
}).attr('src',$photo.find('img').attr('src'));
});
}
/**
* grab a photo
*/
function mouseDown($photo){
mouseup = true;
idx = $photo.index() + 1;
var maxzidx = parseInt(findHighestZIndex()) + 1;
$photo.css('z-index',maxzidx);
if(ie)
var param = {
'width' : '+=40px',
'height' : '+=40px'
};
else
var param = {
'width' : '+=40px',
'height' : '+=40px',
'rotate' : '0deg',
//'shadow' : '5px 5px 15px #222'
};
$photo.stop(true,true).animate(param,100).find('img').stop(true,true).animate({
'width' : '+=40px',
'height' : '+=40px'
},100);
}
/**
* we do the mouseup on the document to prevent the
* case when we release the mouse outside of a photo.
* also, we want the photo to get smaller again,
* rotate some random degrees, and also move it some pixels
*/
$(document).bind('mouseup',function(e){
if(mouseup){
mouseup = false;
var $photo = $container.find('.pd_photo:nth-child('+idx+')');
var r = Math.floor(Math.random()*101)-50;
var $photoT = parseFloat($photo.css('top'),10);
var $photoL = parseFloat($photo.css('left'),10);
var newTop = $photoT + r;
var newLeft = $photoL + r;
if(ie)
var param = {
'width' : '-=40px',
'height' : '-=40px',
'top' : newTop + 'px',
'left' : newLeft + 'px'
};
else
var param = {
'width' : '-=40px',
'height' : '-=40px',
'top' : newTop + 'px',
'left' : newLeft + 'px',
//'rotate' : r+'deg',
//'shadow' : '0 0 5px #000'
};
$photo.stop(true,true).animate(param,200).find('img').stop(true,true).animate({
'width' : '-=40px',
'height': '-=40px'
},200);
}
e.preventDefault();
});
/**
* removes the photo element from the DOM,
* after showing the paper image..
*/
$container.find('.delete').bind('click',function(){
var $photo = $(this).parent();
var $photoT = parseFloat($photo.css('top'),10);
var $photoL = parseFloat($photo.css('left'),10);
var $photoZIndex = $photo.css('z-index');
var $trash = $('<div />',{
'className' : 'pd_paperball',
'style' : 'top:' + parseInt($photoT + photoH/2) + 'px;left:' + parseInt($photoL + photoW/2) +'px;width:0px;height:0px;z-index:' + $photoZIndex
}).appendTo($container);
$trash.animate({
'width' : photoW + 'px',
'height': photoH + 'px',
'top' : $photoT + 'px',
'left' : $photoL + 'px'
},100,function(){
var $this = $(this);
setTimeout(function(){
$this.remove();
},800);
});
$photo.animate({
'width' : '0px',
'height': '0px',
'top' : $photoT + photoH/2 + 'px',
'left' : $photoL + photoW/2 +'px'
},200,function(){
--photosSize;
$(this).remove();
});
});
function stack(){
navPage = 0;
var cnt_photos = 0;
var windowsW = $(window).width();
var windowsH = $(window).height();
$container.find('.pd_photo').each(function(i){
var $photo = $(this);
$photo.css('z-index',parseInt(findHighestZIndex()) + 1000 + i)
.stop(true)
.animate({
'top' : parseInt((windowsH-100)/2 - photoH/2) + 'px',
'left' : parseInt((windowsW-100)/2 - photoW/2) + 'px'
},800,function(){
$options.find('.backdesk').show();
var $photo = $(this);
++cnt_photos;
var $nav = $('<a class="pd_next_photo" style="display:none;"></a>');
$nav.bind('click',function(){
navigate();
$(this).remove();
});
$photo.prepend($nav);
$photo.draggable('destroy')
.find('.delete')
.hide()
.andSelf()
.find('.pd_hold')
.unbind('mousedown')
.bind('mousedown',function(){return false;});
$photo.unbind('mouseenter')
.bind('mouseenter',function(){
$nav.show();
})
.unbind('mouseleave')
.bind('mouseleave',function(){
$nav.hide();
});
$options.find('.shuffle,.viewall').unbind('click');
if(cnt_photos == photosSize)
enlarge(findElementHighestZIndex());
});
});
}
function enlarge($photo){
var windowsW = $(window).width();
var windowsH = $(window).height();
if(ie)
var param = {
'width' : '+=200px',
'height': '+=200px',
'top' : parseInt((windowsH-100)/2 - (photoH+200)/2) + 'px',
'left' : parseInt((windowsW-100)/2 - (photoW+200)/2) + 'px'
};
else
var param = {
'width' : '+=200px',
'height': '+=200px',
'top' : parseInt((windowsH-100)/2 - (photoH+200)/2) + 'px',
'left' : parseInt((windowsW-100)/2 - (photoW+200)/2) + 'px',
'rotate': '0deg',
'shadow': '5px 5px 15px #222'
};
$photo.animate(param,500,function(){
idxLarge = $(this).index();
}).find('img').animate({
'width' : '+=200px',
'height': '+=200px'
},500);
}
/**
* back to desk
*/
function disperse(){
var windowsW = $(window).width();
var windowsH = $(window).height();
$container.find('.pd_photo').each(function(i){
var $photo = $(this);
//if it is the current large photo:
if($photo.index() == idxLarge){
if(ie)
var param = {
'top' : parseInt((windowsH-100)/2 - photoH/2) + 'px',
'left' : parseInt((windowsW-100)/2 - photoW/2) + 'px',
'width' : '170px',
'height' : '170px'
};
else
var param = {
'top' : parseInt((windowsH-100)/2 - photoH/2) + 'px',
'left' : parseInt((windowsW-100)/2 - photoW/2) + 'px',
'width' : '170px',
'height' : '170px',
'shadow' : '1px 1px 5px #555'
};
$photo.stop(true).animate(param,500, function(){
shuffle();
$options.find('.viewall').show();
}).find('img').animate({
'width' : '170px',
'height' : '170px'
},500);
}
});
$container.find('.pd_next_photo').remove();
bindEvents();
}
function bindEvents(){
$options.find('.shuffle').unbind('click').bind('click',function(e){
if(photosSize == 0) return;
shuffle();
e.preventDefault();
}).andSelf().find('.viewall').unbind('click').bind('click',function(e){
var $this = $(this);
if(photosSize == 0) return;
stack();
$this.hide();
e.preventDefault();
}).andSelf().find('.backdesk').unbind('click').bind('click',function(e){
var $this = $(this);
if(photosSize == 0) return;
disperse();
$this.hide();
e.preventDefault();
});
$container.find('.pd_photo').each(function(i){
var $photo = $(this);
$photo.draggable({
containment : '#pd_container'
}).find('.delete')
.show()
}).find('.pd_hold').unbind('mousedown').bind('mousedown',function(e){
var $photo = $(this).parent();
mouseDown($photo);
e.preventDefault();
});
}
function navigate(){
if(photosSize == 0) return;
var tableW = $container.width();
var tableH = $container.height();
var horizontalMax = tableW - photoW;
var verticalMax = tableH - photoH;
var $photo = $container.find('.pd_photo:nth-child('+parseInt(idxLarge+1)+')');
var r = Math.floor(Math.random()*201)-100;//*41
if(ie)
var param = {
'top' : Math.floor(Math.random()*verticalMax) +'px',
'left' : Math.floor(Math.random()*horizontalMax) +'px',
'width' : '170px',
'height' : '170px'
};
else
var param = {
'top' : Math.floor(Math.random()*verticalMax) +'px',
'left' : Math.floor(Math.random()*horizontalMax) +'px',
'width' : '170px',
'height' : '170px',
'rotate' : r+'deg',
'shadow' : '1px 1px 5px #555'
};
$photo.stop(true).animate(param,500,function(){
++navPage;
var $photo = $(this);
$container.append($photo.css('z-index',1));
if(navPage < photosSize)
enlarge(findElementHighestZIndex());
else{ //last one
$options.find('.backdesk').hide();
$options.find('.viewall').show();
bindEvents();
}
}).find('img').animate({
'width' : '170px',
'height' : '170px'
},500);
}
function shuffle(){
var tableW = $container.width();
var tableH = $container.height();
var horizontalMax = tableW - photoW;
var verticalMax = tableH - photoH;
$container.find('.pd_photo').each(function(i){
var $photo = $(this);
var r = Math.floor(Math.random()*301)-100;//*41
if(ie)
var param = {
'top' : Math.floor(Math.random()*verticalMax) +'px',
'left' : Math.floor(Math.random()*horizontalMax) +'px'
};
else
var param = {
'top' : Math.floor(Math.random()*verticalMax) +'px',
'left' : Math.floor(Math.random()*horizontalMax) +'px',
'rotate' : r+'deg'
};
$photo.animate(param,800);
});
}
function findHighestZIndex(){
var photos = $container.find('.pd_photo');
var highest = 0;
photos.each(function(){
var $photo = $(this);
var zindex = $photo.css('z-index');
if (parseInt(zindex) > highest) {
highest = zindex;
}
});
return highest;
}
function findElementHighestZIndex(){
var photos = $container.find('.pd_photo');
var highest = 0;
var $elem;
photos.each(function(){
var $photo = $(this);
var zindex = $photo.css('z-index');
if (parseInt(zindex) > highest) {
highest = zindex;
$elem = $photo;
}
});
return $elem;
}
// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
});
</script>
答案 0 :(得分:1)
如果我正确读取此权限,请将它们设置为display:none in css,这样它们就会被隐藏,然后你可以在你需要的地方将它们淡入.fadeIn()
答案 1 :(得分:1)
使用load()事件在加载图像时调用函数: http://api.jquery.com/load-event/
对于您的特定问题,您可能需要首先加载css opacity设置为零的图像,然后每次调用load事件时计数,一旦计数完成所有图像,您就可以将它们淡入。
编辑:哦等等我看到你的代码中已经有了加载事件处理程序。
答案 2 :(得分:1)
试试这个:
CSS:
#imageHolder img { display: none }
HTML:
<div id="imageHolder">
<img src="image1.jpg" />
<img src="image2.jpg" />
<img src="image3.jpg" />
</div>
JS:
$(function(){
$("#imageHolder img").load(function(){
$(this).fadeIn();
});
});
它的作用: CSS将所有<img />
设置为display: none
,这使得默认情况下不可见,jQuery为jQuery添加了一个事件处理程序{{1每个图像的事件,在加载时会导致图像load
。
答案 3 :(得分:1)
可能会超出要求,但在页面上将其作为独立的.js文件包含在内,并且所选元素将在三秒钟内以稍微不同的间隔淡入淡出。根据个人喜好调整。
// specify a selector for what you want to fade in
var fadeSelector = "div, span, .whatever";
// specify a selector for anything you don't want to fade in
// such as transparent container objects or permanent page fixtures
var noFade = "#header, #legalnotice, .transparentdiv";
$(document).ready(function()
{
// Make all selected objects vanish objects
$(fadeSelector).not(noFade).addClass("vanish");
$(".vanish").css("opacity", "0.0");
// fade in all '.vanish' class objects'
$(".vanish").each(function()
{
$(this).delay(parseInt( Math.random()*1000 + 500 )).fadeTo(parseInt( Math.random()*1000 + 500 ), 1.0);
});
});