first-child 选择器不工作

first-child selector not working

我正在尝试构建一个简单的盒子系统,我需要删除第一个 child 的右边距。

我已经尝试了 first-childfirst-of-type 但仍然无法正确定位预期的 class.

我已经阅读了许多不同的示例,但仍然找不到解决方案。

请查看此 fiddle 并帮我删除第一个 child 中的 margin-left。

.container {
  position: relative;
  width: 100%;
  max-width: 960px;
  margin: 0 auto;
  padding: 0 20px;
  box-sizing: border-box;
  background-color: black;
}

.box {
  margin: 1% 0 1% 0;
  float: left;
  background-color: gray;
  box-sizing: border-box;
  color:white;
}
.box.full {
  width: 100%;
  margin-left: 0;
}

.box.half {
  width: 49%;
  margin-left: 1%;
}

.half:first-child {
  margin-left: 0;
}

你确实在瞄准二胎:

.box.half:nth-child(2) {
  margin-left: 0;
}

试试这个:)

.box.half {
  width: 49%;
}

.box.half + .box.half
{
    margin-left: 2%;
}

.box.half 只有在 .box.half 之前才会有 margin-left: 2%.

没有左边距,没有右边距,49 + 49 + 2 = 100,利润。

查看您的 Fiddle 更新:http://jsfiddle.net/Lvd44upd/3/

我用过

.box.half { width: 49%; }

.box.half:last-child { margin-left: 1%; }

。似乎有效 here

第一个 .half class 元素不是 .container 的第一个 child。这是第二个 child,因此您的选择器不起作用。

我建议使用

.box.full + .box.half {
    margin-left: 0;
}

指定紧跟在 .box.full 之后的任何 .box.half 都有您想要的边距。

因为前半个框不是它父项的第一个子项,而是第二个。如此快速的解决方案是 .box.half:nth-child(2).