javascript - JQuery如何正确设置滑块效果
问题描述
我想在 jQuery 中创建简单的背景图像滑块。一切正常,除了动画。我认为它应该是这样的:
- 淡出图像
- 当用户看不到时更改图像
- 淡入新图像
但我得到了一些不同的东西,我觉得第一张照片发生了变化,然后图像淡出。
我尝试延迟(),但没有工作,并隐藏(),但它使动画太不自然。
这里我在 jsfiddle 中创建了示例,请看一下: https ://jsfiddle.net/xpvt214o/375627/
$('.background').fadeOut(1000).css('background-image',
'url('+images[whichone++]+')')
.fadeIn(1000);
我怎样才能改变这个?
$(document).ready(function(){
var images= ['https://images.pexels.com/photos/46710/pexels-photo-46710.jpeg?cs=srgb&dl=beach-sand-summer-46710.jpg&fm=jpg','https://images.pexels.com/photos/219998/pexels-photo-219998.jpeg?cs=srgb&dl=beach-birds-calm-219998.jpg&fm=jpg','https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg'];
var howmany = images.length;
var whichone = 0;
function slideSwitch(){
if(whichone >= howmany-1 ) { whichone = 0}
$('.background').fadeOut(1000).css('background-image', 'url('+images[whichone++]+')')
.fadeIn(1000);
}
setInterval(slideSwitch, 5000);
});
.background{
background: cover;
position:fixed;
width: 100%;
height: 100%;
left:0;
top:0;
background-image: url("https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg") ;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="background"></div>
<div class="content">
解决方案
尝试如下所示
添加 transition: background-image 2s;
并更改了您的js。你的background:cover
风格也错了。应该是background-size: cover;
$(document).ready(function() {
var images = ['https://images.pexels.com/photos/46710/pexels-photo-46710.jpeg?cs=srgb&dl=beach-sand-summer-46710.jpg&fm=jpg', 'https://images.pexels.com/photos/219998/pexels-photo-219998.jpeg?cs=srgb&dl=beach-birds-calm-219998.jpg&fm=jpg', 'https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg'];
var howmany = images.length;
var whichone = 0;
function slideSwitch() {
if (whichone >= howmany - 1) {
whichone = 0
}
$('.background').css('background-image', 'url(' + images[whichone++] + ')');
}
setInterval(slideSwitch, 5000);
});
.background {
background-size: cover;
position: fixed;
width: 100%;
height: 100%;
left: 0;
top: 0;
transition: background-image 2s;
background-image: url("https://images.pexels.com/photos/207962/pexels-photo-207962.jpeg?cs=srgb&dl=artistic-blossom-bright-207962.jpg&fm=jpg");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="background"></div>
<div class="content">
推荐阅读
- python - 导入 spacy 后,我发现 TypeError
- angular - 验证 Angular Testbed 提供者,确保它可以被构建?
- firebase - 如何防止 Firebase Firestore 模拟器在退出时清除数据库?
- laravel - laravel中的多对多关系错误
- spring-boot - Feign Client 找不到自定义注册的 eureka 服务
- javascript - JavaScript 计算不会打印结果
- javascript - Toogle js类没有改变图标
- python - 如何使用三个列表创建所有排列?Python
- oop - Erlang 中的进程/消息和 Smalltalk 中的对象/消息有什么区别?
- flutter - Flutter web - 将高度设置为 100% 而不是 100vh