0

How to make my main class be on a side of the aside class? Because the result is my main class is on the below of the aside class and I do not know how to figure it out

This is code:

aside {
  height: 100vh;
  width: 350px;
  justify-content: space-between;
  flex-direction: column;
}

aside ul {
  padding-top: 30%;
  list-style-type: none;
  text-align: center;
}

aside a {
  text-decoration: none;
  display: inline-block;
  font-size: 23px;
  color: $color5;
  margin: 40px;
  font-family: $font1;
  font-weight: lighter;
}

aside a:hover {
  color: $color1;
}
<aside>
  <ul>
    <li><a href="#PersonalInformation">Personal Information</a></li>
    <li class="second"><a href="#SecurityandLogin">Security and Login</a></li>
    <li><a href="Logout">Logout</a></li>
  </ul>

</aside>
<main>
  <h4>To keep you safe and secure</h4>
</main>
yousoumar
  • 7,434
  • 4
  • 9
  • 33
Chris
  • 43
  • 6

3 Answers3

1

You can do it using the following:

  1. Making both elements display: inline-block;
  2. Using the grid in the parent class.
  3. Making parent class display: flex; with flex-direction: row;

For example (Using inline-block):

aside,
main {
  display: inline-block;
  vertical-align: middle;
  border: 1px solid blue;
}

aside {
  height: 100vh;
  width: 350px;
  justify-content: space-between;
  flex-direction: column;
}

aside ul {
  padding-top: 30%;
  list-style-type: none;
  text-align: center;
}

aside a {
  text-decoration: none;
  display: inline-block;
  font-size: 23px;
  color: $color5;
  margin: 40px;
  font-family: $font1;
  font-weight: lighter;
}

aside a:hover {
  color: $color1;
}
<div>
  <aside>
    <ul>
      <li><a href="#PersonalInformation">Personal Information</a></li>
      <li class="second"><a href="#SecurityandLogin">Security and Login</a></li>
      <li><a href="Logout">Logout</a></li>
    </ul>

  </aside>
  <main>
    <h4>To keep you safe and secure</h4>
  </main>
</div>

For example (Using flex):

div {
  display: flex;
  flex-direction: row;
  align-items: center;
}
main, aside {
  border: 1px solid blue;
}

aside {
  height: 100vh;
  width: 350px;
  justify-content: space-between;
  flex-direction: column;
}

aside ul {
  padding-top: 30%;
  list-style-type: none;
  text-align: center;
}

aside a {
  text-decoration: none;
  display: inline-block;
  font-size: 23px;
  color: $color5;
  margin: 40px;
  font-family: $font1;
  font-weight: lighter;
}

aside a:hover {
  color: $color1;
}
<div>
  <aside>
    <ul>
      <li><a href="#PersonalInformation">Personal Information</a></li>
      <li class="second"><a href="#SecurityandLogin">Security and Login</a></li>
      <li><a href="Logout">Logout</a></li>
    </ul>

  </aside>
  <main>
    <h4>To keep you safe and secure</h4>
  </main>
</div>

For example (Using grid):

div {
  display: grid;
  grid-template-columns: 350px 1fr;
  gap: 1rem;
}

aside,
main {
  border: 1px solid blue;
}

aside {
  height: 100vh;
  width: 350px;
  justify-content: space-between;
  flex-direction: column;
}

aside ul {
  padding-top: 30%;
  list-style-type: none;
  text-align: center;
}

aside a {
  text-decoration: none;
  display: inline-block;
  font-size: 23px;
  color: $color5;
  margin: 40px;
  font-family: $font1;
  font-weight: lighter;
}

aside a:hover {
  color: $color1;
}
<div>
  <aside>
    <ul>
      <li><a href="#PersonalInformation">Personal Information</a></li>
      <li class="second"><a href="#SecurityandLogin">Security and Login</a></li>
      <li><a href="Logout">Logout</a></li>
    </ul>

  </aside>
  <main>
    <h4>To keep you safe and secure</h4>
  </main>
</div>
Ahmad Habib
  • 1,801
  • 1
  • 11
  • 24
0

You can either try with float left, or you can wrap 'aside' and 'main' inside a div and use display flex. Let me know if you need more help.

Edin Osmic
  • 83
  • 1
  • 7
0

In such senarios, you would wanna use flexbox or css grid, like so:

.container {
  display: grid;
  grid-template-columns: 350px 1fr;
  gap: 1rem;
}
aside {
  min-height: 100vh;
  justify-content: space-between;
  flex-direction: column;
  border-right: 1px solid red;
}

aside ul {
  padding-top: 30%;
  list-style-type: none;
  text-align: center;
}
aside a {
  text-decoration: none;
  display: inline-block;
  font-size: 23px;
  color: $color5;
  margin: 40px;
  font-family: $font1;
  font-weight: lighter;
}

aside a:hover {
  color: $color1;
}

   
<div class="container">
  <aside>
    <ul>
      <li><a href="#PersonalInformation">Personal Information</a></li>
      <li class="second"><a href="#SecurityandLogin">Security and Login</a></li>
      <li><a href="Logout">Logout</a></li>
    </ul>

  </aside>
  <main>
    <h4>To keep you safe and secure</h4>
  </main>
</div>
yousoumar
  • 7,434
  • 4
  • 9
  • 33
  • Thank you, sir! Last question, how can I add a vertical line between the main and aside class? – Chris Mar 18 '22 at 07:44
  • Glad I could help. You can simply use `border-right` on `aside`. I edited my answer, take a look please. – yousoumar Mar 18 '22 at 07:46
  • I also suggest you to follow [Kevin Powell](https://www.youtube.com/channel/UCJZv4d5rbIKd4QHMPkcABCw) on YouTube, and watch his anterior videos from time to time if you are not already. You are gonna learn so much about css. – yousoumar Mar 18 '22 at 07:53