html - 响应式导航栏,带有下拉表和 div 之间的 Logo

标签 html css navbar

我试图让这个导航栏响应,但没有找到在这个例子中有效的代码。当我调整屏幕宽度时,我希望所有链接(不是 Logo )都聚集在一个汉堡包图标中,因此在纵向模式下它只会显示 Logo 和带有链接的汉堡包图标。

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

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>

最佳答案

我刚刚更新了您的代码,并进行了一些修复,您的 Logo 将始终位于中心,并且还添加了汉堡菜单。我希望它能帮助你。谢谢

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>

关于html - 响应式导航栏,带有下拉表和 div 之间的 Logo ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55260823/

相关文章:

javascript - Uncaught ReferenceError : Vue is not defined at room. js:109

javascript - 如何配置 emacs 以编辑包含 Javascript 的 HTML 文件?

html - 限制文本区域

javascript - 响应式幻灯片无法正常工作

javascript - 网站上有多个 x3d 文件

html - 垂直对齐的百分比边距的 CSS 问题

html - 如何将背景颜色固定为标题?

twitter-bootstrap - 水平滚动导航栏 Bootstrap

html - 使用 css 过渡更改导航栏颜色

html - CSS:带有水平滚动和下拉按钮的顶部栏