Home > Software design >  Add logo to navbar
Add logo to navbar

Time:05-02

I have this problem when I try to add a logo to my navbar. When I put the logo before the other navbar items the logo is way too big and when I try to resize it still looks out of place. I would like to have to logo in line with the other items or have the other navbar items to be centered in line with the logo. I think using flexbox would be a lot simpler and make this process easier, but I would like to avoid using flexbox here for this navbar.

nav {
  background: rgb(255, 255, 255);
  padding: 10px;
  box-shadow: rgba(120, 126, 133, 0.2) 0px 8px 24px;
  padding: 2em;
  padding-bottom: 0.6em;
  padding-top: 0.6em;
}

nav ul {
  list-style: none;
  text-align: center;
  margin-top: 0px;
  padding-left: 0px;
  margin-bottom: 0px;
}

nav ul li {
  display: inline-block;
}

nav ul li a {
  display: block;
  padding: 15px;
  padding-top: 10px;
  padding-bottom: 10px;
  text-decoration: none;
  color: rgb(0, 0, 0);
  font-weight: 800;
  text-transform: uppercase;
  margin: 0 10px;
}

nav ul li a,
nav ul li a:after,
nav ul li a:before {
  transition: all .5s;
}

nav ul li a:hover {
  color: #555;
}

nav.stroke ul li a,
nav.fill ul li a {
  position: relative;
}

nav.stroke ul li a:after,
nav.fill ul li a:after {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 0%;
  content: '.';
  color: transparent;
  background: rgb(255, 255, 255);
  height: 1px;
}

nav.fill ul li a {
  transition: all 2s;
}

nav.fill ul li a:after {
  text-align: left;
  content: '.';
  margin: 0;
  opacity: 0;
}

nav.fill ul li a:hover {
  color: rgb(0, 0, 0);
  z-index: 1;
}

nav.fill ul li a:hover:after {
  z-index: -10;
  animation: fill 0.6s forwards;
  -webkit-animation: fill 0.6s forwards;
  -moz-animation: fill 0.6s forwards;
  opacity: 1;
}

.fill img {
  width: 80px;
  image-rendering: -moz-crisp-edges;
  /* Firefox */
  image-rendering: -o-crisp-edges;
  /* Opera */
  image-rendering: -webkit-optimize-contrast;
  /* Webkit (non-standard naming) */
  image-rendering: crisp-edges;
  -ms-interpolation-mode: nearest-neighbor;
  text-align: center;
}
<nav >
  <ul>
    <li><img src="https://i.imgur.com/bblqj5b.png" alt="SCP"></li>
    <li><a href="index.html">Home</a></li>
    <li><a href="wwd.html" target="blank_">What we do</a></li>
    <li><a href="#">Goal 1</a></li>
    <li><a href="#">Goal 2</a></li>
    <li><a href="lildicky.html">Earth by Lil Dicky</a></li>
  </ul>
</nav>

CodePudding user response:

A very quick patch without flexbox is to add the declaration: vertical-align: middle; to your nav ul li { } rule

nav {
  background: rgb(255, 255, 255);
  padding: 10px;
  box-shadow: rgba(120, 126, 133, 0.2) 0px 8px 24px;
  padding: 2em;
  padding-bottom: 0.6em;
  padding-top: 0.6em;
}

nav ul {
  list-style: none;
  text-align: center;
  margin-top: 0px;
  padding-left: 0px;
  margin-bottom: 0px;
}

nav ul li {
  display: inline-block;
  vertical-align: middle;
}

nav ul li a {
  display: block;
  padding: 15px;
  padding-top: 10px;
  padding-bottom: 10px;
  text-decoration: none;
  color: rgb(0, 0, 0);
  font-weight: 800;
  text-transform: uppercase;
  margin: 0 10px;
}

nav ul li a,
nav ul li a:after,
nav ul li a:before {
  transition: all .5s;
}

nav ul li a:hover {
  color: #555;
}

nav.stroke ul li a,
nav.fill ul li a {
  position: relative;
}

nav.stroke ul li a:after,
nav.fill ul li a:after {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 0%;
  content: '.';
  color: transparent;
  background: rgb(255, 255, 255);
  height: 1px;
}

