How can I allow an image inside of a column to extend to the edge of the viewport? - html

I have two 50% width columns that exist in a Bootstrap container. The left column contains some text, and the right column contains some text and an image. I'd like to allow the image to break out of the column and container and extend to the right edge of the viewport. Here is my starting template:
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<div class="row">
<div class="col-sm-6">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut etiam sit amet nisl. Congue eu consequat ac felis. Ullamcorper malesuada proin libero nunc consequat interdum varius sit amet. Sed viverra ipsum nunc aliquet bibendum enim facilisis. Commodo ullamcorper a lacus vestibulum sed arcu. Tristique et egestas quis ipsum suspendisse ultrices gravida. Sollicitudin ac orci phasellus egestas tellus. Accumsan in nisl nisi scelerisque. Eros donec ac odio tempor orci. Tincidunt eget nullam non nisi est sit amet. Mauris pellentesque pulvinar pellentesque habitant. Odio tempor orci dapibus ultrices in iaculis nunc sed augue. Faucibus purus in massa tempor nec feugiat. Cras semper auctor neque vitae tempus quam. Viverra nibh cras pulvinar mattis nunc sed blandit libero. Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque.</p>
</div>
<div class="col-sm-6">
<p>Odio tempor orci dapibus ultrices in iaculis nunc sed augue. Faucibus purus in massa tempor nec feugiat. Cras semper auctor neque vitae tempus quam. Viverra nibh cras pulvinar mattis nunc sed blandit libero. Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque.</p>
<img src="https://developers.elementor.com/docs/assets/img/elementor-placeholder-image.png" alt="" class="img-fluid" />
</div>
</div>
</div>
My goal is to allow the image to scale outwards towards the right to the edge of the viewport, but I want the text above it remain within the bounds of the column.
I'd like to avoid using absolute positioning if possible. I was looking at this technique to break an image out of a container and make it the full width of the page, but couldn't figure out how to adapt it for a half width column.
The closest I've gotten is just setting the width by figuring out the space from the edge of a column to the edge of the viewport + 100% of the image:
#media (min-width: 576px) {
img.img-fluid {
max-width: none;
width: calc(100% + (100vw - 540px) / 2);
}
}
#media (min-width: 768px) {
img.img-fluid {
max-width: none;
width: calc(100% + (100vw - 720px) / 2);
}
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<div class="row">
<div class="col-sm-6">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut etiam sit amet nisl. Congue eu consequat ac felis. Ullamcorper malesuada proin libero nunc consequat interdum varius sit amet. Sed viverra ipsum nunc aliquet bibendum enim facilisis. Commodo ullamcorper a lacus vestibulum sed arcu. Tristique et egestas quis ipsum suspendisse ultrices gravida. Sollicitudin ac orci phasellus egestas tellus. Accumsan in nisl nisi scelerisque. Eros donec ac odio tempor orci. Tincidunt eget nullam non nisi est sit amet. Mauris pellentesque pulvinar pellentesque habitant. Odio tempor orci dapibus ultrices in iaculis nunc sed augue. Faucibus purus in massa tempor nec feugiat. Cras semper auctor neque vitae tempus quam. Viverra nibh cras pulvinar mattis nunc sed blandit libero. Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque.</p>
</div>
<div class="col-sm-6">
<p>Odio tempor orci dapibus ultrices in iaculis nunc sed augue. Faucibus purus in massa tempor nec feugiat. Cras semper auctor neque vitae tempus quam. Viverra nibh cras pulvinar mattis nunc sed blandit libero. Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque.</p>
<img src="https://developers.elementor.com/docs/assets/img/elementor-placeholder-image.png" alt="" class="img-fluid" />
</div>
</div>
</div>
This seems really close by there's always a tiny bit of space left and I'm not sure why. I've tried accounting for the gutter/padding of 12px on the columns but then it overflows.

Related

CSS Grid: Text outside the div

I have an issue with css grid
<div class="container">
<div class="q1">
<h4>Short Text</h2>
</div>
<div class="a1">
<p>LONG TEXT</p>
</div>
</div>
The LONG TEXT is going outside the div, I would like to keep it inside (it doesn't matter the height of the column). My css is:
.container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
background-color: #ffe8d6;
filter: brightness(90%);
padding: 5px;
}
So the idea is having 2 columns of the same width and with the height defined by the LONG TEXT in the second one. Now the text is going outside the container.
You did not close your first div. In the Short Text you opened h4 but closing tag is h2. Fix these typo first. Here is the working code below. I have added q1 and a1 classes to check whether the text is inside the div or not.
.container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
background-color: #ffe8d6;
filter: brightness(90%);
padding: 5px;
}
.q1 {
background: gray;
}
.a1 {
background: darkgray;
}
<div class="container">
<div class="q1">
<h4>Short Text</h4>
</div>
<div class="a1">
<p>LONG TEXT dsfsdfsd sdf sdfsdf sdfs dsdf sdfsdf dsf sdfsdf sdfs dfsdfsdf s</p>
</div>
</div>
I have just copy/pasted your code here and fixed one <h4> tag and one <div> tag. The div problem was that your <div class="container"> had no </div> to match it. The "Short Text" <h4> tag had a closing tag, but it was of the wrong type (h2). It looked like: <h4>Short Text</h2> and I changed it to: <h4>Short Text</h4>.
Additionally, I supplied sample text in each section to show the long and short sections more clearly.
Other than that, the code in this snippet is identical to yours. I didn't do anything to the CSS, but it seems that even with long text and short text, nothing is overflowing the containing div.
.container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
background-color: #ffe8d6;
filter: brightness(90%);
padding: 5px;
}
<div class="container">
<div class="q1">
<h4>Short Text</h4>
<p>
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Fames ac turpis egestas maecenas pharetra
convallis posuere. Quam nulla porttitor
massa id neque aliquam vestibulum morbi
blandit. Ligula ullamcorper malesuada proin
libero. Donec adipiscing tristique risus nec
feugiat.
</p>
</div>
<div class="a1">
<h4>Long Text</h4>
<p>
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Nec sagittis aliquam malesuada bibendum arcu
vitae elementum. Tempor nec feugiat nisl
pretium. Libero justo laoreet sit amet. Ut
ornare lectus sit amet est. Ipsum dolor sit
amet consectetur. Et netus et malesuada
fames ac turpis. Tellus rutrum tellus
pellentesque eu tincidunt tortor aliquam. Et
ultrices neque ornare aenean euismod
elementum. Eu ultrices vitae auctor eu augue
ut lectus arcu bibendum. Velit sed
ullamcorper morbi tincidunt ornare.
Pellentesque habitant morbi tristique
senectus et netus. Mattis molestie a iaculis
at erat pellentesque adipiscing commodo
elit. Sit amet purus gravida quis blandit
turpis cursus in hac. Eget duis at tellus at
urna condimentum. Nunc mattis enim ut tellus
elementum sagittis. Dignissim enim sit amet
venenatis urna. Mauris cursus mattis
molestie a iaculis at erat. Malesuada nunc
vel risus commodo viverra.
</p>
<p>
In metus vulputate eu scelerisque felis
imperdiet proin fermentum. Tellus id
interdum velit laoreet id donec. Cras
adipiscing enim eu turpis egestas. Eget
nullam non nisi est sit amet facilisis.
Tristique nulla aliquet enim tortor at
auctor. Eu non diam phasellus vestibulum
lorem sed risus. Odio aenean sed adipiscing
diam donec adipiscing tristique. Fermentum
et sollicitudin ac orci phasellus egestas.
Placerat orci nulla pellentesque dignissim
enim sit amet venenatis urna. Donec pretium
vulputate sapien nec sagittis aliquam
malesuada bibendum arcu. Diam vel quam
elementum pulvinar etiam non quam. Aliquam
sem et tortor consequat id porta nibh
venenatis. Hac habitasse platea dictumst
vestibulum rhoncus est. Amet consectetur
adipiscing elit pellentesque habitant morbi
tristique senectus. Urna molestie at
elementum eu. Donec et odio pellentesque
diam volutpat commodo. Nibh sed pulvinar
proin gravida hendrerit lectus a.
</p>
<p>
Amet consectetur adipiscing elit duis
tristique sollicitudin nibh sit. Risus at
ultrices mi tempus imperdiet nulla
malesuada. Et pharetra pharetra massa massa
ultricies mi. Quam nulla porttitor massa id
neque aliquam vestibulum. Donec ac odio
tempor orci dapibus ultrices in iaculis.
Pharetra vel turpis nunc eget lorem dolor
sed viverra ipsum. Arcu non sodales neque
sodales ut. Vitae nunc sed velit dignissim
sodales ut eu sem integer. Cursus risus at
ultrices mi tempus imperdiet. Enim neque
volutpat ac tincidunt vitae semper quis.
Rhoncus urna neque viverra justo. Mattis
rhoncus urna neque viverra justo nec
ultrices.
</p>
<p>
Pellentesque adipiscing commodo elit at
imperdiet. Donec ac odio tempor orci dapibus
ultrices in iaculis nunc. Lacus vestibulum
sed arcu non odio. Elit ullamcorper
dignissim cras tincidunt. Aliquet sagittis
id consectetur purus. Nunc sed velit
dignissim sodales. Amet mattis vulputate
enim nulla aliquet porttitor lacus luctus.
Donec enim diam vulputate ut pharetra sit
amet aliquam. Purus in massa tempor nec
feugiat nisl pretium. Lacus laoreet non
curabitur gravida arcu ac tortor dignissim
convallis. Turpis massa sed elementum tempus
egestas sed sed risus pretium. Ut enim
blandit volutpat maecenas volutpat blandit
aliquam etiam.
</p>
<p>
Fermentum odio eu feugiat pretium nibh ipsum
consequat nisl. Euismod elementum nisi quis
eleifend quam adipiscing vitae proin. Id
neque aliquam vestibulum morbi blandit
cursus risus at ultrices. Libero nunc
consequat interdum varius sit amet.
Facilisis volutpat est velit egestas dui.
Ornare suspendisse sed nisi lacus sed
viverra tellus in. Rhoncus est pellentesque
elit ullamcorper. Eleifend quam adipiscing
vitae proin sagittis nisl rhoncus mattis
rhoncus. Pharetra sit amet aliquam id diam
maecenas ultricies. Tincidunt nunc pulvinar
sapien et ligula ullamcorper. Sed risus
ultricies tristique nulla aliquet enim
tortor at. Erat pellentesque adipiscing
commodo elit at imperdiet dui accumsan sit.
Eget nunc scelerisque viverra mauris.
</p>
</div>
</div>

