CSS转换和伪类

时间:2017-11-09 21:17:40

标签: html css css3 css-selectors pseudo-class

使用:之后,我正在尝试创建野蛮的伪3D按钮。 但是:after显示在预期元素之上。

What I'm Trying to accomplish

What I'm getting

编辑:显然,变革正在阻碍,研究尚未产生原因或找到解决方法。

我错过了什么?或者有更好的方法吗?

nav li {
  position: relative;
  display:inline-block;
  transition: background 0.2s;
  transform: skewX(10deg);
}
nav li a {
  display:block;
  text-decoration:none;
  padding: 5px 10px;
  font: 30px/1 sans-serif;
  color: #0bf;
}
nav li.active,
nav li:hover{
  background:#000;
}

nav li.active:after {
  content: "";
  display: inline-block;
  top: 10px;
  left: 10px;
  width: 100%;
  height: 100%;
  background-color: red;
  
  position: absolute;
  z-index: -1;
}
<nav>
  <ul>
    
    <li class="active">
      <a href="#">Products</a>
    </li>
    
  </ul>
</nav>

2 个答案:

答案 0 :(得分:2)

您可以使用:after

代替box-shadow

nav li {
  position: relative; z-index:0;
  display:inline-block;
  transition: background 0.2s;
  transform: skewX(10deg);
  box-shadow: 10px 10px 0 red;
}
nav li a {
  display:block;
  text-decoration:none;
  padding: 5px 10px;
  font: 30px/1 sans-serif;
  color: #0bf;
}
nav li.active,
nav li:hover{
  background:#000;
}
<nav>
  <ul>
    
    <li class="active">
      <a href="#">Products</a>
    </li>
    
  </ul>
</nav>

答案 1 :(得分:1)

Voila ......刚编辑了这一部分:

nav li.active,
nav li:hover{
  background:#000;
}

......应该是:

nav li.active a,
nav li:hover a{
  background:#000;
}

以下是工作代码:

&#13;
&#13;
nav li {
  position: relative;
  display:inline-block;
  transition: background 0.2s;
  transform: skewX(10deg);
}
nav li a {
  display:block;
  text-decoration:none;
  padding: 5px 10px;
  font: 30px/1 sans-serif;
  color: #0bf;
}
nav li.active a,
nav li:hover a{
  background:#000;
}

nav li.active:after {
  content: "";
  display: inline-block;
  top: 10px;
  left: 10px;
  width: 100%;
  height: 100%;
  background-color: red;
  
  position: fixed;
  z-index: -1;
}
&#13;
<nav>
  <ul>
    
    <li class="active">
      <a href="#">Products</a>
    </li>
    
  </ul>
</nav>
&#13;
&#13;
&#13;