Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用图像时CSS透明背景回退_Javascript_Css_Image_Background_Transparency - Fatal编程技术网

Javascript 禁用图像时CSS透明背景回退

Javascript 禁用图像时CSS透明背景回退,javascript,css,image,background,transparency,Javascript,Css,Image,Background,Transparency,我有一个应用了透明PNG背景的DIV。有没有一种方法(使用JS很好)让我: 启用图像时具有透明度效果 禁用图像时,对其应用普通纯色背景色 您应该能够同时提供css背景图像和背景颜色。如果图像被禁用,颜色仍应显示。我想您正在寻找 类似的事情。我想到的另一个解决方案是,您可以在默认情况下设置坚实的背景,然后用JavaScript加载图像并应用透明度。如果有人禁用JS或图像下载失败,那么您将使用默认的纯色背景。我记得,如果您设置背景颜色和背景图像,这将不适用于透明PNG(在透明度上,您将看到背景颜色

我有一个应用了透明PNG背景的DIV。有没有一种方法(使用JS很好)让我:

  • 启用图像时具有透明度效果
  • 禁用图像时,对其应用普通纯色背景色

  • 您应该能够同时提供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,但出现了一些问题。就我个人而言,这是不值得的他冒着风险,所以我已经从我的网站上删除了这个代码。