【问题标题】:How To Centre a Navigation Bar that has Dropdown Menus如何使具有下拉菜单的导航栏居中
【发布时间】:2019-03-31 12:20:19
【问题描述】:

我创建了这个带有下拉菜单的简单顶部导航栏,我试图让所有链接(包括下拉菜单)居中。

我已经寻找并尝试了不同的方法来将所有内容居中,以便在用于移动设备、平板电脑或小分辨率屏幕时自动调整,但我只是设法将下拉菜单或其他链接居中,但并非所有内容都居中... 我该怎么做?

这是我正在使用的代码


body 
.navbar {
  overflow: hidden;
  background-color: #221a57;
}

.navbar a {
  float: left;
  font-size: 16px;
  color: white;
  text-align: center;
  min-width: 160px;
  padding: 14px 16px;
  text-decoration: none;
}

.dropdown {
  float: left;
  overflow: hidden;
}

.dropdown .dropbtn {
  font-size: 16px;  
  border: none;
  outline: none;
  color: white;
  min-width: 192px;
  padding: 14px 16px;
  background-color: inherit;
  font-family: inherit;
  margin: 0;
}

.navbar a:hover, .dropdown:hover .dropbtn {
  background-color: #F73D4B;
}

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

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

.dropdown-content a:hover {
  background-color: #ddd;
}

.dropdown:hover .dropdown-content {
  display: block;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

</head>
<body>

<div class="navbar">
  <a href="/home">Home</a>
  <a href="/about">About</a>
  <a href="/articles">Articles</a>
  <div class="dropdown">
    <button class="dropbtn">Freebies 
      <i class="fa fa-caret-down"></i>
    </button>
    <div class="dropdown-content">
      <a href="/eguide">eGuide</a>
      <a href="/wallpapers">Wallpapers</a>
    </div>
  </div> 
  <a href="/contact">Contact</a>
</div>
</body>
</html>
```

【问题讨论】:

  • 欢迎来到 Stack Overflow!请提供minimal reproducible example。这将增加您获得适当答案的机会。此外,它还可以帮助您自己解决问题。
  • 删除浮动最小宽度溢出并使用 display:flex;证明内容:中心;

标签: html css navigation


【解决方案1】:

你可以使用 display:flex;证明内容:中心;然后您可以根据需要固定宽度,不需要溢出

<!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <style>
     
    .navbar {
     
      background-color: #221a57;
      display:flex;
      justify-content:center;
    }
     
    .navbar a {
      font-size: 16px;
      color: white;
      text-align: center;
      
      padding: 14px 16px;
      text-decoration: none;
    }


    .dropdown .dropbtn {
      font-size: 16px;  
      border: none;
      outline: none;
      color: white;

      padding: 14px 16px;
      background-color: inherit;
      font-family: inherit;
      margin: 0;
    }

    .navbar a:hover, .dropdown:hover .dropbtn {
      background-color: #F73D4B;
    }

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

    .dropdown-content a {

      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
      text-align: left;
    }

    .dropdown-content a:hover {
      background-color: #ddd;
    }

    .dropdown:hover .dropdown-content {
      display: block;
    }
    </style>
    </head>
    <body>

    <div class="navbar">
      <a href="/home">Home</a>
      <a href="/about">About</a>
      <a href="/articles">Articles</a>
      <div class="dropdown">
        <button class="dropbtn">Freebies 
          <i class="fa fa-caret-down"></i>
        </button>
        <div class="dropdown-content">
          <a href="/eguide">eGuide</a>
          <a href="/wallpapers">Wallpapers</a>
        </div>
      </div> 
      <a href="/contact">Contact</a>
    </div>
    </body>
    </html>

【讨论】:

  • 非常感谢,它有效!但是,如果这发生在移动设备上,部分菜单将不可见……有什么办法解决这个问题?
  • 我测试了它的响应性
  • 嗨,是的 here 我正在使用这个网站进行测试:kensho.life/photoblog(忘记蓝条上方的文本菜单)
  • 你好 @thatguyreally 是的,我可以看到你有填充和宽度,这就是为什么
  • 你是在这个部分使用 javasript 还是插件?
猜你喜欢
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2016-05-15
相关资源
最近更新 更多