按钮转换使用javascript和css,如何临时禁用转换
Button transition using javascript and css, how to temporarily disable the transition
基本上,我有一个按钮,我想在那里悬停并滑动到绿色(活动)按钮,然后鼠标移出并滑动到看起来是打开的灰色非活动按钮,但它是从左边来的,然后我想取消这个设置,这样我的按钮就回到了开始,而没有真正转换到它,希望这有意义吗?
目前,如果我转换到从左:0到左:-210px的第一个按钮,你会看到转换,因为.btn-ctn有转换,有可能暂时禁用它,这样按钮就可以有效地跳跃,这样你就看不到中间的绿色按钮了吗?
CSS
* {
padding: 0;
margin: 0;
border: 0;
outline: 0;
list-style: none;
}
body {
padding: 20px;
}
.direction {
width: 70px;
overflow: hidden;
}
.btn-ctn {
width: 210px;
position: relative;
left: -140px;
-webkit-transition: left .3s ease-in-out;
}
.btn-ctn.on {
left: -70px;
}
.btn-ctn.off {
left: 0;
}
.btn-ctn > li {
float: left;
position: relative;
}
.btn {
width: 70px;
height: 70px;
background: #676767;
display: block;
}
.btn::after {
content: '';
width: 30px;
height: 30px;
border-right: 2px solid white;
border-top: 2px solid white;
display: block;
position: absolute;
top: 0; right: 15px; bottom: 0; left: 0;
margin: auto;
-webkit-transform:rotate(45deg);
}
.active .btn {
background: #5cdf84;
}
.btns > li::after {
}
JS
$('.btn').on('mouseenter', function() {
$('.btn-ctn').removeClass('off').addClass('on');
}).on('mouseleave', function() {
$('.btn-ctn').removeClass('on').addClass('off');
//reset to start without actually animating so if i hover over again the same animation happens as if its first time?
});
JSFiddlehttp://jsfiddle.net/AtZX2/2/
EDIT我想我已经知道你现在要做什么了。您确实需要将transition
属性移动到on
和off
类上,正如我之前建议的那样:
.btn-ctn {
width: 210px;
position: relative;
left: -140px;
}
.btn-ctn.on {
left: -70px;
-webkit-transition: left .3s ease-in-out;
}
.btn-ctn.off {
left: 0;
-webkit-transition: left .3s ease-in-out;
}
但关键是监听webkitTransitionEnd
事件,以便在off
类完成滑动后删除它:
$('.btn-ctn').on('webkitTransitionEnd', function(e) {
$(e.target).removeClass('off');
});
JSFiddle演示在这里:http://jsfiddle.net/AtZX2/6/
我创建了一个小提琴:示例
基本上你做得很对。它唯一缺少的一件大事是在动画结束时暂停:
setTimeout(function(){
$('.btn-ctn')
.removeClass('on off2 animated')
.addClass('off')
}, 300);
将转换的CSS值与JS代码同步可能会出现问题。考虑使用.animate
完全使用javascript来制作动画。我知道它不那么CSS3y,但它可以防弹。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 在Javascript中转换对象数组
- 将数字转换为一定数量的硬币
- 将纯文本URL转换为可单击链接
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 如何将TypeScript对象转换为普通对象
- 检测个位数整数时正在转换毫秒
- 从javascript到jquery的转换
- DOM事件通过JSON转换为java
- 将圆柱体转换为弯管
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 按钮转换使用javascript和css,如何临时禁用转换
- 在Angular中将表单数据临时转换为table对象