【问题标题】:Responsive navbar with dropdown table and logo between divs带有下拉表和 div 之间徽标的响应式导航栏
【发布时间】:2019-03-20 12:28:56
【问题描述】:

我正在尝试使此导航栏具有响应性,但尚未找到适用于此示例的代码。当我调整屏幕宽度时,我希望所有链接(不是徽标)都聚集在一个汉堡图标中,因此在纵向模式下,它只会显示带有链接的徽标和汉堡图标。

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>

【问题讨论】:

    标签: html css navbar


    【解决方案1】:

    我刚刚更新了您的代码,修复了您的徽标将始终位于中心位置,并且还添加了汉堡菜单。我希望它会帮助你。谢谢

    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>

    【讨论】:

    • 非常感谢!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您可以从导航中删除徽标并在其位置添加间隔元素。然后使用徽标上的绝对位置将其放置到位。这有点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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 2017-09-12
        • 1970-01-01
        相关资源
        最近更新 更多