nav.fill ul li a {
  transition: all 2s;
}

nav.fill ul li a:after {
  text-align: left;
  content: '.';
  margin: 0;
  opacity: 0;
}

nav.fill ul li a:hover {
  color: rgb(0, 0, 0);
  z-index: 1;
}

nav.fill ul li a:hover:after {
  z-index: -10;
  animation: fill 0.6s forwards;
  -webkit-animation: fill 0.6s forwards;
  -moz-animation: fill 0.6s forwards;
  opacity: 1;
}

.fill img {
  width: 80px;
  image-rendering: -moz-crisp-edges;
  /* Firefox */
  image-rendering: -o-crisp-edges;
  /* Opera */
  image-rendering: -webkit-optimize-contrast;
  /* Webkit (non-standard naming) */
  image-rendering: crisp-edges;
  -ms-interpolation-mode: nearest-neighbor;
  text-align: center;
}
<nav >
  <ul>
    <li><img src="https://i.imgur.com/bblqj5b.png" alt="SCP"></li>
    <li><a href="index.html">Home</a></li>
    <li><a href="wwd.html" target="blank_">What we do</a></li>
    <li><a href="#">Goal 1</a></li>
    <li><a href="#">Goal 2</a></li>
    <li><a href="lildicky.html">Earth by Lil Dicky</a></li>
  </ul>
</nav>

CodePudding user response:

Your guess was correct. I added display: flex to the ul container. The list items are shown inline and centered both vertically and horizontally.

But they are kept on one single line word-wrapping their content.. did you prefer the items to overflow on next line?

nav {
  background: rgb(255, 255, 255);
  padding: 10px;
  box-shadow: rgba(120, 126, 133, 0.2) 0px 8px 24px;
  padding: 2em;
  padding-bottom: 0.6em;
  padding-top: 0.6em;
}

nav ul {
  /*as easy as using display flex on container*/
  display: flex;
  list-style: none;
  text-align: center;
  margin-top: 0px;
  padding-left: 0px;
  margin-bottom: 0px;
}

nav ul li {
  display: inline-block;
}

nav ul li a {
  display: block;
  padding: 15px;
  padding-top: 10px;
  padding-bottom: 10px;
  text-decoration: none;
  color: rgb(0, 0, 0);
  font-weight: 800;
  text-transform: uppercase;
  margin: 0 10px;
}

nav ul li a,
nav ul li a:after,
nav ul li a:before {
  transition: all .5s;
}

nav ul li a:hover {
  color: #555;
}

nav.stroke ul li a,
nav.fill ul li a {
  position: relative;
}

nav.stroke ul li a:after,
nav.fill ul li a:after {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 0%;
  content: '.';
  color: transparent;
  background: rgb(255, 255, 255);
  height: 1px;
}

nav.fill ul li a {
  transition: all 2s;
}

nav.fill ul li a:after {
  text-align: left;
  content: '.';
  margin: 0;
  opacity: 0;
}

nav.fill ul li a:hover {
  color: rgb(0, 0, 0);
  z-index: 1;
}

nav.fill ul li a:hover:after {
  z-index: -10;
  animation: fill 0.6s forwards;
  -webkit-animation: fill 0.6s forwards;
  -moz-animation: fill 0.6s forwards;
  opacity: 1;
}

.fill img {
  width: 80px;
  image-rendering: -moz-crisp-edges;
  /* Firefox */
  image-rendering: -o-crisp-edges;
  /* Opera */
  image-rendering: -webkit-optimize-contrast;
  /* Webkit (non-standard naming) */
  image-rendering: crisp-edges;
  -ms-interpolation-mode: nearest-neighbor;
  text-align: center;
}
<nav >
  <ul>
    <li><img src="https://i.imgur.com/bblqj5b.png" alt="SCP"></li>
    <li><a href="index.html">Home</a></li>
    <li><a href="wwd.html" target="blank_">What we do</a></li>
    <li><a href="#">Goal 1</a></li>
    <li><a href="#">Goal 2</a></li>
    <li><a href="lildicky.html">Earth by Lil Dicky</a></li>
  </ul>
</nav>

  • Related