html - 如何让导航栏跨越页面的宽度?

标签 html css

到目前为止,我已经看了几个与这个非常相似的问题,但仍然找不到我的问题的答案。 (请注意,我是 HTML 的新手,这是我的第一篇文章)。

我想要一个横跨页面宽度的导航栏,而不管正在查看它的屏幕宽度如何。我尝试将 的宽度设置为 100%,但它仍然没有做任何事情。

导航栏的代码在这里:

<!DOCTYPE html>
<html>
<head>
<style>

nav {
    width: 100%;
}

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
}

li {
    float: left;
}

a {
    display: block;
    width: 60px;
    background-color: #dddddd;
    border-color: #ffffff;
    text-align: center;
    text-decoration: none;
    padding: 10px;
    margin: 3px;
    border-radius: 4px;
}

a:hover {
    font-weight: bold;
    background-color: #9b9b9b;
}

a:active {
    color: #ff0000;
} 

</style>
</head>
<body>
<nav>
<ul>
  <li><a href="#home">Home</a></li>
  <li><a href="#news">News</a></li>
  <li><a href="#contact">Contact</a></li>
  <li><a href="#about">About</a></li>
</ul>
</nav>
</body>
</html>

你能帮我想办法让导航栏横跨页面宽度吗?

谢谢!

最佳答案

如果你想将 li 展开成与 ul 相同的大小并填充 ul 的宽度,flexbox 可以做到这一点。

现代浏览器 - Flexbox

nav {
    width: 100%;
    background: #333;
  margin-bottom: 1em;
}

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
display: flex;
}

li {
    flex:1 0 auto;
}

a {
    display: block;
    /*width: 60px;*/
    background-color: #dddddd;
    border-color: #ffffff;
    text-align: center;
    text-decoration: none;
    padding:10px 0;
    margin: 3px;
    border-radius: 4px;
}

a:hover {
    font-weight: bold;
    background-color: #9b9b9b;
}

a:active {
    color: #ff0000;
} 
<nav>
  <ul>
    <li><a href="#home">Home</a>
    </li>
    <li><a href="#news">News</a>
    </li>
    <li><a href="#contact">Contact</a>
    </li>
    <li><a href="#about">About</a>
    </li>
  </ul>
</nav>


<nav>
  <ul>
    <li><a href="#home">Home</a>
    </li>
    <li><a href="#news">News</a>
    </li>
    <li><a href="#contact">Contact</a>
    </li>
    <li><a href="#about">About</a>
    </li>
    <li><a href="#home">Home</a>
    </li>
    <li><a href="#news">News</a>
    </li>
    <li><a href="#contact">Contact</a>
    </li>
    <li><a href="#about">About</a>
    </li>
  </ul>
</nav>

替代解决方案:旧浏览器 - CSS 表

nav {
  width: 100%;
  background: #333;
  margin-bottom: 1em;
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  display: table;
  width: 100%;
  table-layout: fixed;
}
li {
  display: table-cell;
}
a {
  display: block;
  /*width: 60px;*/
  background-color: #dddddd;
  border-color: #ffffff;
  text-align: center;
  text-decoration: none;
  padding: 10px;
  margin: 3px;
  border-radius: 4px;
}
a:hover {
  font-weight: bold;
  background-color: #9b9b9b;
}
a:active {
  color: #ff0000;
}
<nav>
  <ul>
    <li><a href="#home">Home</a>
    </li>
    <li><a href="#news">News</a>
    </li>
    <li><a href="#contact">Contact</a>
    </li>
    <li><a href="#about">About</a>
    </li>
  </ul>
</nav>


<nav>
  <ul>
    <li><a href="#home">Home</a>
    </li>
    <li><a href="#news">News</a>
    </li>
    <li><a href="#contact">Contact</a>
    </li>
    <li><a href="#about">About</a>
    </li>
    <li><a href="#home">Home</a>
    </li>
    <li><a href="#news">News</a>
    </li>
    <li><a href="#contact">Contact</a>
    </li>
    <li><a href="#about">About</a>
    </li>
  </ul>
</nav>

关于html - 如何让导航栏跨越页面的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301355/

相关文章:

html - 有什么方法可以为超过(例如)10 个字母的单词设置函数吗?

javascript - 在页面上查看 Angular 模板的内容

css - 禁用子元素的继承属性的顺序转换

css - 高度设置为 100% 但页面未正确呈现

php - 具有多个提交的 PHP 页面上的表单更改页面的 CSS

javascript - 如果 HTML 文本等于值,则单击更改

php - 在 Wordpress 中运行 MySQL 查询会导致 HTML 标记消失?

javascript - 如何手动计算 html 中特定标签的 offsetwidth?

html - 我怎样才能重复图像翻转并在我的网站下方对齐多个图像?

html - 对齐动态生成的 div