Is there any way to use <p> without there being space on the top or bottom?

i know the title might sound confusing, but basically i am wondering if there's any way to use paragraph breaks but without space at the top or bottom when there's nothing above or below the text?
body {
font-family:arial;
background:#222;
}
#wrapper {
width:100%;
margin-top:100px;
}
.post_container {
background:#fff;
border:1px solid red;
width:500px;
height:auto;
text-align:justify;
padding:15px;
margin:0 auto;
margin-bottom:50px;
}
.post {
font-size:16px;
}
<body>
<div id="wrapper">
<div class="post_container">
<div class="post">
<div style="height:auto;max-height:550px;overflow:auto;scrollbar-width:none;">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Orci ac auctor augue mauris augue. Amet aliquam id diam maecenas ultricies mi. Mi quis hendrerit dolor magna eget est. Pharetra magna ac placerat vestibulum lectus. Sagittis vitae et leo duis. Id nibh tortor id aliquet. Nullam non nisi est sit. Urna molestie at elementum eu facilisis. Pellentesque id nibh tortor id aliquet. Eget nullam non nisi est sit. Velit sed ullamcorper morbi tincidunt. Ac auctor augue mauris augue. Velit aliquet sagittis id consectetur. Amet justo donec enim diam vulputate ut pharetra sit. Lobortis mattis aliquam faucibus purus in massa tempor nec feugiat. Cursus eget nunc scelerisque viverra mauris in aliquam sem.</p>
<p>At lectus urna duis convallis convallis tellus id. Egestas sed sed risus pretium quam vulputate dignissim. Tristique senectus et netus et malesuada fames ac turpis. Volutpat commodo sed egestas egestas fringilla. Ipsum dolor sit amet consectetur adipiscing. Donec massa sapien faucibus et molestie ac feugiat. Blandit massa enim nec dui nunc mattis enim. Id ornare arcu odio ut sem nulla pharetra diam sit. Id venenatis a condimentum vitae sapien. Rhoncus dolor purus non enim praesent elementum facilisis leo vel. Turpis in eu mi bibendum neque egestas congue quisque. Quis varius quam quisque id diam vel quam elementum pulvinar. Nunc scelerisque viverra mauris in aliquam. Turpis egestas maecenas pharetra convallis posuere. Vel risus commodo viverra maecenas accumsan lacus vel facilisis. Ornare suspendisse sed nisi lacus sed viverra. Adipiscing commodo elit at imperdiet dui accumsan sit amet. Varius duis at consectetur lorem donec massa sapien faucibus. At consectetur lorem donec massa sapien faucibus et molestie ac.</p>
<p>Fringilla ut morbi tincidunt augue interdum velit euismod. Mi quis hendrerit dolor magna eget. Ultricies integer quis auctor elit sed vulputate mi sit. Quis lectus nulla at volutpat. Sit amet consectetur adipiscing elit pellentesque habitant morbi. Duis convallis convallis tellus id. Dignissim sodales ut eu sem. Malesuada bibendum arcu vitae elementum curabitur vitae nunc. Non enim praesent elementum facilisis. Ultricies mi eget mauris pharetra. Id leo in vitae turpis massa sed elementum. Cursus risus at ultrices mi. In iaculis nunc sed augue lacus viverra vitae congue. Aliquet bibendum enim facilisis gravida neque convallis a cras. Vitae justo eget magna fermentum iaculis eu non diam phasellus. Diam phasellus vestibulum lorem sed risus ultricies tristique nulla.</p>
<p>Porttitor leo a diam sollicitudin tempor id eu nisl nunc. Ut venenatis tellus in metus vulputate eu. Nibh venenatis cras sed felis eget velit aliquet sagittis. Amet cursus sit amet dictum sit amet justo donec. Euismod in pellentesque massa placerat duis ultricies lacus sed turpis. Purus sit amet luctus venenatis lectus. Augue interdum velit euismod in. Massa tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada. Non tellus orci ac auctor augue mauris augue neque. Arcu dui vivamus arcu felis. Est pellentesque elit ullamcorper dignissim cras tincidunt lobortis feugiat. Eget dolor morbi non arcu risus. Rutrum tellus pellentesque eu tincidunt tortor. Enim facilisis gravida neque convallis a cras semper. Quis ipsum suspendisse ultrices gravida. A cras semper auctor neque vitae tempus quam.</p>
<p>Tincidunt dui ut ornare lectus sit amet est placerat. Ultricies lacus sed turpis tincidunt. Aliquam eleifend mi in nulla posuere sollicitudin aliquam. Lectus quam id leo in vitae turpis. Ac orci phasellus egestas tellus rutrum tellus pellentesque eu tincidunt. Suscipit adipiscing bibendum est ultricies integer quis auctor elit. Tincidunt praesent semper feugiat nibh sed pulvinar proin. Hac habitasse platea dictumst quisque sagittis purus. Amet aliquam id diam maecenas ultricies mi eget mauris. A lacus vestibulum sed arcu non odio euismod lacinia. Magna etiam tempor orci eu. Velit laoreet id donec ultrices tincidunt arcu. Aenean pharetra magna ac placerat vestibulum lectus mauris. Turpis cursus in hac habitasse platea dictumst. Imperdiet nulla malesuada pellentesque elit eget gravida. Magna eget est lorem ipsum dolor sit amet. Sagittis purus sit amet volutpat. Morbi tristique senectus et netus et malesuada fames ac turpis.</p>
</div> <!-- scroll style -->
</div> <!-- post -->
</div> <!-- post container -->
</body>
You have 15px of padding coming from post_container which you can change to padding: 0 15px; to remove the top and bottom padding. Then you need to override the default p style of margin: 1em as others have indicated. One way is shown below:
body {
font-family:arial;
background:#222;
}
#wrapper {
width:100%;
margin-top:100px;
}
.post_container {
background:#fff;
border:1px solid red;
width:500px;
height:auto;
text-align:justify;
padding:0 15px;
margin:0 auto;
margin-bottom:50px;
}
.post {
font-size:16px;
}
<div id="wrapper">
<div class="post_container">
<div class="post">
<div style="max-height:550px;overflow:auto;scrollbar-width:none;">
<p style="margin: 0;">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </p>
<p>At lectus urna duis convallis convallis tellus id. Egestas sed sed risus pretium quam vulputate dignissim. Tristique senectus et netus et malesuada fames ac turpis. Volutpat commodo sed egestas egestas fringilla. </p>
<p style="margin: 0;">Fringilla ut morbi tincidunt augue interdum velit euismod. Mi quis hendrerit dolor magna eget. Ultricies integ</p>
</div> <!-- scroll style -->
</div> <!-- post -->
</div> <!-- post container -->
add the following in your .css file:
p {
padding-top: 0;
padding-bottom: 0;
margin-top: 0;
margin-bottom: 0;
}

