html - 为一个元素合并两个类的背景图像

标签 html css background

我正在尝试向一个元素添加两个类,该元素在其不同空间中放置两个不同的背景图像。但是当我应用另一个类时,它会覆盖一流的背景图像。见下文

<li class="first">

li.first {background:url(images/first.png)no-repeat center top}
li.second{background:url(images/second.png)no-repeat right center}

所以我想在像 li 元素上应用两个类时合并两个背景

<li class="first second">

有什么办法可以实现吗?

最佳答案

我可以想到两种方法。

您可以不将第二个背景添加到元素本身,而是添加到绝对定位的伪元素,使其完全覆盖 li。但是,如果您希望对三个以上的类和背景执行此操作,则此方法不起作用,因为您只能有两个伪元素(:before:after).

或者您也可以简单地将第一个背景添加到第二个类中。

DEMOS

在这两种情况下,HTML 都是这样的:

<li class="first second"></li>

第一种情况下的相关CSS:

li { 
    background-repeat: no-repeat;
    background-size: 50%;
}
.first {
    background-image: linear-gradient(rgba(102,37,93,.95) 50%, transparent 50%);
    background-position: 50% 0;
}
.second {
    position: relative;
}
.second:after {
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    background-image: radial-gradient(rgba(255,255,255,.2), rgba(255,0,0,.9));
    background-position: 100% 50%;
    background-repeat: no-repeat;
    background-size: 50%;
    content: '';
}

...在第二种情况下:

li { 
    background-repeat: no-repeat;
    background-size: 50%;
}
.first {
    background-image: linear-gradient(rgba(102,37,93,.95) 50%, transparent 50%);
    background-position: 50% 0;
}
.second {
    background-image: radial-gradient(rgba(255,255,255,.2), rgba(255,0,0,.9)), 
        linear-gradient(rgba(102,37,93,.95) 50%, transparent 50%);
    background-position: 100% 50%, 50% 0;
}

关于html - 为一个元素合并两个类的背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051320/

相关文章:

ios - 检测是否在后台/前台调用方法

javascript - 来自 JavaScript 的 CSS3 多个背景图像

ios - Swift 中 View 透明度导致的深色背景问题

html - 图像在一页中显示不正确

javascript - 使用 li 的 id 从 ul 中删除 li

Css 倒置边框 2.0

css - 中间带圆圈的单杠

Jquery隐藏/显示div但也保留来自 "hiding"的切换链接

python - 如何用漂亮的汤解析长网页?

html - Bootstrap div- 对齐页面中心