::之前和::之后的伪元素问题

时间:2017-11-12 03:49:45

标签: html css css3

我尝试做一些我认为非常简单的事情,即使我粗略地了解::before::after



.menu-icon {
  display: flex;
  width: 40px;
  height: 35px;
  border: 1px solid black;
  justify-content: center;
}
.menu-icon span {
  background-color: black;
  width: 35px;
  height: 5px;
  margin-top: 6px;
}
.menu-icon span::before {
  content: "";
  width: 35px;
  height: 5px;
  background-color: black;
}
.menu-icon span::after {
  content: "";
  width: 35px;
  height: 5px;
  background-color: black;
}

<div class="menu-icon">
        <span></span>
</div>
&#13;
&#13;
&#13;

。我只想创建一个简单的三栏汉堡包菜单,其中一个div和一个span,出于某种原因,我只能看到一个栏显示,这就是条形码在原始span元素中。根据我对::before::after的理解,他们应该能够制作这些条形码。我错了吗?如果我不是,我的代码的哪一部分不会使条形显示在伪元素中?

2 个答案:

答案 0 :(得分:2)

您需要设置一些额外的属性,例如显示和边距,以便在内容之前/之后留出空间。

.menu-icon {
  display: flex;
  width: 40px;
  height: 35px;
  border: 1px solid black;
  justify-content: center;
}
.menu-icon span {
  background-color: black;
  width: 35px;
  height: 5px;
  margin-top: 6px;
}
.menu-icon span::before {
  content: "";
  width: 35px;
  height: 5px;
  background-color: black;
  display:block;
  margin: 10px 0;
}
.menu-icon span::after {
  content: "";
  width: 35px;
  height: 5px;
  background-color: black;  display:block;
  margin: -5px 0;
}
<div class="menu-icon">
        <span></span>
</div>

答案 1 :(得分:2)

作为当前方法的替代方法,您甚至可以使用box-shadow属性两个在底部创建两个条形。

我在原始照片下方添加了两个阴影,相距9px。

.menu-icon {
  display: flex;
  width: 40px;
  height: 35px;
  border: 1px solid black;
  justify-content: center;
}
.menu-icon span {
  background-color: black;
  width: 35px;
  height: 5px;
  margin-top: 6px;
  box-shadow: 0 9px currentColor, 0 18px currentColor;
}
<div class="menu-icon">
    <span></span>
</div>