Create columns without rows (remove blank space below one section)

So I already tried Google for this problem, but couldn't find a solution. I'm currently trying to divide my page in to 50% columns. The left column should contain an image and a form, the right one a text description (with a variable size).
I want the sections of the first column, to not be affected by the ones in the second one, so the same logic as column-count would use. If I use grid-template-columns: 50% 50%; to create my columns and I adjust the browser window, the text in the right column gets longer and pushes down the form under the image, which creates a blank space.
Is there any way using grid-template-columns and not having the content of both related to each other, so there are only two columns and the spacing between each item just stays the same when resizing the browser window?
Forgot to mention that when the browser window gets resized, two columns should merge to one and the order of the sections should be image, text, form. Is there a way to adapt the order when resized?
CSS code used:
.grid-custom{
padding-left: $grid-gutter;
display: grid;
grid-template-columns: 50% 50%;
grid-gap: $grid-gutter;
#include media-query($small) {
padding-left: $grid-gutter-mobile;
grid-gap: $grid-gutter-mobile;
grid-template-columns: 100%;
}
}
HTML does not have to be large to display the concept.
Consider this:
* { box-sizing: border-box; }
.layout-wrap {
display: flex;
min-height: calc(1px + 40vw);
}
.div1 { margin-right: 0.5em; }
.div1, .div2 { width: 50%; border: 4px solid black; }
<div class="layout-wrap">
<div class="div1"> <h1>IMAGE & FORM</h1> </div>
<div class="div2"> <h1>TEXT</h1> </div>
</div>
Using flex you can achieve this. Please refer snippet below for css part.
.container{
display: flex;
}
.col1{
background: blue;
width: 100%;
}
.col2{
background: red;
width: 100%;
}
.form{
width: 100px;
}
<div class="container">
<div class="col1">
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMSEhUTEhIVFhUVFRcXFxgXGBUVFRgWFRcWFxcVFxUYHSggGBolGxcVITEhJSkrLi4uGB8zODMsNygtLisBCgoKDg0OFxAQGC0dHR0rLS0rLS0rLS0tLSstLS0rLS0tLS0tLS0rLS0tLS0tLS0rLSstLS0tLS0tNy03LSs3N//AABEIANcA6wMBIgACEQEDEQH/xAAcAAAABwEBAAAAAAAAAAAAAAAAAQIDBAUGBwj/xAA8EAABAwIEAwYFAgQGAgMAAAABAAIRAyEEEjFBBVFhBhMicYGRMqGx0fBCwQdSYuEUIzNykvGCohYkwv/EABgBAAMBAQAAAAAAAAAAAAAAAAABAgME/8QAIREBAAMAAwEBAQADAQAAAAAAAAECEQMSITFBEzJRYSL/2gAMAwEAAhEDEQA/AOgoQj7soZCtnOTlQyJeVABAN5EMqdRoBomASdAFxbgP8RcRQxFR1cuq0qjnHLaWS6QWdIJELrvH64ZRcZjMMo2ubCJ31XGO1HZ0NaalGSGkz4SJB9Tf72WXJOY2467Euw8N43RxDQ6k8OkE2IkREz7qwIXm7g3F6lB4dTcRr5XBC752W49TxdPM0+JrWZhb4u7YXW5Zi4eiqs6m1cWhRKWGhH3QVs0NBS+5CI0QgIyUnjRSe6QCAEcJWQokwACi8U4hTw9N1Sq4Na0FxPQcuZUk1ANdpJ9Fw7+KHaEYvEZaTiadKWiD4SQTmd75YPmla2QqtdkXab+IuJr1B/h3Oo02m2WC5xBJBcSNNLLoP8M+1Bx1B7av+tRIDj/M13wu85Dh6LlHC+z+Zmd5IkWbz2ufsDy1Nnuy/E3YHHMIJDHuyvBaRIMgHKb2JBvBNxoSsa32W008eg+7R90oeGxocAQZEwN5N587g+xU0P8Adb65xdyi7hLFVGKiAa7lDuU8KiPOgI/dFDuypOYIZggHbIoCQQklR2hXU4QEmE0Xod4npYcISCEWdAuT0M12uquLBTEnxNcYAzANJNj9CAT0ss3gmjKWkuI0uQZ9oHyHlstJ2loEOab5T6gEbH5X1WUxFd1N03I6wR76ri57T2x2cMf+WC7U8DOHqFzDNNzrTYtJ/SRy5FOdmO0FTCVRUYbGA9v8zQWzbnBJHkFuuK4Cni6ZBkOFgdweRG4/LLluMwr6NQscLifUXH7KuK+x/wBLkpjvnA+0tOtTa5hgF4ZBIzA5aYaHAGxP35FaFmIB0NiJHlAP0K8z08Y5hzNJBEwR1kExyMmy0WC7ZYiCM9pDh53keslb92PR3nvCjFSVw13azFER3hggCfLSVY8O7U16dzVmSCZveBP50R/Qv5uxd4h3iwdb+IHhaMozG50sBCgcb7bPcIYQ0Rc62N/zyT7j+culGqOaYxOMawSSIlo/5Oyj5lcRxPaeu2SKpsZ9vNQsV2lxNYEGoYOoHJoI/wD0fWEu4/m038Se2js1XDUXQ24c4an4QWgjQeH5rJdm+FFxNR4sfh5WN9ddPLmq/BUP8RiAHfCfE7a0G9tJIW5otDbkQBZjdMrQIFtjAElY8t2/HQnGVctgL29Bt+6y3HMA5wzgHXSADPnvblpvCssXxYufDDlbNzzjfqrHCw4QRMt3+n5yWNZmrW0bDRdiOMNdTY90ZmtbTBIhrXOJHd0mfqeQ1snYNkzOUbvDOzCdj6z1J3t6eYgrifB6hoVg2WtguyOIzlpfbM1hsTymfIrtHC6ZbTb8UkT4jL73l0CxOsdV10nXJeMTYRFqMFCVfrPwmEIRyhKNkeEopS0SNGHJKElDvUM4RkDZJLUMiVnQzp+ETkR5EedKzoCr49QmnPIz91gOKOAeA4WNp5LoHHOIinSdmAAiZ1WA43lqslpnf+r2XHz/AOTs4fKjpCIvBiA7UOA0DhziBPRUnbDhveM70ABzQZ3kiCIPUAj1TvCOIT4HEEi0H5T9wo/FeLCkS10wdJvcfuPosqxMW8a2mJhiKwi3L7JVF8HTQX9FHxdbM4nmUKb7+kei63MsG1NL2jy/DopLKrjofhE+lh63y+yrQ+w9kttQyPb2KSks4ubaevPZOVMYeZtPsREKD3ep/LXPyKIvjX8nZAKqYgiCNdR0IIIPyTeExIDhPOfmkP8AoD81EdqniZlseF5WmRqY9iSYn80U/i+Jhhv4QPFGridGN6nnssXg8aWkX0/ZXFTiDXC5vt06N69f+1lavrStvENryXg7n5RsOi1HB6pLgLadFju/8U8vyFqOzR/Ud/aOSV48VSWiwPDaTsTTqVYIaJE2AM2PX6rqWFaMoygARbY+o2XHcXxsCrTAMMzXdYSOhO3X2XV+z9em6mDTdINzAdc7mXEz5rXhnz1hzR6scqGROZghmW7A1kQyJzMizIBGRDIl5kWZAMZUITsoJYemoQTsIsqWDTaU1KyIw26MPUXtHwxj6OYh4MbEQR1G65Pxfh/dzlPpoR5Ddbvt47Ehk06wa0TLSGgmdgdRfouTY3itaCHu+ZcPZwEe657xMy6azkImJxgDgSYOz2/uN/yVC4txF9QAOyOjRzTf1CiYuuSSohVRVM2FCXSCDU9Sbbb5KklfZOU2xrH51TYsU5TbNt9vzeZKSynMiJM3lIezXp+fZaPtFwruKFBxHic05jzOZ2UdDEeyzDKtvl/2gCJInn+fumCyPzVSR+bJiqCTp8inCZNlOMqZRbU2nkOiT3fMhIKZHKQVxh3uc4U26NiRtOvr91StdCs+G4sU7/q+XrufJTaFVloMbgf8vMXZSIu0XEdV1DsFjH1MM0ve50CxcXE+5F1xDG8VqPtNvb8910z+FPeNpEve3LJgAEkc/FA/dKuwLZLpOZHnUI8RZsJ8vtqnKOJzbH1W2sJhJzoZ0nMNAZKc7tP0hShKPIhlQCQgiQS0ysyPMkII0YcD0YcN02mMZiMjSbT109t0tEQxP8SDXrANpN8H9PxH5fv6rkWNY5hIdIO4Jv6wTC7ZxfEgscZh7hdziADHJswB0ndcR4wIrVLg+I6QR6EWKj62+IjkQCMIygjjH8+XL6hHEcv26INqCIPlOvyNkVN8HppI2nmOXRBkOcn6dX4Dbn6Qbe6AwL82UjUWIuCCPCQeUx7pNKmQNxex5ZgCD7/ugOg9uHTw6k79bHsF5nxNdMDeIHuucEZbcresXXUcViKWKwjy8gZaIe0XkvpuuB1IYW+srmFdpm+t/OSf+vmopJ2jCQ5Pl4iB5md0wKR99PLf86oVGZbHXqP2VkOPS3v/AGTbh1R0zBn890RKCISmuQSUwdEHmugdgcVY02l7b9cv7rnYVrwHGmnUbeBPVKYOJdlo8QyuLXVAdtHa68lNoYku1qCOW8RNv+lmDVkNcdD/AOTY5xNtVa8PrSLFhI/qi3lP1RAmGiw9WBHeOv0HtorGi/8AP7LNtxpZrkYekneLkbq2wWMc6Cbg+X58k9lE1WuZFmSWFHCO8l1g4aST3KSKhSu+Rsjwk00khLNVESnpYQqTi2ODZJI8J52B69eqtMdVytJ6fmtlzDtPxpwBp0w4AzLm6kHqR53+ZU2lpSP1A7S8YzOMkZT/ALjbWZDSJ13CwVe7ieZP5dTcRra/W3nuAUx3H5ISVPqMEITndHkVO4bwt1Yw2LbfqPQDco0sVoadlfcDoU3ua17LmxJziRHxZgQDBnwnpDkzh+Avc45m5Wt1JFh6khWWA4lSoOa5nijwkw/IY5AS3zPyU2t54qK/7azD8OZSpRkzNaYJIkgSNbA6GxA01Wc7S8Gy2GjiR7EuA9u8b7LS4SpnqipTJdTqtEsmGts7VptfMLjeBG6ruNPjCtJMuLmPg2MAiG9LT7lc9bzraa+Iv+DIpZmtnMDA5ZnOc0dBOT2We4fwzvHPN3ZRA6uJDA6/Uvd5ALR8Vx2WiACJIaJ/9Z9xKb7IUgcO8xJc5xHM92BAPmXFV2mKzJTETOD4jwunSptAHjcSAReABYDc7X6rEYug4OPhMTr9pXSyC6pUc45GaXHiLWiDlJMCXDYcrrJ8Uw9CrULW1CCNS5zQD5QAM3pBCvjtP6i9WYhBWWN4U6nEQQdD91Gr4N7PiaRzkEQtthnkoqKEshFCCEE5RfBBSQ1EUBveznEA6GTAIi5tJ6GFpqDYN2OMmLkREcpJt5rlnD8XlI2j5/dbrD8RDmXcfDFgANrwOf5up/V/YaVuNY2wGmoDTr6gzrKscHUnxBuY8yA0D3WTdj3PAyHTrYnlpHpIVhgJdAcb7G50vvt9lUSmYbjCYloHit8/kNFYtMjUfnqsTTrlmhvtmEC8C0ayolbiuIDiM9MX0kp6jq6FlQyJMJTSnqcGKSJ1OE+0InBLtAyWZ7QMJaQ5xaLaDM7WbNg/TnAXIe17S2oQaZHLO6Xxe+UHw+sHyXauMuDWOIieegtfbX0uuO9sGy6YgONicoe7+qB8I9fO8hKWlVBwzAOqOAG/IEreYfgLSwNc2T6D6LK8DYA6SSQNWt36EyB9V0Dh2JBaIaQOq5uaZdFMQeHdm6bHTkHrc+vNRuK4NmHqte1sDeAAAdJtc+S1VLSbrMdo3EuiYHSTM/06+xWVLTM+rmIZntVgKmQ1u+eWuuRMC9rAHZSsLxLAYmjhRiKjqFXDANLQHZXtB/TFrwOtyrsURUw/dOdmN7kZT01JKw3EOBva50XE8o12Fl0UnfJ/GNo/UnBcVFLEVe6cRRc55aOTLka7iYHknMdxR1Z7WiA1tgIsG5rW2/sqTuXNJB1FtOvy5K34Dgy5+Yi1uX5rHur6Rup7TmFcbwxaRJsRb0aYB9Z9kjsvxcUwWP0E+0zr53UvjWHeWufUJJLrRa0RA9ysu2xnzRNNjJEXmJ1c8a4s6vUDGuIBMT0zaxz15LWM7IMbiG1Zo/4JtMF2bKZGXxZibkk3mVznIdtbflkpveP8EvI/ll0c9NEdc+FM6sMNnqvdTpPPcte4tDpMMzHLtItCucUTWaKN5EXhx9Myf4NhG0aMuAzGTMAE9L7clXYVodVAPOfCHE+wg/sp3WkRn1NHYfw5jUvyg/X+yr39mnttAPUHZdGwrQGAQdN9fVN1ABtCyjlsqaQ5hjOE5BM35a/QqoqDquhccoZgT4THLb01WG4hSANv2+63pbWVoxGpG61PC6oDQTmHo0tB2JPL7brKNK0PAeJmlqAW8nAuF7b/ALK0w2mGxhvmymB8TpIy+dO1rciktdFQfqH9LiBc87n0JUbhmPpvsGUw+ScwDWumd7SNR0ukf4uo0gmnlBF5LHNn/Y1m2sDqka97qWk53AEkZS5odcXuTI215qvxGCohxBqUpndlOfX/ADkw/FU3M+KnmNiCC3kLSRmF7X58lHr8TeHEN7iPMO1ub2m/QJwl2qUE8WhEaapnhoEoOqc0s001Vpzb89UYNZ3tLxoU2FzQHkc5yDkAB8RmLSBzOgPE+M4lz6hc853E+ltLCB+aLqX8Qa3dsyN+N2rjIZTadXGNTGg62FlyeuL2dafiIEu6Nbf85KfjSPi+7M4SS0mmKr9sx/y2jWQ3f5Bb3Bh0eIt/8RDfSVkuztNzmi/dUd4M1qx3Ln/pbM6La4TQQABtC5eaXRSDzfJRK/D2uMwAedzby0Ux7EgEjZcnaYlvEIx4YA2G21vqR7rP1ezxDi5zpP8Abqtu5ocwOjfkq6rTF95XRS36xtDD4bsxmcXuNpMNMaXEFXeG4RDT3bCcpud72uef9lp+HcJNdwaAQ0EZjBIaNyt2aVKkC1jdgCItAs2THMrqrMywmHDeMcLqmiHuY4MMw46GBJv+kDn0Wa/+PvDnMqNLSIsQQYMEEdCIXozDYilV/wAvICG+QAMiPnfe49st2/4OIFcAC4aQBc7Ak5vK0b6otacER64jS4c9lXKQb6f2O6taOHcJhhBB5S09fzdaKphRmE76eY+hVlSp9FjPJrXrjMVMPVy7g7xYD2P7IYHh0PGYEHpBM+ZWuFOdR8v3Ruw7Rf5LOeT8XFdIw4gfdIqiE64qPV0UVlVoZ/j7JuAD8neh3WH4gQTa/mIePONfNbPi+JAOWoNbtd+k9JGhWI4m0ZrHyn9naFdnG57oUKbgK2U/g/AoTSnGFas1+IeCAybHeRY3ExKdwtcU4BeQSAf5RfWDmvYnZV2HrACxIPX9ipNWg9zbUg63xZsxjnlAkRzE7pHKe/irC6Q59MEHxEd7N9xlOUQYsDppdMYnieVxDSxwtBa2m0GQDYOaCPZQ8NUAEGiHzeQ+HeEySAJvpafMJTcUNn1GjlAt7OCZPTORANQQUdJLtA8qS8ctfkjQTy0DYYntRwbvcxAhoBLqhMf8WjQczqdrLkhw8vJa3MAcocdI6Sd787HZd847hzWYaTYh3xEyBqNYvHTfykrn3F+z7mOzMAAEwTym53n6DlyJ1UTBjs/w42z7aN2tz5npoI9FrqNMALMcP4q1uVlNuYmwtA5THoY8ultHha4MZnAk8tPfltK4uTddNUoFIq0ygyqHXBtz5+SW5xHkueWkDwD5zMPmLfkpVXCOc4BrSZ5fZCm2biVN4YGzmqGIPhILw+dsoAIcZtHVbcU/IRdouE4QUKYpz43AmDDSTvBglReJS1rr5XOIMxrtBIsTpsNpmEMdx5jJ7xzGwYALmySBcwbiLTbcqldx+hUu6u1gmLyATE6xrEefTVdn2PHMsaLXhpyFubYwQGzHiLdT8VQhu+bkZDNejVq0HtrFlJhENzvDiSNCYIa0TEAX3NyqniXafCsALKzHARMB2/8AVHKLTyUan23wz35MrXeEw4BrgSCZaDIAtOii2x9VHrOPgPLHRnaTNjALT+kkAHzUqjO/qo2Mq5qpcBYgbMA5RDQB9UvDVZPlbyIXPeW9YTxokvEprvJMA2RErG060iCsiZqADVK72fNMuq3yncSOvl1CdZEwz3aOlDXH9P6h/L/UOUa/ZYDFi+q6Rxh0NnUXBHTQgc/Jc6x+HymW/CflO3ku7inYcvJCGlgonBECt2SXh6oBEyRymPLmpmIoEuaWOAdlYYJYySWjxCSBOs8zJ3hVrHdfTT5pys4xkMeHQQDE3IB5SecaxvIEqtinvOQkObN3Bjc02kjL8UcxeCUguP6XZhsfG2esAwoVCoRcbXsdPUXCsKdOkQD4x0BZA8pKA9QyUJKdzhIJUdpGQSHFGGkoSltejtIwk01W8VwAe0gi0R1PQR+BXArBE6CjtIxx7tHwt1N4FMHxWIbqG6ZWxtEgukACw1KgcOxxc8Mecg0IJ02yta3Uxa3+2V1rinDGlpyiMwhxFnHk3NqAuU8e7Pvp1HPDSGgbHKxrZ3tLifKLaqZiJXW2NpgqzSPCIaLAzMnpFuXn5Qpov5e6592S4q+rWDTAa0OyMAkNa2C6o5xJJdeJnUz57qliJAIMybHn5DkuHlp1l01nUik6DpPoPsjq4p1NwMODcwP6mN8yQBPqYTbnD8uo2OcAJAGwmCTfbl8lPHbJO0azXb3ip72aRk06IIa64zPqeJ8knS521HJc0qvqVCc1QON5LTIJN4MOgaWgDdbbtPgDVIcHODm5g1wJBg6tttssrw3gxl7BZ5BDGu/UQJgHQkQd1305Nj6wtx5KvqVHsAHeEDWP3TmHqPNWnPxB3ueXyCd4vgLg9G2Fy05QSCPX5qRwvAkOD3kzsHdRYnlzVTaMTFJ3xtTXgtFtNIHnsp2Aok8gCZNrKqpat9pv1tpqtRSoBrQOl/VcPJbHVWpEQLaJmq/fbfonCo+JcA3NpHxch1PTqsY9aCqO1tJG3Pp5qrxNYPaQ0z+pp0jkem4PX5v1qwg8wLjmNj/fqFjuL48sfLbTc7azcjSTcEaE33XRx01je2HsZxwxDhIMgg6yLHyI0IOoiNVmsXWky02PrB3B5hOY3FZnFw/VqNQevnr+awXjku2tcc1p0mUkotECqQNHmtG3JEERTBVN8eXv8lI7sG4IHSXfY/VREcoD1u5iSloFZ4BApbXBNpQTwaUYSYShTQNNHUabJWY7U4F1dhbmyt3O8dBoT5+y1JYq/i1IuYReCNvi9EYNcTZ/9esWCQ1xGYmc7miSGjzva37rccKxwq6QMoEtBHgGwdykA67BYztfQ7uroWkiRcufBtMwL2IEW6lRuD4klopmW02kktDjJJuAT+p5I5WA5BZ8lNhtS2OmYauH3F2/p6/1eXJLxlIPYWzrafa3kqLBY6SKbRAa2XcgbANBHICPRXLH76W081w2rkuiJYziGHqU3HORlBAEnYH3nTYjqFQYzjdMGCx7nDceESDGvkF0vHUG1QGuHr6aeSyPE+x0/wCmZuY0Hy9lpx3rvot2mPGYwvGqbvjD2u/mMuGwF/IfJWNIlx8Him1o02B87xO/opeH7E1JBc5rRbU+q0PCuF0cLdvieQQXawOk+Rur5OSn4KRaI9R+AcOeHZ6wgRIBEFxEbcr/AIFeVasEHTb6KsrYySBMlp+okR1t803h+IioS3pI8wYdHS7D6rnmJn1ewmtxIeAdDOU9HCxEKr49jzQAqRmbOV7eY3g/zbjnpuFRu42G980n4Q2oI/mY+HR6gz5qJ2n4y2tScB8Tagn0lubyLC0+p5LenDPb/jK3JGF4niIa4NzeGJpP2dSqDwtP+0+E8pHJZjGYgk5T+kxO8fn1KiurEjLtMj5yEio+bnU6+f59V2VpEOa15kbnIiZHkkygCqSEoIIJkCIoSgUAYQQQQHryUEcBFC58lfgsqPKhlQhHo8KhEiQlPZLIGUzWEg3jry6ibe6cJSXCU+1hkOTfxHwUHOBlYTJc6S95NtzmPryELHcLac1hEakzkpjlEXcYj+y612y4L3olrM7hfM90NbrdxFz5NE7brjWKnvSxlSWsJl05AT+q82E2391UewqG3wGLayAJJ1cTAj+p0bxoPurwVCddT8raegWI4Ji2MB8WZzv9MAeI3/1PFZrdYEbTsYtcT2jY1rQw5qjyA2Ns3wxzJsRvcErmvxzM+Nq2aOrUg+X1Oyg4jGAGNzMeQ1PrBUOtjBTaGudNQguMGbC7nHlfw+cLNcV4zkMj4nxl5BrSQ0fdZV4plc3iGj4ljokE/CQT0+Iff2VPV44HV2AE5DRe/wBS0lv/AKyfVZriPEi41Ycd266iGtJ84A8r81VHFukGbgAeggR7ABdNOCI+srcv+mowXGj3rS4yHUGk/wC4CT7g/IKDhOLkVPNtYe7fDf0ComVDIHK3pEEJum+DPKfmIWvSGf8AST78US4nmXH/AJa+5CYz3PUR7CB9AkttCNwVoJCGyMIEIAkSBQTIEESNABAIIwgAiRoID1zkKGUp8opWKjOUo8pTsopQDeQoFhTsokA1kKTBTyEI0Kni+F7ym5r3EUyIcBYuB2JF76QNeui4t2s4OadSocoZTaR4ZGYTpmg6mRaZ10grvVRg9duh5j7rnv8AEXAF7clNmZzPG53wsZI1cf1OImwny3TiThx5+IPi8gOkDpuOiPA4sNeXOe4HmBLosHQ6RlJb4QRoCU3iaUGN+XKFFy/3ViVo3il3OdqYtyDfhYOg+p3VZXxBc4vJvr5RoB0CST/ZIKIjCmRl37pBQGiJMgzI2ahEAnKTJN0AbmyjLPpKk4WjI+Xsm8UMrh7fnzS08RiLJJTtU2KZBThIFFCBQTAIIIIA0EEEAEIQQQHsEPCIwggsVm3AJCJBBDRoIKgAQhEgmQi1VvF8KH03NgwZk7k/nPkBpKCCZOddreCUcJRIbTBc/wATiTmcSHSG5nXyg+pjYWPK6zTJnXdBBC/ww3mgGWKCCCIeiKCCZHWM+acqeEnz+kf3QQSP8W1BrRf+YEj6qr4n8V+n0QQU1+qt8RHDmkwggrZiRoIJgRRwgggAUaJBAGgggkH/2Q==">
<div class="form">
Name: <input type="text"><br>
Class: <input type="text"><br>
Roll No: <input type="text">
</div>
</div>
<div class="col2">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In vel odio non felis consectetur consectetur ut in felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris quis cursus metus. Nulla ligula purus, pellentesque eu dignissim fermentum, finibus nec mi. Curabitur sapien ex, dignissim eu accumsan sollicitudin, semper sed risus. Mauris pulvinar nisi quis semper interdum. Ut eu hendrerit felis, a gravida neque. Donec tincidunt quam et justo tincidunt tincidunt. Donec in quam tempus, tempus erat vel, fringilla lectus. Nullam iaculis non ipsum sodales varius. Etiam sagittis egestas orci non aliquet. Sed venenatis sodales sem, ut ultrices lacus dapibus quis. Curabitur volutpat libero eget volutpat ornare. Phasellus condimentum laoreet risus ultrices vulputate. Vestibulum dignissim ipsum et leo interdum varius. Maecenas vehicula enim id massa tincidunt scelerisque.
Sed diam nisi, aliquet eu massa non, tempor vehicula libero. Nam nec bibendum augue, nec eleifend orci. Quisque efficitur volutpat dui id semper. Duis ac mi leo. Donec eget suscipit ex, suscipit finibus nulla. Sed convallis enim vel lorem porttitor tincidunt. Etiam convallis facilisis urna. Nullam viverra tempor metus, ac pellentesque massa sodales sit amet. Maecenas sed consequat elit, ut volutpat arcu. Nam dui mi, vestibulum ut enim id, fermentum tempor lorem. Nunc eleifend, magna lobortis blandit pulvinar, justo tellus placerat lorem, in venenatis augue velit vel neque.
Donec fermentum cursus urna ut mattis. Fusce tincidunt augue volutpat, molestie dolor ac, vehicula dolor. Duis ante orci, pulvinar sit amet tincidunt volutpat, malesuada et urna. Suspendisse at hendrerit neque. Nullam vel varius tellus. Morbi sed sapien at nisl consequat interdum. Mauris quis odio id nulla suscipit feugiat sit amet et leo. Vivamus viverra pellentesque ligula at aliquam. Sed quis massa ullamcorper, ullamcorper turpis quis, tempus lorem. Sed quis nunc fermentum, commodo ante et, pulvinar tortor. Donec tincidunt sagittis nibh nec consectetur. Proin facilisis pretium mi, vitae pharetra neque sollicitudin at. Etiam condimentum odio id tortor finibus, eget porttitor mi aliquam. Vestibulum vulputate tincidunt tortor nec volutpat. Phasellus ut est risus. Sed convallis quis libero id congue.
Sed tempus, dui a sodales ullamcorper, lorem nunc varius lectus, nec sollicitudin mi leo eu mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris quis porttitor ante. Donec tincidunt molestie nunc posuere maximus. Praesent rhoncus cursus sem. Sed vitae vulputate urna. Morbi nec purus sit amet enim pharetra eleifend at eget nisi. Aliquam feugiat sodales massa, ut aliquet magna. Mauris justo metus, mollis ac porta ut, molestie hendrerit dolor. Mauris sed est interdum, feugiat eros eu, vehicula odio.
Vivamus lorem nibh, accumsan eget nibh efficitur, aliquam volutpat metus. Sed id dolor eget nisi ultricies tempor et blandit lectus. Fusce id ipsum at est congue ultrices. Sed id rutrum mi. Suspendisse semper justo ac metus finibus, vitae accumsan leo sagittis. Aliquam quis elit dolor. Morbi et tellus venenatis, imperdiet elit ac, semper augue. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vestibulum ullamcorper porta lectus, in ullamcorper eros scelerisque ut. Sed id odio sit amet dolor vulputate finibus vel non dolor. Praesent orci lorem, porta sit amet turpis molestie, volutpat vestibulum felis. Phasellus non orci aliquet, vulputate risus in, tempor mi.
</div>
</div>
No need to use any CSS for 50%-50% screen or media query if u use this
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="border col-sm-6">
<div>
<img src="sample.jpg">
</div>
<div>
<h2>Contact us</h2>
<form >
First name:
<input type="text" name="firstname">
<br><br>
Last name:
<input type="text" name="lastname" >
<br><br>
Email ID:
<input type="email" name="email" >
<br><br>
<input type="submit" value="Submit">
</form>
</div>
</div>
<div class="border col-sm-6">
<h1>hello</h1>
<h2>hello</h2>
<h3>hello</h3>
<h4>hello</h4>
<h5>hello</h5>
<h6>hello</h6>
</div>
</div>
</div>
</body>
</html>

