【问题标题】:Problem positioning box item inside a CSS Grid [duplicate]CSS网格内的问题定位框项目[重复]
【发布时间】:2019-06-18 11:10:37
【问题描述】:

我正在学习 HTML 和 CSS,现在我正在学习 CSS Grid。

我想我正在了解 CSS Grid 的工作原理,并且我一直在尝试编写一个网站,其中一个盒子项目位于网格内的特定位置。

我截取了一个屏幕截图,并在我试图放置容器盒项目的位置画了一个正方形。我一直在尝试使用网格列和网格行来定位它,现在可用。

(那个纯黑色矩形应该是看那个容器盒的油漆图)

这是我的代码:

body {
  background: #aaa;
}

html,
body,
.header-bar {
  height: 100%;
  margin: 0;
}

.header-grid {
  display: grid;
  grid-template: 100px / 1fr 1fr 1fr;
}

.header-bar {
  grid-column: 1/4;
  background: #ccc;
  margin-bottom:
}

.menu-items ul {
  margin: 0;
  padding: 0;
}

.menu-items li {
  list-style: none;
  float: left;
  margin-right: 10px;
  background-color: #aaa;
  position: relative;
  line-height: 60px;
}

.menu-items {
  grid-row: 1/2;
  grid-column: 1/2;
  float: left;
  margin-left: 20px;
  margin-top: 18px;
}

.img {
  height: 70px;
  width: 90px;
  float: left;
  margin-left: 100px;
  margin-top: 10px;
}

.container-box {
  background: #000;
  width: 18em;
  grid-column: 3/4;
  grid-row: ;
}


/*float clearfix */

.list-items:after {
  content: "";
  display: table;
  clear: both;
}

.header-bar:after {
  content: "";
  display: table;
  clear: both;
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="css/style.css">
</head>

<body>
  <div class="header-grid">
    <header class="header-bar">
      <img src="img/shop.png" class="img">
      <nav class="menu-items">
        <ul class="list-items">
          <li>Categories</li>
          <li>Gifts</li>
          <li>Giveaways</li>
          <li>Exclusive</li>
        </ul>
      </nav>
    </header>
  </div>
  <div class="container-box">
    test
  </div>
</body>

</html>

另外,如果您选择了语义错误,请告诉我。

【问题讨论】:

    标签: html css grid css-grid


    【解决方案1】:

    很高兴你尝试自己学习这些东西!所以几件事: - 您将一些 CSS 样式留空。小心不要这样做,因为这在某些浏览器中可能会发生不可预测的行为。 margin-bottom 以 '.header-bar' 为例

    • 在处理 flexbox 或网格时,唯一会受到影响的元素将是其直接子元素。所以在“.header-grid”的情况下,唯一的孩子是“.header-bar”,所以让它成为一个网格是多余的。

    • 回到最后一点可能会说明为什么事情不适合您。 '.container-box' 是您想要放置在该位置的那个,它没有作为网格的父元素,因此网格不会影响它。你如何解决这个问题取决于你的计划是什么。您可以简单地在左侧和顶部添加一些边距。分别约为 200px 和 100px。你也可以做类似Codepen 的事情。这些都是得到你想要的东西的肮脏方式。 更合适的方法需要重新设计如何将所有这些组合在一起。使用容器并避开漂浮物。而是使用 flexbox。这样做实际上甚至不需要太多的网格。这是可以清理Codepen的许多可能方法之一。展望未来,您通常会希望远离花车。 Flexbox 和网格允许您以更清洁、更稳定的方式做类似的事情,同时还提供更大的灵活性。祝您好运,如果您有任何困惑,请随时跟进。

    【讨论】:

    【解决方案2】:

    现在您的标题使用网格,但您的布局的其余部分不是。

    类似于您如何将display: grid; 设置在标题周围 的元素上,您需要在container-box div 周围创建一些容器元素,并在其上添加display: grid;

    这样网格项 (container-box) 可以使用您设置的网格列和网格行属性。只需确保也为 grid-row 设置一个值,现在它是空的。

    【讨论】:

    • 非常感谢。我一直在摆弄这段代码很多次,以至于我没有注意到我的网格与 contianer-box 不在同一个盒子中。对不起!非常感谢您花时间查看我的代码并帮助我!
    • 没问题!很高兴有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2014-10-11
    • 2018-12-09
    • 2019-01-21
    • 2023-03-31
    相关资源
    最近更新 更多