在 html 和 css 中使导航菜单自动缩放到浏览器宽度

Making navigation menu autiomatically scale to browsers width in html and css

我正在尝试制作一个导航栏,根据打开的浏览器的宽度判断自动填充任何计算机屏幕的宽度 window。当人们重新调整他们的浏览器时,我希望我的导航栏相应地重新调整自己。我有三个菜单按钮组成我的导航栏。我觉得一个值应该是 33.334% 什么的,但是我已经摆弄了一个小时,我无法让它工作。

#navMenu {
    margin: 0 auto;
    padding: 0;
    width: auto;
    text-align: center;
    display: table;
    width: 1436px;
}

#navMenu ul {
    margin: 0;
    padding: 0;
    line-height: 30px;
    list-style-type: none;
    display: table-cell;
}

#navMenu li {
    margin: 0;
    padding: 0;
    list-style: none;
    float: left;
    position: relative;
    background: #008000;
}

#navMenu ul li a {
    text-align: center;
    font-weight: bold;
    font-family: 'TopSecret';
    src: url('TopSecret.ttf');
         url('TopSecret.ttf') format('truetype');
    text-decoration: none;
    height: 30px;
    width: 476px;
    display: block;
    color: #FFF;
    border: 1px solid #000;
}

#navMenu ul ul {
    position: absolute;
    visibility: hidden;
    top: 32px;
}

#navMenu ul li:hover ul {
    visibility: visible;
}

#navMenu li:hover {
    background: #329932;
}   

#navMenu ul li:hover ul li a:hover {
    background: #329932;
    color: #000;
}

#navMenu a:hover {
    color: #000
}

.clearFloat {
    clear: both;
    margin: 0;
    padding: 0;
}
<body>
    <div style="margin: 0 auto;">
        <div id="navMenu">
            <ul>
                <li><a href="index.html">Home</a>
                </li>
                <li><a href="#">Gallery</a>
                    <ul>
                        <li><a href="#>2018</a></li>
                        <li><a href="#">2017</a></li>
                        <li><a href="#">2016</a></li>
                        <li><a href="#">2015</a></li>
                    </ul>
                </li>
                <li><a href="tankreviews.html">Shop</a>
                </li>
            </ul>
            <br class="clearFloat">
        </div>
    </div>
</body>

您可以为此使用 flexbox

#navMenu {
  margin: 0 auto;
  padding: 0;
  width: auto;
  text-align: center;
  display: flex;
  width: 100%;
}

#navMenu ul {
  margin: 0;
  padding: 0;
  line-height: 30px;
  list-style-type: none;
  width: 100%;
  display: flex;
}

#navMenu ul li {
  margin: 0;
  padding: 0;
  list-style: none;
  position: relative;
  background: #008000;
  flex: 1;
}

#navMenu ul li a {
  text-align: center;
  font-weight: bold;
  font-family: 'TopSecret';
  src: url('TopSecret.ttf');
  url('TopSecret.ttf') format('truetype');
  text-decoration: none;
  height: 30px;
  display: block;
  color: #FFF;
  border: 1px solid #000;
}

#navMenu ul ul {
  position: absolute;
  visibility: hidden;
  top: 32px;
  display: flex;
  flex-direction: column;
}

#navMenu ul li:hover ul {
  visibility: visible;
}

#navMenu li:hover {
  background: #329932;
}

#navMenu ul li:hover ul li a:hover {
  background: #329932;
  color: #000;
}

#navMenu a:hover {
  color: #000
}

.clearFloat {
  clear: both;
  margin: 0;
  padding: 0;
}
<div>
  <div id="navMenu">
    <ul>
      <li>
        <a href="index.html">Home</a>
      </li>
      <li>
        <a href="#">Gallery</a>
        <ul>
          <li>
            <a href="#">2018</a>
          </li>
          <li>
            <a href="#">2017</a>
          </li>
          <li>
            <a href="#">2016</a>
          </li>
          <li>
            <a href="#">2015</a>
          </li>
        </ul>
      </li>
      <li>
        <a href="tankreviews.html ">Shop</a>
      </li>
    </ul>
    <br class="clearFloat ">
  </div>
</div>

这是你需要的吗?我已经更换了花车并使用了 flexbox。

#navMenu {
  width: 1436px;
}

#navMenu ul {
  margin: 0;
  padding: 0;
  line-height: 30px;
  list-style-type: none;
  display: flex;
  justify-content: space-between;
}

#navMenu li {
  background: #008000;
  width: calc(100% / 3);
  border: 1px solid #000;
  text-align: center;
}

