xuniX
xuniX

Reputation: 75

CSS: background-size: 50% cover - possible?

Is something like this possible?

.background {
  background-size: 50% cover;
}

UPDATE:
I hope you can better understand it now.
The image should remain proportional, even if a part should disappear.

.background {
  border: 5px solid black;
  width: 100%;
  min-height: 400px;
  background-image: url('http://placehold.it/350x150'); 
  background-repeat: no-repeat; 
  background-position: top right; 
  background-size: 50% 100%;
}

.text {
  padding: 10px;
  width: 48%;
}

.center {
  display: block;
  text-align: center;
}
<div class='background'>
  <div class='text'>
    <h1>Lorem ipsum</h1>
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
  </div>
  <div class='center'>
    <a href='#'>Lorem ipsum</a>
  </div>
</div>

Cheers

Upvotes: 3

Views: 10081

Answers (4)

Floris
Floris

Reputation: 3127

It is possible by creating an absolute inner div with the width of 50%. Inside a relative container that has a width of 100%. You can give the inner div a cover effect and align it to the right.

Upvotes: 0

Katy Coello Coraspe
Katy Coello Coraspe

Reputation: 46

You should use this for your css background:

.background {
  border: 5px solid black;
  width: 100%;
  min-height: 400px;
  background: url('http://placehold.it/350x150') no-repeat right; 
  background-size: 50% 100%;
}

Upvotes: 0

dippas
dippas

Reputation: 60563

No you can't,

Here is the formal syntax for background-size property,

<bg-size> = [ <length-percentage> | auto ]{1,2} | cover | contain

Which means whenever you have cover you can't have length-percentage (those | means OR)


instead you can use background-size: 50% 100% or background-size: auto 100%


UPDATE Based on your updated question you can achieve what you want using flexbox

div {
  display: flex
}
div div:last-of-type {
  background: url("http://lorempixel.com/400/200/") no-repeat center / cover;
}
div div {
  flex: 1
}
<div>
  <div>
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex
    ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit
    augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation
    ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim
    qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
  </div>
  <div>
  </div>
</div>

Upvotes: 6

Obsidian Age
Obsidian Age

Reputation: 42304

You can't use background-size: 50% cover itself, though you can make it so that the background occupies 50% of the width and 100% of the height. I believe what you're looking for is:

.background {
  background-size: 50% 100%;
}

I've created a fiddle demonstrating this here.

Hope this helps!

Upvotes: 0

Related Questions