gpt4 book ai didi

javascript - 图形按钮上的持久 CSS3 过渡效果

转载 作者:太空宇宙 更新时间:2023-11-04 15:37:53 25 4
gpt4 key购买 nike

我是 web 开发的新手,我想创建一个带有高亮脉冲效果的图形按钮,让我解释一下:

按钮构建了2层,第一层是默认状态一直显示,第二层是高亮状态(白色)只有当按钮被点击或触摸时才显示(显示时该层不透明度为1,隐藏时为 0)。

我的问题是,无论单击或触摸事件的持续时间如何,我都希望突出显示的不透明度从 0 变为 1。仅当达到值 1 时才应过渡回不透明度 0 值,这意味着在高亮层的不透明度达到 1 之前不应触发释放事件(鼠标弹起或触摸结束)。

我正在使用带有 phonegap 封装的 Compass (scss) 和 jquery mobile。

我编写了一个可以运行但不符合我的目标的版本:一旦我释放按钮,到突出显示状态的转换就会停止(例如,如果我进行非常快速的触摸,即使在不透明度上有 0.2 秒的转换,突出显示状态也不可见,尽管触发了 touchend 事件.. .(转换在到达 1 之前返回到 0)...

整个代码可能不太干净,但我正在努力学习:)

欢迎提供任何线索或建议!

HTML 代码如下所示:

<div class=btn-test>
<span>
<a class=btn-a href=#>
</a>
</span>
</div

SCSS 看起来像这样:

@import "compass/reset";
@import "compass/css3";

.btn-test {

span {
@include background-image(image-url("foo.png"));
background-position: 0px 0px;

width: 72px;
height: 70px;

display: inline-block;
}

a {
@include background-image(image-url("foo.png"));
background-position: 0 71px;

@include transition-property(opacity);
@include transition-duration(0.2s);
@include transition-timing-function(ease);

width: 72px;
height: 70px;

display: inline-block;

-webkit-touch-callout: none !important;
}

.btn-a {

opacity: 0;
}

.btn-a:active {

opacity: 1;
}

}

最佳答案

您想要的是动画,而不是简单的过渡。您可以使用 gem install compass --pre

在 compass 0.13 alpha 中获得跨浏览器动画

解决方案是为您的不同状态添加关键帧:

@import "compass/css3/animation";

@include keyframes(flashButton){
0%{
opacity: 0;
}
50%{
opacity: 1;
}
100% {
opacity: 0;
}
}

.animate-button {
@include animate(flashButton 1s ease);
}

然后使用一些 jQuery:

$('.btn-test').on('click', function(){
//reset state in case animation has already been played
$('.btn-test').removeClass('animate-button');
setTimeout(function(){$('.btn-test').addClass('animate-button')}, 1)
});

我还没有使用它,但你也可以使用 https://github.com/ericam/compass-animate这是在这里找到的很棒的 css 动画的指南针端口 http://daneden.me/animate/

关于javascript - 图形按钮上的持久 CSS3 过渡效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com