简单的javascript交换和淡入淡出
我正在寻找一个javascript解决方案,使我的交换动作淡入淡出,而不仅仅是出现 我想严格遵守一些javascript,而不是使用jquery或任何插件 下面是在用户单击时交换图像的代码,只是想寻找一种使图像淡入淡出的方法:简单的javascript交换和淡入淡出,javascript,fadein,fadeout,Javascript,Fadein,Fadeout,我正在寻找一个javascript解决方案,使我的交换动作淡入淡出,而不仅仅是出现 我想严格遵守一些javascript,而不是使用jquery或任何插件 下面是在用户单击时交换图像的代码,只是想寻找一种使图像淡入淡出的方法: <script type="text/javascript"> // Image Swap // function swap(image) { document.getElementById("main").src = image.href; } </
<script type="text/javascript">
// Image Swap //
function swap(image) {
document.getElementById("main").src = image.href;
}
</script>
<body>
<img id="main" src="image1.png" width="250">
<br>
<a href="image1.png" onclick="swap(this); return false;"><img width="50" src="/image1.png"></a>
<a href="image2.png" onclick="swap(this); return false;"><img width="50" src="image2.png"></a>f
<a href="image3.png" onclick="swap(this); return false;"><img width="50" src="image3.png"></a>
</body>
//图像交换//
功能交换(图像){
document.getElementById(“main”).src=image.href;
}
F
编辑: 我已经看到并尝试了许多不同的javascript选项,但我不知道如何将其与上面使用的当前javascript结合起来。包括:
document.write("<style type='text/css'>#main {visibility:hidden;}</style>");
function initImage() {
imageId = 'main';
image = document.getElementById(imageId);
setOpacity(image, 0);
image.style.visibility = "visible";
fadeIn(imageId,0);
}
function fadeIn(objId,opacity) {
if (document.getElementById) {
obj = document.getElementById(objId);
if (opacity <= 100) {
setOpacity(obj, opacity);
opacity += 10;
window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100);
}
}
}
function setOpacity(obj, opacity) {
opacity = (opacity == 100)?99.999:opacity;
// IE/Win
obj.style.filter = "alpha(opacity:"+opacity+")";
// Safari<1.2, Konqueror
obj.style.KHTMLOpacity = opacity/100;
// Older Mozilla and Firefox
obj.style.MozOpacity = opacity/100;
// Safari 1.2, newer Firefox and Mozilla, CSS3
obj.style.opacity = opacity/100;
}
window.onload = function() {initImage()}
document.write(“#main{visibility:hidden;}”);
函数initImage(){
imageId='main';
image=document.getElementById(imageId);
设置不透明度(图像,0);
image.style.visibility=“可见”;
fadeIn(imageId,0);
}
功能fadeIn(对象、不透明度){
if(document.getElementById){
obj=document.getElementById(objId);
如果(不透明度
function swap (image) {
var inc = 0.1; // Increment / Decrement
var timeout = 100;
var fadeout = window.setInterval ( function () {
var e = document.getElementById("main");
var o = parseFloat( e.style.opacity );
if ( o <= 0 )
window.clearInterval ( fadeout );
else
o = o - inc;
e.style.opacity = o;
}, timeout );
document.getElementById("main").src = image.href;
var fadein = window.setInterval ( function () {
var e = document.getElementById("main");
var o = parseFloat( e.style.opacity );
if ( o >= 1 )
window.clearInterval ( fadein );
else
o = o + inc;
e.style.opacity = o;
}, timeout );
}
函数交换(图像){
var inc=0.1;//递增/递减
var超时=100;
var fadeout=window.setInterval(函数(){
var e=document.getElementById(“主”);
var o=parseFloat(e.style.opacity);
如果(o=1)
window.clearInterval(fadein);
其他的
o=o+inc;
e、 style.opacity=o;
},超时);
}
这应该适用于所有最新的浏览器。您可以使用“inc”和“timeout”变量调整质量/速度。请注意,如果您想在网站上使用许多动画,最好使用简单的动画框架(不必使用繁重的jQuery)来代替此框架
如果在一个网站上使用太频繁/并行,我的示例可能会导致性能问题。如果您想多次使用我的“fadein”和“fadeout”代码段,您可能还想将其外包到自己的功能中(不要成为复制粘贴程序员)。:)快速脏:
function swap (image) {
var inc = 0.1; // Increment / Decrement
var timeout = 100;
var fadeout = window.setInterval ( function () {
var e = document.getElementById("main");
var o = parseFloat( e.style.opacity );
if ( o <= 0 )
window.clearInterval ( fadeout );
else
o = o - inc;
e.style.opacity = o;
}, timeout );
document.getElementById("main").src = image.href;
var fadein = window.setInterval ( function () {
var e = document.getElementById("main");
var o = parseFloat( e.style.opacity );
if ( o >= 1 )
window.clearInterval ( fadein );
else
o = o + inc;
e.style.opacity = o;
}, timeout );
}
函数交换(图像){
var inc=0.1;//递增/递减
var超时=100;
var fadeout=window.setInterval(函数(){
var e=document.getElementById(“主”);
var o=parseFloat(e.style.opacity);
如果(o=1)
window.clearInterval(fadein);
其他的
o=o+inc;
e、 style.opacity=o;
},超时);
}
这应该适用于所有最新的浏览器。您可以使用“inc”和“timeout”变量调整质量/速度。请注意,如果您想在网站上使用许多动画,最好使用简单的动画框架(不必使用繁重的jQuery)来代替此框架
如果在一个网站上使用太频繁/并行,我的示例可能会导致性能问题。如果您想多次使用我的“fadein”和“fadeout”代码段,您可能还想将其外包到自己的功能中(不要成为复制粘贴程序员).:)您可以使用CSS转换/动画为您完成许多繁重的工作。下面的代码片段适用于Chrome和Firefox 4.0 beta版。在IE上,不会褪色。总有一天它会在IE上工作
在下面的示例中,我托管了两个绝对位于同一分区内的图像。对于子图像,我指定了1秒的淡入淡出不透明度更改。交换函数仅设置不可见图像的src,并为每个图像在0和1.0之间切换不透明度。一个淡入淡出id,另一个淡出id
现在,当您尝试此操作时,您可能会注意到第一次交换不会可靠地褪色。这是因为在更改不透明度之前,我没有等待图像上的“onload”事件发生。最好将不透明度保持在0.0,然后设置src属性。然后在onload回调上,切换不透明度
<head>
<style>
div#imghost
{
position:relative;
height: 100px;
width: 100px;
}
div#imghost img
{
position: absolute;
left: 0px;
top: 0px;
opacity: 0.0;
-moz-transition-property: opacity;
-moz-transition-duration: 1s;
-webkit-transition-property: opacity;
-webkit-transition-duration: 1s;
transition-property: opacity;
transition-duration: 1s;
}
</style>
<script type="text/javascript">
// Image Swap //
var img1_is_visible = false;
function swap(img) {
var img1 = document.getElementById("img1");
var img2 = document.getElementById("img2");
var imgold= img1_is_visible ? img1 : img2;
var imgnew= img1_is_visible ? img2 : img1;
imgnew.style.opacity = 1.0;
imgnew.src = img.src;
imgold.style.opacity = 0.0;
img1_is_visible = !img1_is_visible
}
</script>
</head>
<body>
<div class="imghost">
<img id="img1" />
<img id="img2" />
</div>
<br/>
<img width="50" src="image1.png" onclick="swap('this');">
<img width="50" src="image2.png" onclick="swap('this');">
<img width="50" src="image3.png" onclick="swap('this');">
</body>
第#imghost分区
{
位置:相对位置;
高度:100px;
宽度:100px;
}
第三组
{
位置:绝对位置;
左:0px;
顶部:0px;
不透明度:0.0;
-moz过渡特性:不透明度;
-moz转换持续时间:1s;
-webkit转换属性:不透明度;
-webkit转换持续时间:1s;
过渡特性:不透明度;
过渡时间:1s;
}
//图像交换//
var img1_为可见=假;
功能交换(img){
var img1=document.getElementById(“img1”);
var img2=document.getElementById(“img2”);
var imgold=img1\u是否可见?img1:img2;
var imgnew=img1\u是否可见?img2:img1;
imgnew.style.opacity=1.0;
imgnew.src=img.src;
imgold.style.opacity=0.0;
img1\u可见=!img1\u可见
}
您可以使用CSS转换/动画为您完成大量繁重的工作。下面的代码片段适用于Chrome和Firefox 4.0 beta版。在IE上,不会褪色。总有一天它会在IE上正常工作
在下面的示例中,我托管了两个绝对位于同一分区内的图像。对于子图像,我指定了1秒的淡入淡出不透明度更改。交换函数仅设置不可见图像的src,并为每个图像在0和1.0之间切换不透明度。一个淡入淡出id,另一个淡出id
现在,当您尝试此操作时,您可能会注意到第一次交换不会可靠地褪色。这是因为在更改不透明度之前,我没有等待图像上的“onload”事件发生。最好将不透明度保持在0.0,然后设置src属性。然后在onload回调上,切换不透明度
<head>
<style>
div#imghost
{
position:relative;
height: 100px;
width: 100px;
}
div#imghost img
{
position: absolute;
left: 0px;
top: 0px;
opacity: 0.0;
-moz-transition-property: opacity;
-moz-transition-duration: 1s;
-webkit-transition-property: opacity;
-webkit-transition-duration: 1s;
transition-property: opacity;
transition-duration: 1s;
}
</style>
<script type="text/javascript">
// Image Swap //
var img1_is_visible = false;
function swap(img) {
var img1 = document.getElementById("img1");
var img2 = document.getElementById("img2");
var imgold= img1_is_visible ? img1 : img2;
var imgnew= img1_is_visible ? img2 : img1;
imgnew.style.opacity = 1.0;
imgnew.src = img.src;
imgold.style.opacity = 0.0;
img1_is_visible = !img1_is_visible
}
</script>
</head>
<body>
<div class="imghost">
<img id="img1" />
<img id="img2" />
</div>
<br/>
<img width="50" src="image1.png" onclick="swap('this');">
<img width="50" src="image2.png" onclick="swap('this');">
<img width="50" src="image3.png" onclick="swap('this');">
</body>
第#imghost分区
{
位置:相对位置;
高度:100px;
宽度:100px;
}
第三组
{
位置:绝对位置;
左:0px;
顶部:0px;
不透明度:0.0;
-moz过渡特性:不透明度;
-moz转换持续时间:1s;
-webkit转换属性:不透明度;
-webkit转换持续时间:1s;
过渡特性:不透明度;
过渡时间:1s;
}