将链接添加到徽标可将链接添加到整个导航栏

时间:2020-07-11 06:13:34

标签: html css

我在导航栏上的徽标(图像)添加了一个链接,但是当我转到页面时,除链接之外的整个导航栏都变为链接。如何使它仅适用于图像?

根据评论,我将代码与CSS和JS结合在一起。我是Web开发的新手,这可以解释我缺乏知识和CSS的过度使用。

Ref图片。

function navHamburger() {
 var x = document.getElementById("nav-links");
 if (x.style.display === "block") {
  x.style.display = "none";
 } else {
  x.style.display = "block";
 }
}
nav {
  background-color: #fff;
}

.nav-row {
  /* margin: 0; */
  overflow: hidden;
  position: relative;
  padding: 10px;
}

.nav-row #nav-links {
  display: none;
}
.nav-row a {
  color: #0075b2;
  text-decoration: none;
  font-weight: 500;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  text-align: center;
  text-transform: uppercase;
  padding: 20px;
}

.nav-row a.icon {
  font-size: 200%;
  display: block;
  position: absolute;
  right: 0;
  top: 0;
  margin-top: 0.1em;
  margin-right: 25px;
}

.nav-row a:hover {
  color: #19afff;
}

.main-nav {
  text-decoration: none;
  list-style: none;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row;
}

.mobile-menu {
  text-decoration: none;
  list-style: none;
}

.main-nav li a:link,
.main-nav li a:visited {
  color: #0075b2;
  text-decoration: none;
  text-transform: uppercase;
  font-size: 150%;
  font-weight: 500;
  padding: 4px;
}

.main-nav li a:hover,
.main-nav li a:active {
  border-top: 2px solid #b36500;
  border-bottom: 2px solid #b36500;
  -webkit-transition: border-bottom 0.2s;
  -o-transition: border-bottom 0.2s;
  transition: border-bottom 0.2s;
}

@media (min-width: 601px) {
  .mobile-menu {
    display: none;
  }
}

.desktop-menu {
  display: none;
  right: 0;
  top: 0;
}
@media (min-width: 601px) {
  .desktop-menu {
    display: block;
    position: absolute;
    margin-top: 30px;
    margin-right: 10px;
  }
  .nav-row {
    margin-right: 20px;
  }
  .nav-row a {
    margin-left: 20px;
  }
}

@media (min-width: 901px) {
  .desktop-menu {
    margin-top: 50px;
    margin-right: 10px;
  }
}

@media (min-width: 1290px) {
  .desktop-menu {
    margin-top: 70px;
    margin-right: 10px;
  }
}
<nav>
        <div class="nav-row">
          <div>
            <a href="index.html">
              <img
                src="resources/img/logo/fullLogo.svg"
                alt="Archer Civils & Construction Logo"
                class="logo"
              />
            </a>
          </div>
          <div class="mobile-menu">
            <div id="nav-links">
              <a href="pages/civils.html">Civils</a>
              <a href="pages/fencing.html" class="nav-mid">Fencing</a>
              <a href="pages/contact.html" class="nav-mid">Contact</a>
            </div>
            <a
              href="javascript:void(0);"
              class="icon hamburger-icon"
              onclick="navHamburger()"
            >
              <i class="fa fa-bars"></i>
            </a>
          </div>
          <div class="desktop-menu">
            <ul class="main-nav">
              <li><a href="pages/civils.html">Civils</a></li>
              <li><a href="pages/fencing.html" class="nav-mid">Fencing</a></li>
              <li><a href="pages/contact.html" class="nav-mid">Contact </a></li>
            </ul>
          </div>
        </div>
      </nav>

3 个答案:

答案 0 :(得分:1)

您正在将flex用于主要的nav类,该类具有完整的内联值:

fiddle进行播放。

nav {
  background-color: #fff;
}

.nav-row {
  /* margin: 0; */
  overflow: hidden;
  position: relative;
  padding: 10px;
}

.nav-row #nav-links {
  display: none;
}

img {
  height: 100px;
  width: 100px;
}

.nav-row a {
  color: #0075b2;
  text-decoration: none;
  font-weight: 500;
  text-align: center;
  text-transform: uppercase;
  padding: 20px;
}

.nav-row a.icon {
  font-size: 200%;
  display: block;
  position: absolute;
  right: 0;
  top: 0;
  margin-top: 0.1em;
  margin-right: 25px;
}

.nav-row a:hover {
  color: #19afff;
}

.main-nav {
  text-decoration: none;
  list-style: none;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-direction: row;
  flex-direction: row;
}

