使用CSS,我可以设置不同类的多个背景吗?

时间:2012-12-02 01:41:49

标签: css

我知道可以使用CSS创建多个背景图层,但是我可以将来自不同类的多个背景分层吗? 假设我有div作为可能有山脉或丘陵的瓷砖,可能属于某个国家。

.mountain {
    background: url("mountain.png");
}
.hill {
    background: url("hill.png");
}
.bluecountry {
    background: url("bluecountry.png");
}
.redcountry {
    background: url("redcountry.png");
}
.greencountry {
    background: url("greencountry.png");
}

将是我的CSS。但是,这不起作用;当我做像

这样的事情
<div class="hill bluecountry">

它不会对背景进行分层,并且只会使用其中一个。 有没有办法让这项工作?实际上我有更多的东西,为每种可能的组合单独编写CSS多个背景将是一个巨大的浪费时间。

2 个答案:

答案 0 :(得分:4)

无法使用多个类合并background属性 - 它只能设置一次。你能做的是:

  1. 创建一个容器div(position: relative
  2. 在容器(position: absolute
  3. 中放置多个div
  4. 对每个子div应用单独的类
  5. 可以使用top: 0px; left: 0px;background-position将图像放置在容器中。
  6. 这是我的意思的一个例子:

    <强> HTML

    <div class="container">
        <div class="first"></div>
        <div class="second"></div>
    </div>​
    

    <强> CSS

    html, body { height: 100%; }
    div { 
        display: inline-block;
        width: 400px; 
        height: 100px; 
    }
    .container {
        position: relative;
    }
    .first, .second {
        position: absolute;
        left: 0;
        top: 0;
    }
    .first { 
        background: url(http://lorempixel.com/200/100/sports/1) no-repeat; 
    }
    .second { 
        background: url(http://lorempixel.com/200/100/sports/2) no-repeat; 
        background-position: right center;
    }
    

    http://jsfiddle.net/32G4A/2

答案 1 :(得分:0)

如果使用jQuery,则:

$(".mountain, .hill, .bluecountry").each(function () {
  var backgrounds = [];
  if ($(this).hasClass("mountain"))
    backgrounds.push("url('mountain.png')");
  if ($(this).hasClass("hill"))
    backgrounds.push("url('hill.png')");
  if ($(this).hasClass("bluecountry"))
    backgrounds.push("url('bluecountry.png')");
  $(this).css("background", backgrounds.join(", "));
});