如何使用 JavaScript 将转场添加到幻灯片?
How to add transitions to a slideshow using JavaScript?
我有以下非常简单的 Javasript 代码,它通过更改 SRC 来更改显示的图像。当按下主 HTML 文件中的两个按钮时,将执行函数 nextpic() 和 prevpic()。
var pics = [
"http://dp.topcovers4fb.com/wp-content/uploads/2015/12/Child-Tomboy-Display-Picture.jpg",
"http://assets.rollingstone.com/assets/images/gallery/420cddbf3f116072564ab58c05f4d5e9b31aa046.jpg",
"http://imgfave-chat-herokuapp-com.global.ssl.fastly.net/image_cache/1292725000558109.jpeg",
"http://ecx.images-amazon.com/images/I/41N1wi0htgL.jpg",
"http://readynutrition.com/wp-content/uploads/2016/01/goat.jpg",
"http://images5.fanpop.com/image/photos/31600000/Random-Stuff-3-random-31692057-500-500.jpg"
]
function init(){
interval;
}
onload = init;
var interval = setInterval(nextpic, 5000);
var max_pics = pics.length - 1;
var i = 1;
function nextpic(pic){
var pic = document.getElementById("picswap");
pic.src = pics[i];
if(i < max_pics){
i++;
}else{
i = 0;
}
}
function prevpic(pic)
{
var pic = document.getElementById("picswap");
pic.src = pics[i];
console.log(i)
if(i > 0){
i--;
}else{
i = max_pics;
}
}
有什么方法可以对图像进行简单的淡入淡出过渡吗?到目前为止所问问题的答案不适用于我的代码风格。我知道可能没有办法直接检测 src 更改,但有什么可能的解决方案?
这个答案分为两部分:
首先,可视化滑块
要让两个项目淡入淡出,一个在另一个之上,您必须有两个元素。一张用于下一张图片,一张用于上一张图片。
把它想象成一堆三张牌。
在底部有一张带有字母 A 的卡片。
在中间你有一张带有字母 B 的卡片。
在上面你有一张带有字母 C 的卡片。
- C
- B
- 一个
现在我们要把卡片C从上面拿下来放在下面。所以我们把它捡起来,把它移到一堆下面,放在 B 和 A 的下面。
- B
- 一个
- C
一旦您开始将它想象成一副物理卡片,它就会变得更容易使用。卡片可以是隐藏卡、覆盖卡或覆盖卡。
在上面的例子中,C是一张覆盖牌(覆盖B)。
B 是一张覆盖卡(由 C 覆盖)。
A是一张隐藏牌(我们移动牌时根本看不到它)。
我们移动牌后,C变成隐藏牌(在牌组底部),A变成覆盖牌(被B覆盖),B变成覆盖牌。
同样,您的滑块的幻灯片将相互覆盖和显示。
当您的用户按下 'NEXT' 时,您必须将图片加载到 'covered' 幻灯片中并慢慢淡出 'covering' 幻灯片。当 'covering' 幻灯片淡出时,您可以将其移至隐藏状态。然后,您可以将 'covered' 幻灯片移至 'covering',下一张幻灯片移至 'covered'。
你的滑桩看起来像这样:
- 覆盖
- 涵盖
- 隐藏
事实上,您可以将这些 class 提供给您的幻灯片并应用 CSS 来更改幻灯片的 z-index。
其次,转换:
要更改封面幻灯片的不透明度,我建议您对元素应用 classes 并使用 CSS 将不透明度从 1 更改为 0,使用 a css transition。应用新 class 后,过渡将开始,让您从一个到下一个平稳过渡。
我有以下非常简单的 Javasript 代码,它通过更改 SRC 来更改显示的图像。当按下主 HTML 文件中的两个按钮时,将执行函数 nextpic() 和 prevpic()。
var pics = [
"http://dp.topcovers4fb.com/wp-content/uploads/2015/12/Child-Tomboy-Display-Picture.jpg",
"http://assets.rollingstone.com/assets/images/gallery/420cddbf3f116072564ab58c05f4d5e9b31aa046.jpg",
"http://imgfave-chat-herokuapp-com.global.ssl.fastly.net/image_cache/1292725000558109.jpeg",
"http://ecx.images-amazon.com/images/I/41N1wi0htgL.jpg",
"http://readynutrition.com/wp-content/uploads/2016/01/goat.jpg",
"http://images5.fanpop.com/image/photos/31600000/Random-Stuff-3-random-31692057-500-500.jpg"
]
function init(){
interval;
}
onload = init;
var interval = setInterval(nextpic, 5000);
var max_pics = pics.length - 1;
var i = 1;
function nextpic(pic){
var pic = document.getElementById("picswap");
pic.src = pics[i];
if(i < max_pics){
i++;
}else{
i = 0;
}
}
function prevpic(pic)
{
var pic = document.getElementById("picswap");
pic.src = pics[i];
console.log(i)
if(i > 0){
i--;
}else{
i = max_pics;
}
}
有什么方法可以对图像进行简单的淡入淡出过渡吗?到目前为止所问问题的答案不适用于我的代码风格。我知道可能没有办法直接检测 src 更改,但有什么可能的解决方案?
这个答案分为两部分:
首先,可视化滑块
要让两个项目淡入淡出,一个在另一个之上,您必须有两个元素。一张用于下一张图片,一张用于上一张图片。
把它想象成一堆三张牌。
在底部有一张带有字母 A 的卡片。
在中间你有一张带有字母 B 的卡片。
在上面你有一张带有字母 C 的卡片。
- C
- B
- 一个
现在我们要把卡片C从上面拿下来放在下面。所以我们把它捡起来,把它移到一堆下面,放在 B 和 A 的下面。
- B
- 一个
- C
一旦您开始将它想象成一副物理卡片,它就会变得更容易使用。卡片可以是隐藏卡、覆盖卡或覆盖卡。
在上面的例子中,C是一张覆盖牌(覆盖B)。 B 是一张覆盖卡(由 C 覆盖)。 A是一张隐藏牌(我们移动牌时根本看不到它)。
我们移动牌后,C变成隐藏牌(在牌组底部),A变成覆盖牌(被B覆盖),B变成覆盖牌。
同样,您的滑块的幻灯片将相互覆盖和显示。
当您的用户按下 'NEXT' 时,您必须将图片加载到 'covered' 幻灯片中并慢慢淡出 'covering' 幻灯片。当 'covering' 幻灯片淡出时,您可以将其移至隐藏状态。然后,您可以将 'covered' 幻灯片移至 'covering',下一张幻灯片移至 'covered'。
你的滑桩看起来像这样:
- 覆盖
- 涵盖
- 隐藏
事实上,您可以将这些 class 提供给您的幻灯片并应用 CSS 来更改幻灯片的 z-index。
其次,转换:
要更改封面幻灯片的不透明度,我建议您对元素应用 classes 并使用 CSS 将不透明度从 1 更改为 0,使用 a css transition。应用新 class 后,过渡将开始,让您从一个到下一个平稳过渡。