我正在尝试这样做,当您单击页面顶部的导航按钮时,它们会导致背景发生变化。我取得了部分成功,但背景总是立即切换回来,我希望每个背景都淡出到下一个背景中。以下是带有html:的第一页上的javascript
<script type="text/javascript">
$('li a').click(function(e){
e.preventDefault();
$.cookie('currentImg', $('body').css('background-image') );
$.cookie('nextImg', 'Tranquil.jpg');
});
</script>
<li class="item6" onmouseover="style.backgroundColor='#022D4D';" onmouseout="style.backgroundColor='#032F76';"><a href="Environment.php" onClick="EnvBack();" title="Environment" >Environment</a></li>
这是新页面上的javascript:
<script type="text/javascript">
//on next page (Environment.php)
//#nextImage is a div covering the page with a z-index placing just above the body element
$('body').css('background-image', $.cookie('currentImg') );
$('#nextImage').css({
visibility : 'hidden',
backgroundImage : $.cookie('nextImg')
//wait for image to load
}).load(function(){
//set state to hidden, if it was hidden before rather than merely
//invisible the div will not load.
//then fade in the new image producing a smooth transition
$(this).css('visibility','visible').fadeIn(function(){
//reset state of page
$('body').css('background-image', $.cookie('nextImg') );
$(this).remove();
});
});
</script>
以下是正文的CSS:
body
{
background-image:url("abstract1.jpg");
background-repeat: no-repeat;
background-size:100%;
background-attachment:fixed;
font-family:font-family: Helvetica,Arial, sans-serif;
text-align:center;
width: 100%;
height: 100%;
}
#nextImage
{
background-image="";
background-repeat: no-repeat;
background-size:100%;
background-attachment:fixed;
font-family:font-family: Helvetica,Arial, sans-serif;
text-align:center;
width: 100%;
height: 100%;
z-index:1;
}
当我跳到新页面时。。所有的css都是不可见的,而不是转换
如果您通过jQuery更改后台,请记住JS在客户端运行。
基本上,背景似乎发生了变化,但一旦执行了默认的"onclick"
操作,就会返回。
之所以会发生这种情况,是因为重定向链接只会让您使用另一个JS会话跳转到另一个页面。
你可以使用cookie(jQuery插件HERE)来解决这个问题,所以每次你更改页面时,你都会读取背景url的值,然后选择下一个。
又一次更新我不知道这是否有助于实现你的最终目标,但你可以使用GREAT渐变工具将你的类设置为使用跨浏览器兼容的渐变过渡,而不是试图让你的大脑紧张地转换图像,也不是使用纯直色!尽管需要注意的是,我通过测试发现,并不是所有的梯度都能很好地转换。
UPDATE jsFiddle用于显示通过jQueryUI更改body背景颜色的工作示例。toggleClass,仍然不知道它是否适用于图像
另一个注意事项是,尝试将jQueryUI添加到jQuery中,然后查看以下两个文档页面:
- http://jqueryui.com/demos/toggleClass/
- http://docs.jquery.com/UI/Effects/ClassTransitions
为了获得你真正需要的所有信息并理解,toggle类是jQuery核心的一部分,但动画转换是用jQueryui添加的,因此只适用于一定程度的操作。例如,我还没有测试过您试图通过body背景更改来实现什么,所以我不能肯定这是您的解决方案,但我知道更改元素背景很简单。
要进行简单的元素背景更改,请执行以下操作:
示例HTML我正在使用
<div id="eleID" class="original"> some text </div>
<button id="btnChange">Change</button>
您需要建立一个CCD_ 2类,其中包含您的基本背景和颜色设置&某种类型的
change
类,包含alternate
背景色和文本色,比如
.original{
background-color: #fff;
color: #000;
}
.change {
background-color: #000;
color: #fff;
}
最后,您的简单javascript是:
$(function() {
$("#btnChange").click(function(e) {
$("#eleID").toggleClass( "change", 1000 );
});
});
非常尊重VAShhh,因为它捕获了这个等式的刷新部分。
首先,您需要通过cookie将当前图像设置转移到新页面,刷新后图像可以保留。在这个例子中,我将传输当前图像和所需图像。(需要jquery cookie插件)
//its important to use jQuery here so we have a normalized event object
$('li a').click(function(e){
e.preventDefault();
$.cookie('currentImg', $('body').css('background-image') );
$.cookie('nextImg', 'Tranquil.jpg');
});
//on next page (Environment.php)
//#nextImage is a div covering the page with a z-index placing just above the body element
$('body').css('background-image', $.cookie('currentImg') );
$('#nextImage').css({
visibility : 'hidden',
backgroundImage : $.cookie('nextImg')
//wait for image to load
}).load(function(){
//set state to hidden, if it was hidden before rather than merely
//invisible the div will not load.
//then fade in the new image producing a smooth transition
$(this).hide().css('visibility','visible').fadeIn(function(){
//reset state of page
$('body').css('background-image', $.cookie('nextImg') );
$(this).remove();
});
});
不能在同一元素上的css背景图像之间交叉淡入淡出。为了达到你想要的效果,你需要至少两种元素。一个保存初始图像,另一个保存新图像。将新图像放在旧图像上(z索引),并在中使用新图像淡化元素
你可能想看看jQuery插件,比如:http://tympanus.net/Tutorials/CSS3FullscreenSlideshow/index.htmlhttp://buildinternet.com/project/supersized/http://tobia.github.com/CrossSlide/
请记住,在褪色之前,您还必须预加载行中的下一个图像,否则它看起来会很糟糕。
下面是我自己写的一个例子:
http://www.wideopenadventure.com/woa/