html - 如果位置固定,如何使元素与其父元素一样宽

标签 html css sass

我想创建一个左侧有图像、右侧有导航栏的导航。导航的位置是固定的。 问题是导航现在比周围的主体更宽。

如何使导航与 body 一样宽,同时固定其位置?

body {
  margin: 20px 20px 0; }
  body nav {
    top: 0;
    background-color: #fff;
    padding: 10px 10px 0 0;
    display: flex;
    justify-content: space-between;
    width: 100%;
    position: fixed;
    z-index: 99;
    height: 80px; }
    body nav .nav__logo {
      width: 180px;
      padding: 10px 0; }
      body nav .nav__logo img {
        width: 100%; }
    body nav .nav__bar {
      display: flex;
      padding-right: 30px;
      padding-left: 0;
      justify-content: flex-end;
      align-items: center;
      flex: 1; }
      body nav .nav__bar li {
        margin: 0 20px; }
      body nav .nav__bar .bar__level1 {
        display: inline-flex; }

/*# sourceMappingURL=style.css.map */
<!DOCTYPE html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
    <title>Nav bar problem</title>
    <link href="style.css" rel="stylesheet"/>
</head>

<body>
<nav>
    <div class="nav__logo">
        <a href="/" title="Start">
            <img src="">
        </a>
    </div>
    <div class="nav__bar">
        <ul class="bar__level1">
            <li><p>Start</p></li>
            <li><p>Item1</p></li>
            <li><p>Item2</p></li>
            <li><p>Item3</p></li>
            <li><p>Item4</p></li>
        </ul>
    </div>
</nav>
<main>

</main>
</body>

https://jsfiddle.net/he4c6ur9/

最佳答案

您的导航比正文标记大,因为您在正文上设置了 20 像素的边距。

如果您将左右位置属性设置为 20px(与正文的边距相同),您的导航将与其父级(正文标记)一样宽。

https://jsfiddle.net/dbku29oc/

body {
  margin: 20px 20px 0; }
  body nav {
    top: 0;
    left: 20px;
    right: 20px;
    background-color: #fff;
    padding: 10px 10px 0 0;
    display: flex;
    justify-content: space-between;
    /*width: 100%;*/
    position: fixed;
    z-index: 99;
    height: 80px; }
    body nav .nav__logo {
      width: 180px;
      padding: 10px 0; }
      body nav .nav__logo img {
        width: 100%; }
    body nav .nav__bar {
      display: flex;
      padding-right: 30px;
      padding-left: 0;
      justify-content: flex-end;
      align-items: center;
      flex: 1; }
      body nav .nav__bar li {
        margin: 0 20px; }
      body nav .nav__bar .bar__level1 {
        display: inline-flex; }

/*# sourceMappingURL=style.css.map */
<!DOCTYPE html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"/>
    <title>Nav bar problem</title>
    <link href="style.css" rel="stylesheet"/>
</head>

<body>
<nav>
    <div class="nav__logo">
        <a href="/" title="Start">
            <img src="">
        </a>
    </div>
    <div class="nav__bar">
        <ul class="bar__level1">
            <li><p>Start</p></li>
            <li><p>Item1</p></li>
            <li><p>Item2</p></li>
            <li><p>Item3</p></li>
            <li><p>Item4</p></li>
        </ul>
    </div>
</nav>
<main>

</main>
</body>

关于html - 如果位置固定,如何使元素与其父元素一样宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259279/

相关文章:

html - 悬停在 :before pseudo elements

css - 更改按钮上的背景大小?

html - 图像不会在 bootstrap 3 中的一行上对齐

html - 确保列表图像不会在左侧被截断

ruby-on-rails - 类似于 Twitter Bootstrap 的 CSS 工具包?

html - 如何在 Bootstrap 模板中使图像响应

html - 更改表格行边框查询

javascript - jQuery 使用动态创建的按钮切换动态创建的表中的下一行

css - 使用 SASS/SCSS 创建多个文本阴影值

css - EmberJS CSS 选项