santache
santache

Reputation: 59

How to align the header logo with the menu?

I'm having some problems with aligning the logo with the menu options on CSS/SCSS.

What it should look like:

What it should look like

How it is now:

How it is now

CSS and HTML code:

nav {
  background-color: black;
  border: 1px solid black;
  color: white;
}

.nav-wrapper {
  display: flex;
}

.logo-app {
  height: 60px;
  width: 15em;
  text-align: center;
  padding-bottom: 1px;
  padding-top: 3px;
}

.buttons {
  position: relative;
}
<nav>
  <img src="assets/images/logo.png" alt="brand-logo" class="logo-app">
  <div class="buttons">
    <button mat-button [matMenuTriggerFor]="aboveMenu">
      <span>Sass</span>
    </button>
    <mat-menu #aboveMenu="matMenu" yPosition="above">
      <button mat-menu-item>Item 1</button>
      <button mat-menu-item>Item 2</button>
    </mat-menu>

    <button mat-button [matMenuTriggerFor]="aboveMenu"><span>Components</span></button>
    <mat-menu #aboveMenu="matMenu" yPosition="above">
      <button mat-menu-item>Item 1</button>
      <button mat-menu-item>Item 2</button>
    </mat-menu>

    <button mat-button [matMenuTriggerFor]="aboveMenu"><span>JavaScript</span></button>
    <mat-menu #aboveMenu="matMenu" yPosition="above">
      <button mat-menu-item>Item 1</button>
      <button mat-menu-item>Item 2</button>
    </mat-menu>
  </div>
</nav>

Upvotes: 1

Views: 182

Answers (2)

isherwood
isherwood

Reputation: 61114

You can make the nav element a flexbox container.

nav {
  display: flex;
  align-items: center;
  background-color: black;
  color: white;
}

.logo-app {
  flex: none;
  height: 60px;
  margin: 1px;
}

.buttons {
  flex: auto;
  text-align: center;
}
<nav>
  <img src="https://via.placeholder.com/60" alt="brand-logo" class="logo-app">
  
  <div class="buttons">
    <button mat-button [matMenuTriggerFor]="aboveMenu">
      <span>Sass</span>
    </button>
    <mat-menu #aboveMenu="matMenu" yPosition="above">
      <button mat-menu-item>Item 1</button>
      <button mat-menu-item>Item 2</button>
    </mat-menu>

    <button mat-button [matMenuTriggerFor]="aboveMenu"><span>Components</span></button>
    <mat-menu #aboveMenu="matMenu" yPosition="above">
      <button mat-menu-item>Item 1</button>
      <button mat-menu-item>Item 2</button>
    </mat-menu>

    <!-- hiding some buttons for better small demo
    <button mat-button [matMenuTriggerFor]="aboveMenu"><span>JavaScript</span></button>
    <mat-menu #aboveMenu="matMenu" yPosition="above">
      <button mat-menu-item>Item 1</button>
      <button mat-menu-item>Item 2</button>
    </mat-menu> 
    -->
  </div>
</nav>

Upvotes: 2

Rok Benko
Rok Benko

Reputation: 23128

Here you go...

Just put <img src="assets/images/logo.png" alt="brand-logo" class="logo-app"> inside <div class="buttons">...</div>.

nav {
  background-color: black;
  border: 1px solid black;
  color: white;
}

.nav-wrapper {
  display: flex;
}

.logo-app {
  height: 60px;
  width: 15em;
  text-align: center;
  padding-bottom: 1px;
  padding-top: 3px;
}

.buttons {
  position: relative;
}
<!DOCTYPE html>
<html lang='en'>

<head>
  <meta charset='UTF-8'>
  <meta http-equiv='X-UA-Compatible' content='IE=edge'>
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  <title>Document</title>
  <link href='https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css' rel='stylesheet' integrity='sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl' crossorigin='anonymous'>
</head>

<body>

  <nav>
    <div class="buttons">
      <img src="assets/images/logo.png" alt="brand-logo" class="logo-app">
      <button mat-button [matMenuTriggerFor]="aboveMenu">
          <span>Sass</span>
        </button>
      <mat-menu #aboveMenu="matMenu" yPosition="above">
        <button mat-menu-item>Item 1</button>
        <button mat-menu-item>Item 2</button>
      </mat-menu>

      <button mat-button [matMenuTriggerFor]="aboveMenu"><span>Components</span></button>
      <mat-menu #aboveMenu="matMenu" yPosition="above">
        <button mat-menu-item>Item 1</button>
        <button mat-menu-item>Item 2</button>
      </mat-menu>

      <button mat-button [matMenuTriggerFor]="aboveMenu"><span>JavaScript</span></button>
      <mat-menu #aboveMenu="matMenu" yPosition="above">
        <button mat-menu-item>Item 1</button>
        <button mat-menu-item>Item 2</button>
      </mat-menu>
    </div>
  </nav>

</body>

</html>

Upvotes: 1

Related Questions