.mobile-menu {
  text-decoration: none;
  list-style: none;
}

.main-nav li a:link,
.main-nav li a:visited {
  color: #0075b2;
  text-decoration: none;
  text-transform: uppercase;
  font-size: 150%;
  font-weight: 500;
  padding: 4px;
}

.main-nav li a:hover,
.main-nav li a:active {
  border-top: 2px solid #b36500;
  border-bottom: 2px solid #b36500;
  -webkit-transition: border-bottom 0.2s;
  -o-transition: border-bottom 0.2s;
  transition: border-bottom 0.2s;
}

@media (min-width: 601px) {
  .mobile-menu {
    display: none;
  }
}

.desktop-menu {
  display: none;
  right: 0;
  top: 0;
}

@media (min-width: 601px) {
  .desktop-menu {
    display: block;
    position: absolute;
    margin-top: 30px;
    margin-right: 10px;
  }
  .nav-row {
    margin-right: 20px;
  }
  .nav-row a {
    margin-left: 20px;
  }
}

@media (min-width: 901px) {
  .desktop-menu {
    margin-top: 50px;
    margin-right: 10px;
  }
}

@media (min-width: 1290px) {
  .desktop-menu {
    margin-top: 70px;
    margin-right: 10px;
  }
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.0/css/bootstrap.min.css" rel="stylesheet" />

<nav>
  <div class="nav-row">
    <div>
      <a href="index.html">
        <img src="http://placekitten.com/301/301" alt="Archer Civils & Construction Logo" class="logo" />
      </a>
    </div>
    <div class="mobile-menu">
      <div id="nav-links">
        <a href="pages/civils.html">Civils</a>
        <a href="pages/fencing.html" class="nav-mid">Fencing</a>
        <a href="pages/contact.html" class="nav-mid">Contact</a>
      </div>
      <a href="javascript:void(0);" class="icon hamburger-icon" onclick="navHamburger()">
        <i class="fa fa-bars"></i>
      </a>
    </div>
    <div class="desktop-menu">
      <ul class="main-nav">
        <li><a href="pages/civils.html">Civils</a></li>
        <li><a href="pages/fencing.html" class="nav-mid">Fencing</a></li>
        <li><a href="pages/contact.html" class="nav-mid">Contact </a></li>
      </ul>
    </div>
  </div>
</nav>

答案 1 :(得分:1)

“ display:flex”是这里的罪魁祸首。由于链接上的“ display:flex” css属性,链接占据了完整的一行。但是,并非其他导航项目也已变成链接,而是因为链接占据了整个宽度并位于其他导航项目之上,所以它一定给人的感觉就像其他导航项目也已成为同一链接一样。您可以参考以下屏幕截图:

enter image description here

这是它的代码:

<!DOCTYPE html>
<html>

<head>
    <style>
        .logo-link {
            display: flex;
            cursor: pointer
        }

        .logo-link img {
            max-height: 200px;
        }
    </style>
</head>

<body>
    <nav>
        <a class="logo-link" href=""><img
                src="https://i.pinimg.com/736x/5b/b4/8b/5bb48b07fa6e3840bb3afa2bc821b882.jpg"></a>
        <div>
            <ul>
                <li>Item1</li>
                <li>Item2</li>
            </ul>
        </div>
    </nav>
</body>

</html>

您可以像这样创建代码来解决此问题:

<!DOCTYPE html>
<html>

<head>
    <style>
        nav {
            width: 100%;
            height: 100px;
            background-color: bisque;
            box-sizing: border-box;
            display: flex;
            align-items: center;
        }

        nav .align-left {
            margin-left: 10px;
            margin-right: auto;
            height: 90%;
        }

        nav .align-right {
            margin-left: auto;
            margin-right: 10px;
            height: 100%;
            display: flex;
            justify-content: space-between;
            width: 11%;
            height: 20%;

        }

        nav .logo-link>img {
            height: 100%;
        }
    </style>
</head>

<body>
    <nav>
        <div class="align-left">
            <a class="logo-link" href=""><img
                    src="https://i.pinimg.com/736x/5b/b4/8b/5bb48b07fa6e3840bb3afa2bc821b882.jpg"></a>
        </div>
        <div class="align-right">
            <div>Item 1</div>
            <div>Item 2</div>
            <div>Item 3</div>
        </div>
    </nav>
</body>

</html>

答案 2 :(得分:0)

只需将游览图片标签插入锚标签中即可,如下所示: 文字