使用sass悬停时未显示图标

时间:2019-03-06 07:34:37

标签: css sass

我正在使用scss并试图隐藏图标,当我将鼠标悬停在按钮上时,我希望图标显示。我也想对其进行动画处理,所以我不能使用display:none,因为我相信您不能对此进行动画处理。因此,我尝试使用不透明度和可见性。

我有2个问题。首先,按钮中的文本未居中,因为图标处于不可见状态,但是当您使用开发工具时,仍然可以在其中看到它。其次,该图标不会出现在悬停上。

.btn {
  text-transform: uppercase;
  text-decoration: none;
  padding: 1.5rem 4rem;
  display: inline-block;
  font-size: 1.6rem;
  box-shadow: 0 1rem 2rem rgba($color-black, .2);
  &--primary {
    background-color: $color-primary;
    color: $color-white;
    transition: all .2s;
    &__icon {
      visibility: hidden;
      opacity: 0;
    }
    &:hover {
      transform: translateY(-2px);
      &__icon {
        visibility: visible;
        opacity: 1;
      }
    }
  }
}
<a href="#" class="btn btn--primary">Discover More <i class="btn--primary__icon icon-basic-clockwise"></i></a>

1 个答案:

答案 0 :(得分:1)

我认为问题是您的图标以零内容内联显示。我认为您可能需要将图标更改为mysvcacct并为其提供一些尺寸。当图标不可见时,您需要将尺寸设置为display: inline-block;

我将您的代码从SCSS转换为CSS,并用实际的CSS颜色替换了$ variables以创建一个有效的代码段...

0px
.btn {
  text-transform: uppercase;
  text-decoration: none;
  padding: 1.5rem 4rem;
  display: inline-block;
  font-size: 1.6rem;
  box-shadow: 0 1rem 2rem rgba(0,0,0, .2);
  width: 240px;
}
.btn--primary {
  background-color: red;
  color: white;
  transition: all .2s;
}
.btn--primary__icon {
  display: inline-block;
  width: 0px;
  height: 0px;
  visibility: hidden;
  opacity: 0;
}
.btn--primary:hover {
  transform: translateY(-2px);
}
.btn--primary:hover .btn--primary__icon {
  width: 20px;
  height: 20px;
  background-color: blue;
  visibility: visible;
  opacity: 1;
}