Well you can use a background-image and a background-color at the same time. As soon as the background-image is loaded, it will be rendered above the background color. What youc an do, is to place a pseudo-div spanning the entire width and height and use a background-color on this pesudo-div. Be sure to sue a rgba value as otherwise the background will be non-transpaerent and hide the background-image.
However, ther content will be influenced at the same time, so the content has to be pushed to the front (layer-wise) with the use of z-index (e.g..content { z-index: 1; }
).
To span the layer with the background-color the entire width, I gave the parent the attribute: position: relative;
.
Next I used for the layer position: absolute;
. I gave it a top: 0; bottom: 0; left: 0; right: 0;
so it will be spanned the entire parents space.
.background {
width:100%;
min-height: 500px;
background: url(https://images.unsplash.com/photo-1500964757637-c85e8a162699?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60), #651fff;
background-size: cover;
background-repeat: no-repeat;
position: relative;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
.layer {
background-color: rgba(255, 0, 0, 0.6);
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.content {
z-index: 1;
}
<div class="background">
<div class="layer"></div>
<div class="content">1</div>
</div>