【发布时间】:2018-07-31 15:34:47
【问题描述】:
我有一个按钮,我想正常显示为灰色,并在单击时更改颜色并有边框,效果会逐渐消失。
这几乎是相反的: https://codepen.io/anon/pen/BPJVZB 但是当您按住左键单击时,背景颜色和边框不会淡入,而是立即消失,然后逐渐消失
.btn{
height: 4rem;
width: 4rem;
background: grey;
outline:none;
border:none;
transition: 0s;
}
.btn:active{
background: green;
color: white;
outline: 1px solid white;
outline-offset: -4px;
transition: 0.5s;
}
我可以用背景复制我想要的效果,但边框永远不会消失。有人可以帮忙吗?
** 编辑:我认为我描述得很糟糕(尽管我认为前两个 cmets 已经回答了我的问题 - 我认为我必须为边框颜色设置动画)。我试图让这种效果也随着边框淡出,有点像这样:
https://codepen.io/anon/pen/BPJVZB
.btn{
height: 4rem;
width: 4rem;
background: grey;
outline:none;
border:none;
transition: 0s .2s;
}
.btn:active{
background: green;
color: white;
outline: 1px solid white;
outline-offset: -4px;
transition: 0s;
}
【问题讨论】:
-
我不相信你可以通过将
outline或border设置为none来制作动画 - 你必须为 color 制作动画。使用rgbaalpha 通道可以实现淡出效果:border-color: rgba(255,255,255,1);到border-color: rgba(255,255,255,0);或类似的东西。 -
确实
none不是数值,因此不能用于动画/过渡。 -
是的,我认为我的问题是无法为边框设置动画 - 虽然它不是在动画中吗?我已经用笔更新了我的问题,它更清楚地显示了我想要实现的目标,但是你写的东西听起来很正确
-
@NickW 我还添加了一个我认为可以实现您的目标的答案,但如果我有误解,请对此发表评论,我会看看我的可以!