带有下拉表和div之间徽标的自适应导航栏

时间:2019-03-20 12:28:57

标签: html css navbar

我正在尝试使该导航栏具有响应能力,但没有找到在此示例中可用的代码。调整屏幕宽度时,我希望所有链接(而不是徽标)都聚集在一个汉堡包图标中,因此在纵向模式下,它将仅显示徽标和带有链接的汉堡包图标。

https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_responsive_navbar_dropdown这个示例非常接近我想要的示例,但是导航栏中的内容以链接之间的徽标为中心,我无法使其正常工作。我也希望显示第三个元素(徽标),而不是第一个链接(当宽度达到特定点时)。任何帮助将不胜感激

nav{
  display: flex;
  width: 100%;
  height: 17%;
  background: black;
  align-items: center;
  justify-content: center;
  font-family: Times New Roman;
  font-size: 1.5vw;
    position: fixed;
    top: 0;
    z-index: 1;
}

nav a{
  text-decoration: none;
  background-color: white;
  color: black;
  margin: 0 40px;
  padding: 16px;
  border: 3px solid #f9c534;
}

#logo{
  width: 7vw;
  height: auto;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  margin: 0 5vw;
}


.dropbtn {
  padding: 16px;
  background: white;
  font-family: Times New Roman;
  font-size: 1.5vw;
  color: black;
  border: 3px solid #f9c534;
  margin: 0 40px;
}


.dropdown {
  position: relative;
  display: inline-block;
}


.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f1f1f1;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}


.dropdown-content a {
  color: black;
  padding: 12px 16px;
    margin: 0;
  text-decoration: none;
  display: block;
}

nav a:hover {
    background-color: #f9c534;
    border: 2px solid white;
}


.dropdown-content a:hover {
    background-color: #f9c534;
    border: 2px solid white;
}


.dropdown:hover .dropdown-content {display: block;}


.dropdown:hover .dropbtn {
    background-color: #f9c534;
    border: 2px solid white;
    }
<nav>
  <a href="">Home</a>
  <a href="">News</a>
  <div><img id="logo" src="src/Logo.jpg" alt=""></div>
  <a href="">Sponsors</a>
  <div class="dropdown">
	 <button class="dropbtn">About us</button>
	<div class="dropdown-content">
		<a href="">Our employees</a>
		<a href="">About company</a>
		<a href="#">Founder</a>
	</div>
  </div>
</nav>

3 个答案:

答案 0 :(得分:0)

您可以将类添加到徽标div标签的包装器img中 并使用CSS媒体查询为较小的设备添加CSS position: absolute; top: 10px; left: 10px

其他(不推荐),您可以使用两个img标签。使用display: block / display: none在桌面上隐藏一个,在移动设备上隐藏另一个。

答案 1 :(得分:0)

您可以从导航中删除徽标,并在其位置添加一个spacer元素。然后在徽标上使用绝对位置将其固定到位。这有点hacky,但是可以用。 https://codepen.io/nickberens360/pen/bZmGWy

header{
  position: fixed;
  width: 100%;
  top: 0;
}

.logo{
  display: block;
  margin: auto;
  position: absolute;
  left: 36px; 
  right: 0; 
  margin-left: auto; 
  margin-right: auto;
  width: 200px;
  z-index: 99999999;
  top: 0;
}

.spacer{
  margin: 0 100px;
  border: 1px solid red;
}

nav{
  display: flex;
  width: 100%;
  height: 17%;
  background: black;
  align-items: center;
  justify-content: center;
  font-family: Times New Roman;
  font-size: 1.5vw;
    z-index: 1;
}

nav a{
  text-decoration: none;
  background-color: white;
  color: black;
  margin: 0 40px;
  padding: 16px;
  border: 3px solid #f9c534;
  width: 143px;
  text-align: center;
}

#logo{
  width: 7vw;
  height: auto;
  background: rgba(0,0,0,0.3);
  border-radius: 50%;
  margin: 0 5vw;
}


.dropbtn {
  padding: 16px;
  background: white;
  font-family: Times New Roman;
  font-size: 1.5vw;
  color: black;
  border: 3px solid #f9c534;
  margin: 0 40px;
}


.dropdown {
  position: relative;
  display: inline-block;
}


.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f1f1f1;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}


.dropdown-content a {
  color: black;
  padding: 12px 16px;
    margin: 0;
  text-decoration: none;
  display: block;
}

nav a:hover {
    background-color: #f9c534;
    border: 2px solid white;
}


.dropdown-content a:hover {
    background-color: #f9c534;
    border: 2px solid white;
}


.dropdown:hover .dropdown-content {display: block;}


.dropdown:hover .dropbtn {
    background-color: #f9c534;
    border: 2px solid white;
}

答案 2 :(得分:0)

我刚刚更新了您的代码,并做了一些修复,您的徽标将始终位于中心,并且还添加了汉堡包菜单。希望对您有帮助。谢谢

nav {
        background: black;
        font-family: Times New Roman;
        font-size: 14px;
        height: 94px;
        position: fixed;
        width: 100%;
        z-index: 1;
    }
    nav ul {        
        display: flex;
        justify-content: space-around;
        align-items: center;
        list-style: none;
        padding: 0;
        margin: 0;   
        height: 94px;     
    }
    nav ul li {
        background-color: white;
        border: 3px solid #f9c534;
        position: relative;
        white-space: nowrap;
    }
    nav ul li:hover {
        background-color: #f9c534;
        border-color: #fff;
    }
    nav ul li a {
        color: black;
        display: block;
        margin: 0;
        padding: 16px;
        text-decoration: none;
    }
    nav li ul {
        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
        display: none;
        position: absolute;
        right: -3px;
        top: 50px;
        height: auto;
        min-width: 150px;
    }
    nav ul li:hover ul {
        display: block;
    }
    nav #logo {
        border-radius: 50%;
        background: rgba(0,0,0,0.3);
        border: 0;
        padding: 0;
        width: 100px;
    }
    #mob-dropChecked {
        display: none !important;
    }
    @media only screen and (max-width: 768px) {
        nav {
            height: 60px;
        }
        nav ul {
            display: block;
            height: 60px;
            position: relative;
            top: 44px;
        }
        nav ul li {
            display: none;
        }
        nav #logo {
            display: block;
            position: absolute;
            left: 34%;
            top: -29px;
        }
        #mob-btn {
            background-image: url('https://www.shareicon.net/data/512x512/2017/05/09/885755_list_512x512.png');
            background-color: transparent;
            border: 0;
            background-repeat: no-repeat;
            background-size: contain;
            position: relative;
            top: 21px;
            height: 40px;
            width: 40px;
            padding: 13px 20px;
            z-index: 2;
        }
        #mob-dropChecked:checked ~ ul li{
            display: block;
        }
        nav li ul {
            position: relative;
            right: 0;
            top: 16px;
        }
    }
<nav>
  <label for="mob-dropChecked" id="mob-btn"></label>    
  <input type="checkbox" id="mob-dropChecked" role="button">
  <ul>
      <li><a href="">Home</a></li>
      <li><a href="">News</a></li>
      <li id="logo"><img id="logo" src="https://s.w.org/style/images/about/WordPress-logotype-alternative-white.png" alt=""></li>
      <li><a href="">Sponsors</a></li>
      <li><a href="">About us</a>
          <ul>
              <li><a href="">Our employees</a></li>
              <li><a href="">About company</a></li>
              <li><a href="#">Founder</a></li>
          </ul>
      </li>
  </ul>    
</nav>