【问题标题】::before and :after pseudo elements to receive transition effect:before 和 :after 伪元素接收过渡效果
【发布时间】:2018-09-07 16:55:28
【问题描述】:

我正在尝试构建仅在悬停在菜单项中时出现的平行四边形背景。对于形状,我使用 :before 和 :after 伪元素,但是我不能对它们应用相同的过渡效果。有谁知道我可以做些什么来解决这个问题?

这是直到现在的代码:

div {
    float:left;   
    background-color:#fff; 
    margin: 20px;
    transition:.5s;
  
}
.testClass {
    margin-top: 0px;
    margin-left: 0px;
    padding: 5px 10px;
    display: block;
    background-repeat: no-repeat;
    background: #fff;
    position: relative;
    transition:.5s;

}
.testClass:hover {
    background: gold;
    transition:.5s;

}
.testClass:hover:before {
    content: '';
    position: absolute;
    top:0;
    left:-15px;
    width: 0px;
    height: 0px;
    border-style: solid;
    border-width: 0 0 29px 15px;
    border-color: transparent transparent gold transparent;

}
.testClass:hover:after {
    content: '';
    position: absolute;
    top:0;
    right:-15px;
    width: 0px;
    height: 0px;
    border-style: solid;
    border-width: 30px 15px 0 0;
    border-color: gold transparent transparent transparent;

}
<div >
    <div class="testClass">HOME</div>
    <div class="testClass">ABOUT US</div>
    <div class="testClass">CONTACT</div>
    <div class="testClass">LOGIN</div>
    <div class="testClass">SERVICES</div>
</div>

【问题讨论】:

  • 您的::before::after 伪元素需要在没有:hover 的情况下额外可见。另外,严格来说,伪元素有双冒号:::before/::after,以区别于伪类。

标签: css css-transitions pseudo-element


【解决方案1】:

只有一个元素来创建形状的更简单方法如何:

div {
  float: left;
  margin: 20px;
  transition: .5s;
}

.testClass {
  margin-top: 0px;
  margin-left: 0px;
  padding: 5px 10px;
  display: block;
  background: #fff;
  position: relative;
  transition: .5s;
  z-index: 0;
}

.testClass:before {
  content: '';
  position: absolute;
  z-index: -1;
  top: 0;
  left: -10px;
  right: -10px;
  bottom: 0;
  opacity: 0;
  background: gold;
  transform: skew(-20deg);
  transition: .5s;
}

.testClass:hover::before {
  opacity: 1;
}
<div>
  <div class="testClass">HOME</div>
  <div class="testClass">ABOUT US</div>
  <div class="testClass">CONTACT</div>
  <div class="testClass">LOGIN</div>
  <div class="testClass">SERVICES</div>
</div>

【讨论】:

    猜你喜欢
    • 2012-04-05
    • 2012-05-21
    • 2020-09-20
    • 2011-04-02
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多