Javascript 禁用图像时CSS透明背景回退
我有一个应用了透明PNG背景的DIV。有没有一种方法(使用JS很好)让我:Javascript 禁用图像时CSS透明背景回退,javascript,css,image,background,transparency,Javascript,Css,Image,Background,Transparency,我有一个应用了透明PNG背景的DIV。有没有一种方法(使用JS很好)让我: 启用图像时具有透明度效果 禁用图像时,对其应用普通纯色背景色 您应该能够同时提供css背景图像和背景颜色。如果图像被禁用,颜色仍应显示。我想您正在寻找 类似的事情。我想到的另一个解决方案是,您可以在默认情况下设置坚实的背景,然后用JavaScript加载图像并应用透明度。如果有人禁用JS或图像下载失败,那么您将使用默认的纯色背景。我记得,如果您设置背景颜色和背景图像,这将不适用于透明PNG(在透明度上,您将看到背景颜色
您应该能够同时提供css背景图像和背景颜色。如果图像被禁用,颜色仍应显示。我想您正在寻找
类似的事情。我想到的另一个解决方案是,您可以在默认情况下设置坚实的背景,然后用JavaScript加载图像并应用透明度。如果有人禁用JS或图像下载失败,那么您将使用默认的纯色背景。我记得,如果您设置背景颜色和背景图像,这将不适用于透明PNG(在透明度上,您将看到背景颜色)。 Te解决方案是使用一个特殊的css类:
.trans_back { background:red }
DIV#trans_png { background:url(reddot.png); position:absolute; left:-9px; }
然后制作一个脚本:
$().ready(function(){
$('#trans_png').load(function(){
$('.tans_back').css('background',$(this).css('background'));
});
});
DIV#trans#png用于检查图像是否已加载,您可以按自己喜欢的方式执行,我更喜欢不使用脚本的最简单方式。这是基于Thinker的帖子,但我发现它不起作用 我发现,
$('#trans_png').load没有触发(jquery 1.9.1,firefox)-我必须使用图像的src的load事件,即,$('#logo img').attr('src','images/layout/logo.png').load(function(){/code>。任何图像都可以
我还发现仅仅复制背景不起作用,我必须明确地清除颜色并添加图像url
我还必须将此更改应用于几个元素(子菜单ul
s),因此在加载函数中添加了一个循环:
$('#logo img').attr('src', 'images/layout/logo.png').load(function() {
$("ul.MenuBarHorizontal ul").each(function() {
$(this).css('background-color','none').css('background','none').css('background', $('#menu-trns-bg').css('background-image'));
});
});
这基本上是思考者的答案,已经确定了,但是我无法将其理解为一个评论
只是为了澄清一下,ULs默认为背景色:白色;
,并且div位于屏幕外div#menu trns bg{position:absolute;left:-3000px;背景图像:url(../images/layout/body bg.png);}
我在一个Spry菜单上使用它。这似乎在弱连接上引入了一个漏洞。我偶尔会看到,如果CSS替换Javascript没有完成,徽标图像无法加载。我尝试过预加载背景图像,并从Javascript例程返回true,但出现了一些问题。就我个人而言,这是不值得的他冒着风险,所以我已经从我的网站上删除了这个代码。