Related
I'm trying to handle 3 columns, each of one with independent scroll.
The first column has a absolute element which should overflow on x axis but overflow-x:visible is not working combined with overflow-y: auto
Can you help me?
.container {
display: flex;
}
.column2 {
width: 60%;
background-color: #bababa;
height: 5000px;
}
.side-column {
width: 20%;
background-color: #eeeeee;
height: 100vh;
position: sticky;
top: 0;
overflow-y: auto;
overflow-x: visible;
}
.side-content {
width: 100%;
height: 3000px;
}
.picker {
position: absolute;
top: 25px;
left: 25px;
height: 300px;
width: 300px;
background-color: #f00;
}
.column3 {
height: 100px;
}
<div class="container">
<div class="side-column">
<div class="side-content">
column1
<div class="picker"></div>
</div>
</div>
<div class="column2">
content
</div>
<div class="side-column column3">
<div class="side-content">
column3
</div>
</div>
</div>
https://jsfiddle.net/burro92/nvepx7dL/
Try to avoid unused boxes...
The overflow: auto; only works when the inner content has more width or height than the container. If so it will add scroll-bar automatically.
what about this code...
HTML
<div class="container">
<div class="column1">
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum aperiam, repellendus sequi debitis dolorum illo hic sed, cumque voluptatibus magnam sint architecto ullam laboriosam ipsa molestias culpa ab possimus soluta nobis omnis? Ab praesentium consectetur, est laborum voluptatem vitae, accusantium cum odio voluptates consequatur mollitia maxime assumenda sapiente dignissimos quo quis? Sit nulla esse deleniti odio asperiores perspiciatis, autem animi impedit quasi laborum minus labore natus delectus quaerat dolorem. Soluta tempora animi id quo recusandae nulla, cupiditate itaque voluptatem odit. Veritatis nemo quos temporibus soluta voluptas, quae facilis vel laboriosam labore. Debitis illo, harum fugiat quo laboriosam tenetur mollitia perspiciatis.
</p>
</div>
<div class="column2">
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum aperiam, repellendus sequi debitis dolorum illo hic sed, cumque voluptatibus magnam sint architecto ullam laboriosam ipsa molestias culpa ab possimus soluta nobis omnis? Ab praesentium consectetur, est laborum voluptatem vitae, accusantium cum odio voluptates consequatur mollitia maxime assumenda sapiente dignissimos quo quis? Sit nulla esse deleniti odio asperiores perspiciatis, autem animi impedit quasi laborum minus labore natus delectus quaerat dolorem. Soluta tempora animi id quo recusandae nulla, cupiditate itaque voluptatem odit. Veritatis nemo quos temporibus soluta voluptas, quae facilis vel laboriosam labore. Debitis illo, harum fugiat quo laboriosam tenetur mollitia perspiciatis.
</p>
</div>
<div class="column3">
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Laborum aperiam, repellendus sequi debitis dolorum illo hic sed, cumque voluptatibus magnam sint architecto ullam laboriosam ipsa molestias culpa ab possimus soluta nobis omnis? Ab praesentium consectetur, est laborum voluptatem vitae, accusantium cum odio voluptates consequatur mollitia maxime assumenda sapiente dignissimos quo quis? Sit nulla esse deleniti odio asperiores perspiciatis, autem animi impedit quasi laborum minus labore natus delectus quaerat dolorem. Soluta tempora animi id quo recusandae nulla, cupiditate itaque voluptatem odit. Veritatis nemo quos temporibus soluta voluptas, quae facilis vel laboriosam labore. Debitis illo, harum fugiat quo laboriosam tenetur mollitia perspiciatis.
</p>
</div>
</div>
CSS
.container{
display: flex;
}
.column1{
width: 20%;
height: 300px;
background-color: rgb(211, 210, 210);
overflow: auto;
}
.column2{
width: 60%;
height: 300px;
background-color: rgb(255, 255, 255);
overflow: auto;
}
.column3{
width: 20%;
height: 300px;
background-color: rgb(211, 210, 210);
overflow: auto;
}
Output
It will add a scroll bar automatically where needed.
But if you want scroll bar in a specific side just change overflow: auto; to either overflow-y: auto; or overflow-x: auto;.
Do not make it as overflow: scroll; because it will always add a scroll bar whether it is scrollable or not. So avoid using this
What I'm trying to do is to add top and bottom shadows to a parent container on content scrolling. It works nicely everywhere except Chrome on retina screens. It behaves weird. When content gets scrolled the background is stuck on top, bottom or both.
.container {
width: 300px;
height: 150px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 1px solid #eee;
overflow: auto;
background:
linear-gradient(white 30%,rgba(255,255,255,0)),
linear-gradient(rgba(255,255,255,0),white 70%) 0 100%,
radial-gradient(farthest-side at 50% 0,rgba(0,0,0,.3),rgba(0,0,0,0)),
radial-gradient(farthest-side at 50% 100%,rgba(0,0,0,.3),rgba(0,0,0,0)) 0 100%;
background-repeat: no-repeat;
background-color: white;
background-size: 100% 20px,100% 20px,100% 10px,100% 10px;
background-attachment: local,local,scroll,scroll;
}
.content {
padding: 15px 10px;
color: #555;
}
<div class="container">
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus iure repellendus tenetur totam possimus reiciendis error beatae nisi eligendi eveniet sit ullam, delectus dolorem voluptatum qui esse quod maxime praesentium cum perspiciatis dignissimos quam vero illum eius quisquam. Fugit ducimus repudiandae nisi corporis illo quo atque, aliquid. Perferendis labore vero quae officia eaque deserunt delectus, ipsa reiciendis vel eveniet, adipisci magni, possimus eum ipsum non laborum. Aspernatur iste, ratione eaque necessitatibus iure ipsum velit nobis quisquam explicabo quis voluptas inventore sapiente veniam, exercitationem assumenda natus eligendi! Soluta omnis blanditiis non dolor voluptates quo, est provident beatae enim id, numquam molestias placeat quibusdam. Facere expedita aliquam natus id nobis dolorem laboriosam omnis saepe, itaque adipisci, deleniti praesentium quidem maiores vitae, enim neque aperiam dolore impedit non illo accusamus ab consequatur quia vel. Fugit fugiat, quis iste sit recusandae maxime earum officiis. Temporibus doloremque quasi odit, voluptate, at, voluptates labore neque nesciunt tenetur voluptatum debitis aliquid delectus? Error architecto porro illo velit autem in voluptates cum accusantium aut maiores quam maxime consequuntur possimus labore commodi odit vero ipsam libero, aliquid iure quod temporibus, molestias delectus. Consectetur obcaecati, rem laborum tempore! Dolorem explicabo nisi accusamus qui soluta amet mollitia laboriosam illum molestias et.
</div>
</div>
I speculate that background-attachment property causes it somehow.
Video: https://monosnap.com/file/uIWzofapTsteYNuv3tkdO9kWM1PjCv
Fixed that by adding pseudo elements to .container and removed 2 unnecessary backgrounds from it.
.container {
width: 300px;
height: 150px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 1px solid #eee;
overflow: auto;
background-color: #fff;
background-repeat: no-repeat;
background-image:
radial-gradient(farthest-side at 50% 0,rgba(0,0,0,.3),rgba(0,0,0,0)),
radial-gradient(farthest-side at 50% 100%,rgba(0,0,0,.3),rgba(0,0,0,0));
background-position: 0 0, 0 100%;
background-size: 100% 10px;
}
.container::before {
content: "";
position: relative;
display: block;
height: 30px;
margin: 0 0 -30px;
background: linear-gradient(to bottom, white, white 30%,rgba(255,255,255,0));
z-index: -1;
}
.container::after {
content: "";
position: relative;
display: block;
height: 30px;
margin: -30px 0 0;
background: linear-gradient(to bottom, rgba(255,255,255,0), white 70%, white);
z-index: -1;
}
.content {
padding: 15px 10px;
color: #555;
}
<div class="container">
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus iure repellendus tenetur totam possimus reiciendis error beatae nisi eligendi eveniet sit ullam, delectus dolorem voluptatum qui esse quod maxime praesentium cum perspiciatis dignissimos quam vero illum eius quisquam. Fugit ducimus repudiandae nisi corporis illo quo atque, aliquid. Perferendis labore vero quae officia eaque deserunt delectus, ipsa reiciendis vel eveniet, adipisci magni, possimus eum ipsum non laborum. Aspernatur iste, ratione eaque necessitatibus iure ipsum velit nobis quisquam explicabo quis voluptas inventore sapiente veniam, exercitationem assumenda natus eligendi! Soluta omnis blanditiis non dolor voluptates quo, est provident beatae enim id, numquam molestias placeat quibusdam. Facere expedita aliquam natus id nobis dolorem laboriosam omnis saepe, itaque adipisci, deleniti praesentium quidem maiores vitae, enim neque aperiam dolore impedit non illo accusamus ab consequatur quia vel. Fugit fugiat, quis iste sit recusandae maxime earum officiis. Temporibus doloremque quasi odit, voluptate, at, voluptates labore neque nesciunt tenetur voluptatum debitis aliquid delectus? Error architecto porro illo velit autem in voluptates cum accusantium aut maiores quam maxime consequuntur possimus labore commodi odit vero ipsam libero, aliquid iure quod temporibus, molestias delectus. Consectetur obcaecati, rem laborum tempore! Dolorem explicabo nisi accusamus qui soluta amet mollitia laboriosam illum molestias et.
</div>
</div>
My CSS is messed up, I've tried to fix it for the last 4 hours and I couldn't fix that.. I got a div inside another divs which are all under the same section.
The '.app' div gets out the of the section and moving down over another section
Here is a picture to explain better:
html:
<section id="portfolio" data-aos="fade-right">
<h1 data-aos="slide-right">My Projects</h1>
<!-- Swiper -->
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">
<div class="app">
<div class="image">
<img src="../assets/images/coupon.jpg" alt="" />
</div>
<ul>
<li><span> Name: </span> Coupon System</li>
<li><span>Description:</span> Final project in studies</li>
<li><span>Back-end:</span> Java,Spring Framework, Hibernate</li>
<li><span>Front-end:</span> Angular, CSS, Html</li>
<li><span>Database:</span> MySQL</li>
<li>
<span>Link:</span>
<button
onclick="window.open('http://coupon1.us-east-2.elasticbeanstalk.com','_blank')"
>
click here
</button>
</li>
</ul>
</div>
</div>
</div>
<!-- Add Pagination -->
<div class="swiper-pagination"></div>
<!-- Add Arrows -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</section>
css:
.swiper-container {
margin: 0 auto;
position: relative;
overflow: hidden;
list-style: none;
padding: 0;
z-index: 1;
}
.swiper-wrapper {
position: relative;
width: 100%;
height: 100%;
z-index: 1;
}
.swiper-slide {
-webkit-flex-shrink: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
width: 100%;
height: 100%;
position: relative;
}
#portfolio {
background: #00ff40;
padding: 30px 10px 30px 10px;
}
.app {
position: absolute;
display: flex;
flex-wrap: wrap;
height: 100%;
background-color: #bc2a8d;
}
.app .image {
display: flex;
flex-direction: column;
min-width: 100%;
justify-content: center;
align-items: center;
height: 30%;
}
.app .image img {
flex-grow: 1;
max-width: 100%;
max-height: 100%;
}
As you can also see there is a big space between the picture and the text inside the main div which I would like to remove.
thanks by heart!
Update: to make it easier to fix I removed the '.app' div and used a new one with only paragraph inside:
<div class="swiper-container">
<div class="swiper-wrapper">
<div>
<p>
facilis nobis atque quod eum maxime non aspernatur, consequatur
ad. Ad, fuga vero? Aut pariatur deserunt nulla incidunt. Possimus
nesciunt vel at enim. Ea, iste. Doloremque, blanditiis explicabo
atque perferendis laboriosam excepturi cum consequuntur deleniti?
Cumque adipisci asperiores doloremque saepe optio nam temporibus
labore totam. Provident, amet officiis? Numquam dicta officia
nulla autem blanditiis ratione. Nam placeat doloribus veniam
perspiciatis corrupti ratione, odio deserunt repellat, adipisci
recusandae incidunt culpa fuga aspernatur et temporibus illum
suscipit reiciendis saepe quam. Iusto illo culpa veritatis
consequuntur alias quo a nulla soluta eveniet reprehenderit
sapiente veniam nam, commodi est officiis porro aliquid.
Laboriosam debitis eaque commodi nesciunt earum ipsam voluptates,
quo ab. Adipisci consequuntur ut hic repellendus? Eligendi
mollitia, voluptatum sed magni quo aliquam officiis blanditiis qui
tempore adipisci quasi deserunt, nam reiciendis, non nostrum nemo
doloremque eius quisquam eos ad corrupti. Labore accusantium totam
eaque natus iste incidunt praesentium? Voluptatum numquam dolorem
vitae mollitia quae! Molestias laboriosam, sapiente, earum
accusantium unde aperiam itaque corrupti culpa pariatur maiores
obcaecati sint illo veniam. Architecto optio minus voluptas
voluptatum quibusdam, neque odit nihil ex officiis explicabo
voluptates quod. Omnis, ab consequuntur! Quam inventore ut non
odio velit doloribus rem, cum amet iusto quia suscipit? Culpa
minus fuga harum saepe voluptatum ipsum non unde, nemo, deleniti
illo enim mollitia quaerat officia commodi optio laborum
blanditiis corporis laboriosam, tempora obcaecati ipsam eligendi
quam! A, inventore accusantium. Totam quibusdam quam dignissimos
quisquam reprehenderit quidem tenetur fuga voluptates minus
praesentium iste dicta illo eveniet rem eum, sunt omnis quae natus
ea! Quasi enim voluptatibus non. Doloribus, minus odit. Atque in
minus quidem sit, consectetur fugiat obcaecati veritatis,
architecto aperiam eaque sed delectus vero debitis accusantium
laboriosam corporis nemo exercitationem ex ad. Esse consequuntur,
provident non iusto dolorem inventore. Excepturi explicabo
quisquam qui commodi corporis dolore. Minima, beatae alias
perferendis quaerat deserunt, obcaecati eveniet consectetur, odio
quos dolor repellat? Aliquid, impedit quasi ratione blanditiis
ipsam esse odit soluta doloribus. Iste, harum repellendus quaerat
vel iusto ducimus ratione cumque a magni ipsa nihil, fugiat itaque
cupiditate quae non incidunt. Modi nesciunt fugiat quam ipsa magni
officia quasi a error accusamus? Cumque ad, iure necessitatibus
excepturi animi ipsum debitis distinctio maxime, cupiditate
impedit vel quis quo explicabo error deleniti accusamus autem
quae, rerum exercitationem deserunt illo repellat. Enim distinctio
reprehenderit quas? Quos reiciendis nemo provident porro adipisci
quam magni perferendis vero error necessitatibus, reprehenderit
corrupti labore deleniti ea non cumque nobis harum incidunt?
Commodi ratione quis obcaecati vel eligendi excepturi quasi.
Libero quae earum neque consequuntur vero tempora! Aliquid
officiis architecto sunt pariatur maiores consectetur officia
doloribus iste provident soluta ab, distinctio vel illum
voluptates nulla ea doloremque odio nemo voluptas.
</p>
</div>
result is still the same though:
.swiper-container {
margin: 0 auto;
position: relative;
overflow: hidden;
list-style: none;
padding: 0;
z-index: 1;
}
.swiper-wrapper {
position: relative;
width: 100%;
height: 100%;
z-index: 1;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
-o-transition-property: transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
.swiper-container-multirow > .swiper-wrapper {
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.swiper-slide {
-webkit-flex-shrink: 0;
-ms-flex-negative: 0;
flex-shrink: 0;
width: 100%;
height: 100%;
position: relative;
-webkit-transition-property: -webkit-transform;
transition-property: -webkit-transform;
-o-transition-property: transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
}
#portfolio {
background: #00ff40;
padding: 30px 10px 30px 10px;
}
#portfolio h1 {
margin-bottom: 0px;
margin: 0;
text-align: center;
font-size: 20px;
border-bottom: 3px solid rgb(223, 0, 0);
}
.app {
position: absolute;
display: flex;
flex-wrap: wrap;
height: 100%;
background-color: #bc2a8d;
}
.app .image {
display: flex;
flex-direction: column;
min-width: 100%;
justify-content: center;
align-items: center;
height: 30%;
}
.app .image img {
flex-grow: 1;
max-width: 100%;
max-height: 100%;
}
<section id="portfolio" data-aos="fade-right">
<h1 data-aos="slide-right">My Projects</h1>
<!-- Swiper -->
<div class="swiper-container">
<div class="swiper-wrapper">
<div>
<p>
facilis nobis atque quod eum maxime non aspernatur, consequatur
ad. Ad, fuga vero? Aut pariatur deserunt nulla incidunt. Possimus
nesciunt vel at enim. Ea, iste. Doloremque, blanditiis explicabo
atque perferendis laboriosam excepturi cum consequuntur deleniti?
Cumque adipisci asperiores doloremque saepe optio nam temporibus
labore totam. Provident, amet officiis? Numquam dicta officia
nulla autem blanditiis ratione. Nam placeat doloribus veniam
perspiciatis corrupti ratione, odio deserunt repellat, adipisci
recusandae incidunt culpa fuga aspernatur et temporibus illum
suscipit reiciendis saepe quam. Iusto illo culpa veritatis
consequuntur alias quo a nulla soluta eveniet reprehenderit
sapiente veniam nam, commodi est officiis porro aliquid.
Laboriosam debitis eaque commodi nesciunt earum ipsam voluptates,
quo ab. Adipisci consequuntur ut hic repellendus? Eligendi
mollitia, voluptatum sed magni quo aliquam officiis blanditiis qui
tempore adipisci quasi deserunt, nam reiciendis, non nostrum nemo
doloremque eius quisquam eos ad corrupti. Labore accusantium totam
eaque natus iste incidunt praesentium? Voluptatum numquam dolorem
vitae mollitia quae! Molestias laboriosam, sapiente, earum
accusantium unde aperiam itaque corrupti culpa pariatur maiores
obcaecati sint illo veniam. Architecto optio minus voluptas
voluptatum quibusdam, neque odit nihil ex officiis explicabo
voluptates quod. Omnis, ab consequuntur! Quam inventore ut non
odio velit doloribus rem, cum amet iusto quia suscipit? Culpa
minus fuga harum saepe voluptatum ipsum non unde, nemo, deleniti
illo enim mollitia quaerat officia commodi optio laborum
blanditiis corporis laboriosam, tempora obcaecati ipsam eligendi
quam! A, inventore accusantium. Totam quibusdam quam dignissimos
quisquam reprehenderit quidem tenetur fuga voluptates minus
praesentium iste dicta illo eveniet rem eum, sunt omnis quae natus
ea! Quasi enim voluptatibus non. Doloribus, minus odit. Atque in
minus quidem sit, consectetur fugiat obcaecati veritatis,
architecto aperiam eaque sed delectus vero debitis accusantium
laboriosam corporis nemo exercitationem ex ad. Esse consequuntur,
provident non iusto dolorem inventore. Excepturi explicabo
quisquam qui commodi corporis dolore. Minima, beatae alias
perferendis quaerat deserunt, obcaecati eveniet consectetur, odio
quos dolor repellat? Aliquid, impedit quasi ratione blanditiis
ipsam esse odit soluta doloribus. Iste, harum repellendus quaerat
vel iusto ducimus ratione cumque a magni ipsa nihil, fugiat itaque
cupiditate quae non incidunt. Modi nesciunt fugiat quam ipsa magni
officia quasi a error accusamus? Cumque ad, iure necessitatibus
excepturi animi ipsum debitis distinctio maxime, cupiditate
impedit vel quis quo explicabo error deleniti accusamus autem
quae, rerum exercitationem deserunt illo repellat. Enim distinctio
reprehenderit quas? Quos reiciendis nemo provident porro adipisci
quam magni perferendis vero error necessitatibus, reprehenderit
corrupti labore deleniti ea non cumque nobis harum incidunt?
Commodi ratione quis obcaecati vel eligendi excepturi quasi.
Libero quae earum neque consequuntur vero tempora! Aliquid
officiis architecto sunt pariatur maiores consectetur officia
doloribus iste provident soluta ab, distinctio vel illum
voluptates nulla ea doloremque odio nemo voluptas.
</p>
</div>
</div>
<!-- Add Pagination -->
<div class="swiper-pagination"></div>
<!-- Add Arrows -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</section>
I think is the position in your CSS is causing overlapping.
.swiper-wrapper {
position: relative;
width: 100%;
height: 100%;
z-index: 1;
}
.
.
.
.app {
position: absolute;
display: flex;
flex-wrap: wrap;
height: 100%;
background-color: #bc2a8d;
}
Try to add another div outside the class .app that have the hight match the content.
Or Just remove the position.
I'm not sure why you use the position here, so I can't give you an alternative.
If you just want to center it, you can try to use margin.
Using HTML and CSS, I'm attempting to achieve a seemingly simply layout with three components : a stickied header, a stickied footer, and a middle area that is 100% of whatever space is left in the browser window. I'd also like my entire site to be centered horizontally.
I've searched for and applied various answers from this forum, but nothing seems to work once I start to apply new characteristics to the page.
I'd like to also absolute center what will be a horizontal table in the above-mentioned content area, as well as position elements in the header and footer -- But I can't seem to get the basics down. What am I doing wrong?
#site {
max-width: 1024px;
margin-left: auto;
margin-right: auto;
}
#header {
width: 1024px;
height: 120px;
display: table-cell;
vertical-align: middle;
background-color: aqua;
}
#content {
width: 1024px;
height: 100%;
vertical-align: middle;
background-color: red;
}
#footer {
width: 1024px;
height: 120px;
display: table-cell;
vertical-align: middle;
background-color: aqua;
}
.logo {
display: inline-block;
vertical-align: middle;
}
.item {
display: table-cell;
}
.copy {
font-size: 12pt;
font-family: Arial;
display: inline-block;
vertical-align: middle;
}
.l1nk {
display: inline-block;
vertical-align: middle;
}
.l2nk {
display: inline-block;
vertical-align: middle;
}
<div id="site">
<div id="header">
<img class="logo" src="Images/logo.png" alt="logo" height="60" width="195" />
</div>
<div id="content">
<img class="item" src="Images/item.png" alt="logo" height="150" width="150" />
</div>
<div id="footer">
<div class="copy">xoxo © xoxo </div>
<div class="l1nk">
<img src="Images/insta100.png" alt="instagram" height="25" width="25" />
</div>
<div class="l2nk">
<img src="Images/twttr100.png" alt="twitter" height="25" width="25" />
</div>
</div>
I'm new to this forum, and a novice programmer, so I'll roll with the punches. But I'd like a stronger foundation so that I can move forward with my code. Thanks so much
Personal I would use flexbox to accomplish this but an easy way to do it as well with out having to learn flexbox looks a little something like this
https://jsfiddle.net/kriscoulson/2fqu03b2/
this one has content in the content block
https://jsfiddle.net/kriscoulson/2fqu03b2/1/
HTML
html, body {
height: 100%;
padding: 0;
margin: 0;
}
.container {
width: 1024px;
height: 100%;
position: relative;
}
.header {
background-color: cyan;
height: 120px;
}
.content {
background-color: red;
height: calc(100% - 240px);
overflow: auto;
}
.footer {
width: 100%;
height: 120px;
background-color: cyan;
position: absolute;
bottom: 0;
}
<div class="container">
<div class="header"> header </div>
<div class="content"> content </div>
<div class="footer"> footer </div>
</div>
You can use the calc function in css to help determine the height since you know that the header is 120px and the footer is 120px we know that is 240px total that the content will not take up.
// EDIT
This is with the use of flexbox if you are trying to learn flexbox to do it
https://jsfiddle.net/kriscoulson/2fqu03b2/2/
html, body {
height: 100%;
padding: 0;
margin: 0;
}
.container {
width: 1024px;
height: 100%;
display: flex;
flex-direction: column;
}
.header {
background-color: cyan;
height: 120px;
}
.content {
background-color: red;
overflow: auto;
flex: 1;
}
.footer {
width: 100%;
height: 120px;
background-color: cyan;
justify-content: flex-end;
}
<div class="container">
<div class="header"> header </div>
<div class="content"> <div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus fugit atque magni quis at, voluptate consectetur voluptates laboriosam distinctio beatae quos sunt architecto? Quis nihil optio incidunt a, ad iure!</div>
<div>Obcaecati expedita maiores ab. Tempora alias culpa, error quasi, quia delectus. Ratione, sapiente, at repellendus aspernatur debitis nesciunt eum fuga quibusdam in, suscipit omnis minima vero error perspiciatis, eaque corrupti?</div>
<div>Ullam praesentium doloremque inventore! Similique dolor delectus, consequatur at doloremque quibusdam sed ullam officiis molestias dignissimos doloribus in obcaecati explicabo ipsum ducimus et error, atque. Itaque consequatur perspiciatis dignissimos eligendi!</div>
<div>Maxime natus asperiores autem nobis in dicta necessitatibus consequuntur et expedita architecto molestias veniam, voluptate adipisci corporis qui sed modi sunt saepe sapiente vel voluptatem placeat facere nihil repudiandae. Cumque?</div>
<div>Rerum quod asperiores reprehenderit itaque sunt repellat natus nostrum, modi exercitationem impedit odit adipisci voluptates, facilis eligendi eum ex accusamus tenetur omnis fugiat iste provident ipsa earum. Optio, culpa, repudiandae.</div>
<div>Quo amet ex obcaecati natus, nesciunt accusamus eius laudantium magni id. Dolorum mollitia ab nam saepe excepturi, sapiente quisquam ducimus, perspiciatis obcaecati modi qui, sit laborum vero vitae cumque sequi!</div>
<div>Repudiandae laborum ducimus totam! Neque aliquam alias necessitatibus praesentium numquam fuga totam inventore quis ab tempore aliquid dolore, similique voluptatem ipsam nisi earum ea quidem dolor, optio quibusdam? Sed, corrupti.</div>
<div>Culpa a quos, explicabo adipisci pariatur impedit obcaecati consectetur aut maxime architecto eos facere ex voluptate provident iste blanditiis sed laboriosam magni aspernatur esse corrupti quasi quod! Officiis corrupti, voluptatibus.</div>
<div>Optio sunt ipsam, et esse libero consequatur maiores illum nihil ad asperiores sed rem soluta sapiente quia nobis voluptatem, velit pariatur sint non aperiam, nostrum. Dolorum officiis, amet tenetur odio?</div>
<div>Culpa dicta in soluta, cum, sapiente natus atque, vitae, laudantium ipsam dolorem obcaecati ad quibusdam. Accusantium consequatur sit odit minima, omnis nihil unde pariatur. Distinctio doloremque earum, deserunt doloribus culpa.</div>
<div>Doloribus nobis, minima animi. Rerum magni hic dicta iste, laborum similique, sed corrupti accusamus ad quam assumenda ab consectetur suscipit nostrum. Sapiente aliquid, voluptatibus eius optio modi tenetur, unde iure.</div>
<div>Impedit, dicta, atque nesciunt quos laboriosam facilis, nihil assumenda officiis omnis reiciendis iste quisquam asperiores eveniet ad corrupti error voluptatum consectetur velit neque. Minima distinctio, corporis expedita eius sapiente cumque?</div>
<div>Repellendus tempora rem corporis ullam soluta est veritatis, itaque! Quo fugit dicta minus obcaecati minima repellendus numquam, ipsam non eligendi porro exercitationem nesciunt vel similique nemo necessitatibus dolorem dolorum id?</div>
<div>Ad obcaecati voluptas nobis veniam explicabo ut atque eaque itaque, magni sed, veritatis totam ea, repellendus in quia iure soluta suscipit aliquam? Adipisci fugit ipsum delectus nisi vitae, veritatis ducimus.</div>
<div>Dolorem inventore facere doloremque quod excepturi. Quo nostrum non quaerat pariatur. Pariatur necessitatibus deleniti ea dolores ut sequi saepe sint nulla. Minima harum explicabo voluptate sunt, adipisci quisquam delectus distinctio.</div>
<div>Neque, numquam libero tempora harum accusantium tempore veniam reprehenderit ea ratione, delectus alias molestias reiciendis eos cumque labore nulla quasi aliquam qui eaque accusamus dolor iste sed veritatis? Maxime, cum!</div>
<div>Reiciendis veritatis recusandae aliquid eos laudantium culpa, consectetur aspernatur voluptate expedita? Explicabo, quisquam! Alias mollitia velit nesciunt, tempore ipsum distinctio, iusto, quidem dolor odio consequatur, ipsa iste. Repellendus veritatis, quas?</div>
<div>Quos omnis repudiandae, corrupti consequuntur culpa. Magnam aperiam, ad accusantium consequuntur. Nemo iure ab temporibus molestias et nesciunt eum excepturi magni, ipsum quae, molestiae eaque reprehenderit voluptatem! Fugit, praesentium, beatae!</div>
<div>Sit officia, quasi veritatis sint inventore odit consequatur iusto et ex sequi nihil quisquam praesentium, quos neque eum. Atque recusandae dolorum illum iusto consectetur dolores maiores blanditiis! Libero, explicabo officiis?</div>
<div>Ratione repudiandae ad officia quas nemo eos molestias quasi, perferendis facere, aspernatur. Aliquid nobis est dolor natus soluta harum veniam enim deserunt sint. Unde corrupti magni nobis, non a, necessitatibus.</div> </div>
<div class="footer"> footer </div>
</div>
I'll go with the flex option while i was waiting for a feed back about it. ...
header,
footer {
background: tomato;
min-height: 15vh;/* any height is fine actually, mind some room for main if small window ... header& footer should not be covering the entire window */
display: flex;/* to dispatch children */
flex-direction: column;/* not in a row ! */
}
main {
background: turquoise;
flex: 1;/* fill up entire space */
overflow: auto;/* if space too small, let me scroll */
display: flex;/* to easy center content */
flex-direction: column;/* lets behave as block container */
}
div {
margin: auto;/* flex children will center on both axis , an easy one !*/
}
body {
max-width: 1024px;/* so it can shrink beloww , else remove the max- prefix */
height: 100vh;/* window's height */
margin: 0 auto;
display: flex;
flex-direction: column;
}
main:hover div:after {
display: block;
content: 'test';
height: 200vh;
}
<header>
<div>
<h1>header</h1>
</div>
</header>
<main>
<div>main, hover me to make me taller and scroll</div>
</main>
<footer>
<div>footer </div>
</footer>
for the display table-layout, you should start from body :
html, body {
height:100%;
margin:0;
}
body {
width:1024px;
margin:auto;
display:table;
}
header,footer,main {
display:table-row;
}
header>div,main>div,footer>div {
display:table-cell;
vertical-align:middle;
}
main {
height:100%;
background:turquoise;
}
footer,header {
height:120px;
background:tomato;
}
<header>
<div>
<h1>header</h1>
</div>
</header>
<main>
<div>main content, i will not scroll, i will push the footer</div>
</main>
<footer>
<div>footer </div>
</footer>
I have 3 divs inside one div.
I want my third div to be beside my first div and my second div to be under the first div.
please check this image:
I want something like this image:
I've used flex property and it works but my second div goes under the third one.
#container{
background-color: #fff;
padding: 50px;
display: flex;
flex-wrap: wrap;
}
#n1{
width: 20%;
order: 1;
height:150px;
background-color:yellow;
}
#n2{
width: 20%;
order: 3;
clear:right;
height:180px;
background-color:green;
}
#n3{
width:80%;
order: 2;
height:500px;
background-color:red;
}
<div id="container">
<div id="n1">
n1 text...
</div>
<div id="n2">
n2 text...
</div>
<div id="n3">
n3 text...
</div>
</div>
Please notice that:
I don't have access to HTML and I have to just use CSS
I can't use absolute position because the third div height is not fixed.
As an alternative to flexbox you can make the boxes float:
#container {
background-color: #fff;
padding: 50px;
}
#n1 {
float: left;
width: 20%;
height:150px;
background-color:yellow;
}
#n2 {
clear: left;
float: left;
width: 20%;
height:180px;
background-color:green;
}
#n3 {
margin-left: 20%;
width:80%;
height:500px;
background-color:red;
}
Fiddle: https://jsfiddle.net/9whj3rL6/3
If you want to use Flexbox to do this what you can do is set fixed height on flex-container and then use flex-direction: column. Then you just need to set red div to take full height and it will break to right column.
* {
box-sizing: border-box;
}
#container {
padding: 50px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
height: 500px;
}
#n1 {
width: 20%;
height: 150px;
background-color: yellow;
}
#n2 {
width: 20%;
height: 180px;
background-color: green;
}
#n3 {
width: 80%;
flex: 0 0 100%;
background-color: red;
}
<div id="container">
<div id="n1">
n1 text...
</div>
<div id="n2">
n2 text...
</div>
<div id="n3">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Molestias fugiat, aspernatur harum tempora repellat itaque explicabo facere impedit cumque ipsum ducimus sunt, officia autem, sit alias mollitia modi suscipit atque voluptatibus necessitatibus exercitationem! Voluptate veritatis sint facere ratione dolore, itaque mollitia quod tempore fuga beatae quis, velit reiciendis odio consectetur, voluptatem consequuntur consequatur reprehenderit suscipit autem ipsum ullam dolor modi. Adipisci aut voluptatibus architecto quo est voluptatem necessitatibus quia, voluptates quaerat commodi, perferendis minus! Quos eligendi dolore sapiente id iste reiciendis ab minus esse, excepturi, expedita vitae labore dolorem non atque maiores perspiciatis omnis adipisci! Natus qui quas obcaecati sapiente. Nesciunt veniam commodi quia dolor fugit sapiente repellendus reiciendis odio facilis iste expedita impedit maiores, voluptatibus doloribus optio quidem, tempora sequi magni quo. Cum amet magni, distinctio pariatur, cupiditate dignissimos veniam blanditiis laboriosam alias sunt deserunt et reiciendis perferendis consectetur natus. Voluptatum maiores omnis nihil delectus non aliquam possimus inventore quos tempore! Vel earum sit molestias ipsa, neque commodi delectus distinctio expedita hic esse ratione tempora animi provident officia vitae fugit libero quam explicabo nam qui, alias reiciendis aliquam suscipit beatae. Corporis nihil asperiores doloremque perferendis, rerum impedit incidunt, sequi vero cumque, officia tenetur! Alias sapiente enim ad reprehenderit, nulla aliquam consectetur expedita officia itaque error asperiores commodi quae sed provident minus libero. Assumenda, excepturi. Cum deserunt, eaque sequi. Nemo saepe, quas molestiae quibusdam ipsum at ducimus. Esse repellat nihil ipsa eaque, nobis facilis sint eius consequatur harum, neque maxime reiciendis consectetur, nostrum cupiditate laudantium non quisquam labore quas, iste porro nam perspiciatis hic voluptatem. Atque expedita dignissimos illo dolorum facilis impedit! Et molestias ut veniam! Provident perferendis, ex ipsa magnam, ipsum delectus. Unde, laudantium sunt nulla ad id doloribus minima molestias, pariatur nostrum consequuntur atque alias accusamus asperiores ullam labore voluptatibus repellat quod. Eaque dolor, nostrum labore, fugiat in repellendus expedita modi quia, libero dolore quam soluta repudiandae cupiditate rerum voluptates! Earum architecto mollitia debitis dolore excepturi consequuntur incidunt provident ab non dicta nobis, asperiores, rerum quis odit, eaque eius natus ea impedit esse accusantium id! Illum necessitatibus, rem dolorum! Itaque nobis eos, magni repellat ducimus harum accusantium facere, necessitatibus, iste laudantium quasi! Libero veritatis mollitia repellendus eum facilis possimus nihil dignissimos praesentium ea? Alias aliquid fugit magni animi incidunt porro dolorem, sapiente omnis sunt illo. Ipsum debitis, soluta aliquid assumenda distinctio illum ab! Nulla eos, sunt praesentium accusantium architecto, maiores nostrum. Itaque quibusdam nulla, reiciendis quo adipisci corrupti.
</div>
</div>