floats layout
technique is little "out of date" (Use Flexbox -or- Grids).
Next, you could use semantic HTML5 tags main
, aside
, and so on (Instead of divs only).
Summarize of CSS layout techniques: https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout.
Last .main { height: 100%; }
"not working" (No visual change) - read her why:
Why doesn't height: 100% work to expand divs to the screen height?
About your Q - your divs are empty (Put inside content and/or set min-height / height). Also related: Boxmodel. Working example:
*,body{
padding: 0;
margin: 0;
color: white;
}
html, body, .main {
height: 100%;
}
.sidebar{
float: left;
width: 20%;
height: 100%;
background-color: blue;
}
.main-content{
float: left;
width: 80%;
height: 100%;
background-color: red
}
.videos{
background: purple;
}
<html>
<body>
<header>
<div class="icon">
</div>
<div class="search"></div>
<div class="header-more"></div>
</header>
<div class="main">
<aside class="sidebar">
<div class="home">home</div>
<div class="library">library</div>
<div class="subscription"></div>
<div class="more"></div>
<div class="settings"></div>
<div class="about"></div>
</aside>
<main class="main-content">
<div class="topic"></div>
<div class="videos">
<div class="video">video 1</div>
<div class="video">video 2</div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
</div>
<div class="posts">
<article class="post">post 1</article>
<article class="post">post 2</article>
<article class="post"></article>
</div>
<div class="videos">
<div class="video">video 1</div>
<div class="video">video 2</div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
</div>
</main>
</div>
</body>
</html>
Flexbox
*,body{
padding: 0;
margin: 0;
color: white;
}
.main {
display: flex;
}
aside{
flex-basis: 20%;
background-color: blue;
}
main{
flex-basis: 80%;
background-color: red
}
<html>
<body>
<header>
<div class="icon">
</div>
<div class="search"></div>
<div class="header-more"></div>
</header>
<div class="main">
<aside class="sidebar">
<div class="home">home</div>
<div class="library">library</div>
<div class="subscription"></div>
<div class="more"></div>
<div class="settings"></div>
<div class="about"></div>
</aside>
<main class="main-content">
<div class="topic"></div>
<div class="videos">
<div class="video">video 1</div>
<div class="video">video 2</div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
</div>
<div class="posts">
<article class="post">post 1</article>
<article class="post">post 2</article>
<article class="post"></article>
</div>
<div class="videos">
<div class="video">video 1</div>
<div class="video">video 2</div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
</div>
</main>
</div>
</body>
</html>
Nested flexbox example
Take a look at how easy it is to control the layout.
*,body{
padding: 0;
margin: 0;
color: white;
}
.main {
display: flex;
min-height: 40vh;
}
aside{
flex-basis: 20%;
padding: 5px;
background-color: blue;
}
main{
flex-basis: 80%;
background-color: red
}
.main-content{
display: flex;
}
.main-content > div{
flex-basis: 33%;
border: 1px solid white;
padding: 5px;
}
.videos{
background: purple;
}
<html>
<body>
<header>
<div class="icon">
</div>
<div class="search"></div>
<div class="header-more"></div>
</header>
<div class="main">
<aside class="sidebar">
<div class="home">home</div>
<div class="library">library</div>
<div class="subscription"></div>
<div class="more"></div>
<div class="settings"></div>
<div class="about"></div>
</aside>
<main class="main-content">
<div class="topic">Topic</div>
<div class="videos">
<div class="video">video 1</div>
<div class="video">video 2</div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
</div>
<div class="posts">
<article class="post">post 1</article>
<article class="post">post 2</article>
<article class="post"></article>
</div>
<div class="videos">
<div class="video">video 1</div>
<div class="video">video 2</div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
<div class="video"></div>
</div>
</main>
</div>
</body>
</html>