javascript - Jquery函数每5秒更改一次背景图像不起作用
问题描述
我在jquery中有以下功能:
window.onload = function() {
$(function () {
var images = ["banner.png", "banner2.png"];
var i = 0;
setInterval(function () {
i++;
if (i == images.length) {
i = 0;
}
$("#banner").fadeOut("slow", function () {
$(this).css("background", "url(../media/img/" + images[i] + ") no-repeat");
$(this).fadeIn("slow");
});
}, 5000);
});
}
我希望它每 5 秒更改一次背景,但是它会更改为空背景,这是 CSS 代码:
#banner{
position: absolute;
top: 32px;
width: 100%;
background: url(../media/img/banner.png) no-repeat;
height: 628px;
只是为了记录,我的文件中有一个banner2.png,我不明白出了什么问题
解决方案
相对的 CSS 路径可能很棘手(这让我犯错的次数比我承认的要多)
在 CSS 文件中,路径是相对于该 CSS 文件的
通过javascript设置时,相对于页面的HTML文件
所以,如果你的文件夹布局像
root
|- css
| |- style.css
|
|- media
| | - banner.jpg
| | - banner1.jpg
|
|- index.html
然后 CSS 会将banner.jpg 引用为../media/banner.jpg
但是在 index.html 中从 javascript 设置背景时......路径是./media/banner.jpg
甚至media/banner.jpg
所以
$(this).css("background", "url(./media/img/" + images[i] + ") no-repeat");
或者
$(this).css("background", "url(media/img/" + images[i] + ") no-repeat");
或者(我认为更容易阅读 - 但在 Internet Explorer 中不可用)使用模板字符串(即在反引号中) - 同样,只需更改,background-image
因为no-repeat
原始 CSS 中的
$(this).css("background-image", `url(media/img/${images[i]})`);
您甚至可以使用"
似乎不是必需的,但随处显示的都有background-image
记录
$(this).css("background-image", `url("media/img/${images[i]}")`);
虽然,我认为这不太可读(❁´◡`❁)
推荐阅读
- angular - Twilio 在 Ionic 3 中未定义
- javascript - 如何从数组动态加载离子选项?
- javascript - 有一个大整数数组需要返回一个数组,该数组在数组表示的值上加了 1
- tensorflow - 如何为(张量流)模型提供自定义元数据?
- html - PrimeNG 表 [rowHovered] 不适用于设置了单元格背景的单元格
- php - 如何限制已选择的查询?
- javascript - 在 Angular 中显示保存在 node.js 后端的图像
- python - 为什么在 pcolormesh 和使用定制颜色条的轮廓图之间显示颜色条的差异
- java - UnsatisfiedLinkError:java.library.path 中没有 libhello
- angular - Angular7使用菜单激活路由工作,但无论如何复制粘贴任何路由都会重定向到主页