Angular2 <div> which taking full screen size

Im building an Angular2 application and have the following issue which I can't seem to solve or find a solution for. Here is an image of my page:
Code:
content.component.html
<app-header></app-header>
<div class="content">
</div>
content.component.css
.content{
height: calc(100vh - 60px);
background-color: rgb(167, 167, 167);
}
Header has a fixed height of 60px;
I want to give the content component a background-color and I'm looking for a <div> which has the following properties:
The <div> needs to fill up the whole page but not more than this (no scrollbars if not necessary).
The <div> should automatically adjust in size whenever scrollbars do arrive (when screen width is getting smaller and content pressed on top of each other).
I tried height: calc(100vh - headercomponentHeight) but this gives problems when the content is stacked and scrollbars pop up because the content will flow out of the <div>.
Something like this should work
header {
background: #ccc;
height: 60px;
}
main {
background: #ddd;
min-height: calc(100vh - 60px);
position: relative;
padding: 20px;
}
<header></header>
<main class="content">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Massa sed elementum tempus egestas. Tempus quam pellentesque nec nam. Quis imperdiet massa tincidunt nunc pulvinar sapien et ligula ullamcorper. Blandit aliquam etiam erat velit scelerisque in dictum non consectetur. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Cursus risus at ultrices mi. Donec massa sapien faucibus et. Nulla pellentesque dignissim enim sit. Tristique sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula. At urna condimentum mattis pellentesque id nibh. Diam in arcu cursus euismod quis viverra nibh. Nec feugiat nisl pretium fusce. Cras tincidunt lobortis feugiat vivamus at augue eget. Placerat vestibulum lectus mauris ultrices eros in. Bibendum at varius vel pharetra. Sed velit dignissim sodales ut eu sem integer. Enim nec dui nunc mattis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Massa sed elementum tempus egestas. Tempus quam pellentesque nec nam. Quis imperdiet massa tincidunt nunc pulvinar sapien et ligula ullamcorper. Blandit aliquam etiam erat velit scelerisque in dictum non consectetur. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Cursus risus at ultrices mi. Donec massa sapien faucibus et. Nulla pellentesque dignissim enim sit. Tristique sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula. At urna condimentum mattis pellentesque id nibh. Diam in arcu cursus euismod quis viverra nibh. Nec feugiat nisl pretium fusce. Cras tincidunt lobortis feugiat vivamus at augue eget. Placerat vestibulum lectus mauris ultrices eros in. Bibendum at varius vel pharetra. Sed velit dignissim sodales ut eu sem integer. Enim nec dui nunc mattis.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Massa sed elementum tempus egestas. Tempus quam pellentesque nec nam. Quis imperdiet massa tincidunt nunc pulvinar sapien et ligula ullamcorper. Blandit aliquam etiam erat velit scelerisque in dictum non consectetur. Sed cras ornare arcu dui vivamus arcu felis bibendum ut. Cursus risus at ultrices mi. Donec massa sapien faucibus et. Nulla pellentesque dignissim enim sit. Tristique sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula. At urna condimentum mattis pellentesque id nibh. Diam in arcu cursus euismod quis viverra nibh. Nec feugiat nisl pretium fusce. Cras tincidunt lobortis feugiat vivamus at augue eget. Placerat vestibulum lectus mauris ultrices eros in. Bibendum at varius vel pharetra. Sed velit dignissim sodales ut eu sem integer. Enim nec dui nunc mattis.</p>
</main>

