CSS3动画与单击冲突
CSS3 Animation conflicting with click
所以我有一个动画,如果点击输入,它就会启动,当你长按或右键点击时,它有点像Windows 8的动画。
我的JS:
$("body").on('click',function(e){
if($(e.target).closest(".img_list")){
var inp = $(e.target).closest(".img_list").find("input")[0];
if(inp.checked){
$(e.target).closest(".img_list").addClass("clicked tilting");
}else{
$(e.target).closest(".img_list").removeClass("clicked tilting");
}
}
});
和切换类的CSS:
@keyframes tilter{
0%{
-webkit-transform: perspective(320px) rotate3d(0, 1, 0, -8deg);
transform: perspective(320px) rotate3d(0, 1, 0, -8deg);
}
25%{
-webkit-transform: perspective(320px) rotate3d(0, 1, 0, 8deg);
transform: perspective(320px) rotate3d(0, 1, 0, 8deg);
}
50%{
-webkit-transform: perspective(320px) rotate3d(0, 1, 0, -8deg);
transform: perspective(320px) rotate3d(0, 1, 0, -8deg);
}
75%{
-webkit-transform: perspective(320px) rotate3d(0, 1, 0, 8deg);
transform: perspective(320px) rotate3d(0, 1, 0, 8deg);
}
100%{
-webkit-transform: perspective(320px) rotate3d(0, 1, 0, -8deg);
transform: perspective(320px) rotate3d(0, 1, 0, -8deg);
}
}
但这与我的点击事件相冲突,因为某种原因,当我点击时目标不在那里。
这很难解释,所以我在这里为你写了一首小提琴如果你像疯子一样点击,你最终会看到这种情况发生。它还有我的原始代码,比这更容易,也更干净。
有人能向我解释一下为什么这是一场冲突吗?
关于CSS的一些一般注意事项:
- 只将供应商的前缀放在带前缀的关键帧动画中,这意味着
@-webkit-keyframes
等中只有-webkit-transform
- 可以通过逗号分隔值来重用关键帧,因此可以使用
0%, 50%, 100% { ... do something ... }
而不是三个单独的值 - 由于您根本没有查看背面,因此不需要
backface-visibility
。同样,visible
是默认值,因此您不必在大多数情况下声明它 - 避免
!important
,因为它们以后很难更改。总是选择使用选择器专用性而不是它们 - 总是将不固定的属性放在带前缀的属性之后,因此
-webkit-animation
应该在animation
之前,因为您希望在浏览器之间尽可能标准化 - 试着让你的代码看起来整洁,这确实有助于以后的工作,也有助于其他人与你一起工作或在你之后工作
现在针对您的实际问题:
perspective
函数仅在Webkit浏览器中受支持。透视函数是transform
内部的函数,类似于:-webkit-transform: perspective(n)
因此,您应该通过在父级上使用透视属性来应用透视。在这种情况下,这意味着主体元素,但更具体的父元素通常会更好。
这是你的代码的一个清理版本,它可以工作
正如KingKing在下面的评论中指出的那样,您也可以通过在父级上应用perspective(0) rotate3d(0,1,0,0)
来解决这个问题。这是一个演示,但更可取的是使用更标准的perspective
属性。
对于稍后观察的其他人来说,你的问题可能并不完全相同。大多数CSS渲染问题都是由硬件加速不足引起的,您可以使用transform: translateZ(1px)
(带前缀(强制加速,也可以在将来使用will-change
属性
相关文章:
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 单击F5时如何停止页面加载
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- Jquery冲突单击
- JQuery图像悬停并单击冲突
- 单击<视频>与Firefox冲突'他的原生行为
- 单击“jQuery”中的函数冲突
- 鼠标左键单击与 JavaScript 中的右键单击例程冲突
- 在 $('html').click() 之外单击时关闭图像;与打开的图像冲突
- 与JS冲突 - 目标首先扩展器而不是单击的扩展器
- 链接单击上的Javascript和Jquery无冲突功能
- 由于滚动冲突,JQuery在单击或模糊、停止或终止功能时进行查询
- 如何解决表行内冲突的单击事件
- 将事务与setTimeout冲突,然后单击
- CSS3动画与单击冲突
- 在vejs中单击鼠标事件冲突
- jQuery美元(文档).单击冲突
- 同一元素冲突上的两个单击处理程序
- jQuery.focusout/.单击冲突