#navMenu ul li a {
  font-weight: bold;
  font-family: 'TopSecret';
  text-decoration: none;
  width: 100% display: block;
  color: #FFF;
}

#navMenu ul ul {
  position: absolute;
  visibility: hidden;
  top: 40px;
  display: flex;
  flex-wrap: wrap;
}

#navMenu ul ul li {
  width: 100%;
}

#navMenu ul li:hover ul {
  visibility: visible;
}

#navMenu li:hover {
  background: #329932;
}

#navMenu ul li:hover ul li a:hover {
  background: #329932;
  color: #000;
}

#navMenu a:hover {
  color: #000
}
<div style="margin: 0 auto;">
  <div id="navMenu">
    <ul>
      <li><a href="index.html">Home</a>
      </li>
      <li><a href="#">Gallery</a>
        <ul>
          <li><a href="#">2018</a></li>
          <li><a href="#">2017</a></li>
          <li><a href="#">2016</a></li>
          <li><a href="#">2015</a></li>
        </ul>
      </li>
      <li><a href="tankreviews.html">Shop</a>
      </li>
    </ul>
  </div>
</div>

希望这会有所帮助:

#navMenu {
    margin: 0 auto;
    padding: 0;
    width: auto;
    text-align: center;
    display: table;
    width: 100%;
}

#navMenu ul {
    margin: 0;
    padding: 0;
    line-height: 30px;
    list-style-type: none;
    display: table-cell;
    width:100%
}

#navMenu li {
    margin: 0;
    padding: 0;
    list-style: none;
    float: left;
    position: relative;
    background: #008000;
    width: 33.3333%;
}

#navMenu ul li a {
    text-align: center;
    font-weight: bold;
    font-family: 'TopSecret';
    src: url('TopSecret.ttf');
         url('TopSecret.ttf') format('truetype');
    text-decoration: none;
    height: 30px;
    display: block;
    color: #FFF;
    border: 1px solid #000;
}

#navMenu ul ul {
    position: absolute;
    visibility: hidden;
    top: 32px;
}
#navMenu ul ul li {
  float: none;
  right:0;
  left:0;
  width:100%
}
#navMenu ul li:hover ul {
    visibility: visible;
}

#navMenu li:hover {
    background: #329932;
}   

#navMenu ul li:hover ul li a:hover {
    background: #329932;
    color: #000;
}

#navMenu a:hover {
    color: #000
}

.clearFloat {
    clear: both;
    margin: 0;
    padding: 0;
}
<body>
    <div style="margin: 0 auto;">
        <div id="navMenu">
            <ul>
                <li><a href="index.html">Home</a>
                </li>
                <li><a href="#">Gallery</a>
                    <ul>
                        <li><a href="#>2018</a></li>
                        <li><a href="#">2017</a></li>
                        <li><a href="#">2016</a></li>
                        <li><a href="#">2015</a></li>
                    </ul>
                </li>
                <li><a href="tankreviews.html">Shop</a>
                </li>
            </ul>
            <br class="clearFloat">
        </div>
    </div>
</body>

给你的 NavMenu 一个相对大小,即 100%(如果你不希望它变得大于某个大小,你也可以使用 max-width)并将 33% 放在 #navMenu li 而不是 # navMenu ul li a(没有设置任何宽度会搞砸!)。

我还会在图库下拉链接中添加另一个 class,这样您就可以根据需要分别设置宽度为 100% 或固定大小的样式。

这是它的样子:

#navMenu {
    margin: 0 auto;
    padding: 0;
    width: auto;
    text-align: center;
    display: table;
    max-width: 1436px;
width: 100%;
}

#navMenu ul {
    margin: 0;
    padding: 0;
    line-height: 30px;
    list-style-type: none;
    display: table-cell;
}

#navMenu li {
    margin: 0;
    padding: 0;
    list-style: none;
    float: left;
    position: relative;
    background: #008000;
    width: 33%;
}

#navMenu ul.drop li {
    width: 100%;
}

#navMenu ul li a {
    text-align: center;
    font-weight: bold;
    font-family: 'TopSecret';
    src: url('TopSecret.ttf');
         url('TopSecret.ttf') format('truetype');
    text-decoration: none;
    height: 30px;
    display: block;
    color: #FFF;
    border: 1px solid #000;
}

#navMenu ul ul {
    position: absolute;
    visibility: hidden;
    top: 32px;
}

#navMenu ul li:hover ul {
    visibility: visible;
}

#navMenu li:hover {
    background: #329932;
}   

#navMenu ul li:hover ul li a:hover {
    background: #329932;
    color: #000;
}

#navMenu a:hover {
    color: #000
}

.clearFloat {
    clear: both;
    margin: 0;
    padding: 0;
}