我正在使用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>
答案 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;
}