Positioning a banner on the right side of a site

I don't know how to position an image with CSS on the right side of the website. I need absolute values from the center of the page and from the top. I can't use absolute value from left or right, because I want the banner to be always next to the right side of the main content (also when the browser is resized). The main content is in the center of the page. Since the image sizes can change, it should always be at the same distance from the page content.
How to do that?
Thanks,
Ivan
EDIT: This is a dummy sketch how I imagined it.
#content {
background-color: blue;
width: 50%;
position: absolute;
left: 50%;
transform: translateX(-50%);
}
#banner {
background-color: red;
width: 150px;
position: absolute;
left: calc(75% + 15px);
}
<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Facilisi cras fermentum odio eu feugiat pretium nibh ipsum. Vel elit scelerisque mauris pellentesque. Diam phasellus vestibulum
lorem sed risus ultricies tristique nulla. Facilisis magna etiam tempor orci. Convallis a cras semper auctor neque vitae tempus. Lorem sed risus ultricies tristique. Gravida cum sociis natoque penatibus. A cras semper auctor neque vitae tempus quam
pellentesque. Morbi tristique senectus et netus et. Platea dictumst quisque sagittis purus sit amet. Eget nunc scelerisque viverra mauris in aliquam sem fringilla. Mauris nunc congue nisi vitae suscipit tellus mauris. Sed nisi lacus sed viverra tellus.
Eget mi proin sed libero enim sed faucibus. Gravida quis blandit turpis cursus in. Purus non enim praesent elementum facilisis. Odio aenean sed adipiscing diam donec. Id eu nisl nunc mi ipsum. Tellus mauris a diam maecenas sed enim. Nibh praesent tristique
magna sit. Sapien nec sagittis aliquam malesuada bibendum. Commodo elit at imperdiet dui accumsan sit amet nulla. Augue neque gravida in fermentum et. Augue eget arcu dictum varius duis at. Diam vel quam elementum pulvinar. Justo nec ultrices dui sapien
eget. Nisi quis eleifend quam adipiscing vitae. Mauris sit amet massa vitae tortor condimentum. Velit euismod in pellentesque massa placerat duis ultricies. Nunc sed blandit libero volutpat sed cras ornare. Tempus egestas sed sed risus pretium quam
vulputate dignissim. Lacus sed viverra tellus in hac. Quam adipiscing vitae proin sagittis. Mi in nulla posuere sollicitudin aliquam. Ut etiam sit amet nisl purus in. Enim sed faucibus turpis in eu. In arcu cursus euismod quis. Amet consectetur adipiscing
elit duis tristique sollicitudin nibh sit amet. In iaculis nunc sed augue lacus. Egestas fringilla phasellus faucibus scelerisque eleifend. Feugiat scelerisque varius morbi enim nunc faucibus a pellentesque sit. Vitae sapien pellentesque habitant morbi
tristique senectus et netus et. Duis ultricies lacus sed turpis tincidunt id. Nunc pulvinar sapien et ligula ullamcorper. Commodo odio aenean sed adipiscing diam donec adipiscing tristique. Dignissim cras tincidunt lobortis feugiat vivamus at augue
eget arcu. Dignissim suspendisse in est ante. Sed cras ornare arcu dui vivamus. Id porta nibh venenatis cras. Dignissim enim sit amet venenatis urna cursus eget. Eu tincidunt tortor aliquam nulla facilisi. Netus et malesuada fames ac turpis egestas
sed tempus urna. Turpis in eu mi bibendum neque egestas congue quisque. Non tellus orci ac auctor augue mauris augue. Nisi scelerisque eu ultrices vitae auctor. Nunc sed blandit libero volutpat sed cras. Ornare lectus sit amet est placerat in egestas
erat imperdiet. Praesent elementum facilisis leo vel. Tortor dignissim convallis aenean et tortor at risus viverra adipiscing. Ut enim blandit volutpat maecenas volutpat blandit. Senectus et netus et malesuada fames.
</div>
<div id="banner">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Facilisi cras fermentum odio eu feugiat pretium nibh ipsum. Vel elit scelerisque mauris pellentesque. Diam phasellus vestibulum
lorem sed risus ultricies tristique nulla. Facilisis magna etiam tempor orci. Convallis a cras semper auctor neque vitae tempus. Lorem sed risus ultricies tristique. Gravida cum sociis natoque penatibus.
</div>
It may work better if you put it in full screen, It's not really optimized for stack overflow's small snippet size. If you need it to work for that I recommend some #media queries that remove the centering and move the banner over more.
You can center the content using flex box. code snippet and I attached code pen url in here. I used dummy content for the banner for reference. And remenber add height and width to 100% inorder to effect on the flexbox on wrapper div.And make sure to add min-width to content div and banner div to different screen sizes using media query.In here I didn't add media query since your content might be different than me.
code pen url click here
* {
box-sizing: border-box;
}
.wrapper {
width: 100%;
max-width: 600px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
margin: auto;
}
#banner {
min-width: 150px;
align-self: flex-start
}
<div class="wrapper">
<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Facilisi cras
fermentum odio eu feugiat pretium nibh ipsum. Vel elit scelerisque
mauris pellentesque. Diam phasellus vestibulum lorem sed risus ultricies
tristique nulla. Facilisis magna etiam tempor orci. Convallis a cras
semper auctor neque vitae tempus. Lorem sed risus ultricies tristique.
Gravida cum sociis natoque penatibus. A cras semper auctor neque vitae
tempus quam pellentesque. Morbi tristique senectus et netus et. Platea
dictumst quisque sagittis purus sit amet. Eget nunc scelerisque viverra
mauris in aliquam sem fringilla. Mauris nunc congue nisi vitae suscipit
tellus mauris. Sed nisi lacus sed viverra tellus. Eget mi proin sed
libero enim sed faucibus. Gravida quis blandit turpis cursus in. Purus
non enim praesent elementum facilisis. Odio aenean sed adipiscing diam
donec. Id eu nisl nunc mi ipsum. Tellus mauris a diam maecenas sed enim.
Nibh praesent tristique magna sit. Sapien nec sagittis aliquam malesuada
bibendum. Commodo elit at imperdiet dui accumsan sit amet nulla. Augue
neque gravida in fermentum et. Augue eget arcu dictum varius duis at.
Diam vel quam elementum pulvinar. Justo nec ultrices dui sapien eget.
Nisi quis eleifend quam adipiscing vitae. Mauris sit amet massa vitae
tortor condimentum. Velit euismod in pellentesque massa placerat duis
ultricies. Nunc sed blandit libero volutpat sed cras ornare. Tempus
egestas sed sed risus pretium quam vulputate dignissim. Lacus sed
viverra tellus in hac. Quam adipiscing vitae proin sagittis. Mi in nulla
posuere sollicitudin aliquam. Ut etiam sit amet nisl purus in. Enim sed
faucibus turpis in eu. In arcu cursus euismod quis. Amet consectetur
adipiscing elit duis tristique sollicitudin nibh sit amet. In iaculis
nunc sed augue lacus. Egestas fringilla phasellus faucibus scelerisque
eleifend. Feugiat scelerisque varius morbi enim nunc faucibus a
pellentesque sit. Vitae sapien pellentesque habitant morbi tristique
senectus et netus et. Duis ultricies lacus sed turpis tincidunt id. Nunc
pulvinar sapien et ligula ullamcorper. Commodo odio aenean sed
adipiscing diam donec adipiscing tristique. Dignissim cras tincidunt
lobortis feugiat vivamus at augue eget arcu. Dignissim suspendisse in
est ante. Sed cras ornare arcu dui vivamus. Id porta nibh venenatis
cras. Dignissim enim sit amet venenatis urna cursus eget. Eu tincidunt
tortor aliquam nulla facilisi. Netus et malesuada fames ac turpis
egestas sed tempus urna. Turpis in eu mi bibendum neque egestas congue
quisque. Non tellus orci ac auctor augue mauris augue. Nisi scelerisque
eu ultrices vitae auctor. Nunc sed blandit libero volutpat sed cras.
Ornare lectus sit amet est placerat in egestas erat imperdiet. Praesent
elementum facilisis leo vel. Tortor dignissim convallis aenean et tortor
at risus viverra adipiscing. Ut enim blandit volutpat maecenas volutpat
blandit. Senectus et netus et malesuada fames.
</div>
<div id="banner">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Facilisi cras
fermentum odio eu feugiat pretium nibh ipsum. Vel elit scelerisque
mauris pellentesque. Diam phasellus vestibulum lorem sed risus ultricies
tristique nulla. Facilisis magna etiam tempor orci. Convallis a cras
semper auctor neque vitae tempus. Lorem sed risus ultricies tristique.
Gravida cum sociis natoque penatibus.
</div>
</div>