【发布时间】:2013-03-06 22:50:44
【问题描述】:
这是一个与CSS3 Rotate on animated element causing click event not to invoke非常相似的问题
虽然我的问题有点不同,但不能评论它以添加支持信息。
检查我的沙盒:http://jsfiddle.net/5bsG3/2/
在鼠标悬停时,我在围绕 Y 轴旋转的链接中有一个跨度。并不总是检测到单击事件(用于 jQuery 或仅用于链接导航)。尝试单击链接的填充区域(就在文本之外,但在链接上)。几乎就好像命中检测存在问题,因为跨度在旋转,因此在鼠标没有点击跨度的角度。即使鼠标仍然点击 LINK 的填充区域。 70-110 度左右的角度似乎是个问题。
上述帖子中提出的解决方案实际上并未解决此问题。另外,我的问题可能有点不同,因为我的旋转是作为 CSS 转换而不是 JS 间隔触发器处理的。
有什么想法吗?有没有人见过这个?我知道这是一种低俗的链接方式,但对于目标网站来说,这是可以接受的数量。
请随意简化 jsfiddle,我从简单开始并添加了一些调试信息以帮助识别问题。
html:
<ul>
<li><a href="" class="flip-link"><span>Click this link</span></a></li>
<li id="LinkCounter">LinkClicked</li>
<li> </li>
<li id="SpanCounter">SpanClicked</li>
<ul>
css:
ul li
{
display: inline;
float: left ;
}
.flip-link
{
float:left ;
}
span
{
float:left ;
}
.flip-link {
display: block;
overflow: hidden;
height: 20px;
padding: 5px 50px 7px 50px ;
margin-right: 10px ;
background: #AAA;
-webkit-perspective: 50px;
-moz-perspective: 50px;
-ms-perspective: 50px;
perspective: 50px;
-webkit-perspective-origin: 50% 50%;
-moz-perspective-origin: 50% 50%;
-ms-perspective-origin: 50% 50%;
perspective-origin: 50% 50%;
}
.flip-link span {
display: block;
position: relative;
background: #EEE;
padding: 0px 10px ;
-webkit-transition: all 1000ms ease;
-moz-transition: all 1000ms ease;
-ms-transition: all 1000ms ease;
transition: all 1000ms ease;
-webkit-transform-origin: 50% 0%;
-moz-transform-origin: 50% 0%;
-ms-transform-origin: 50% 0%;
transform-origin: 50% 0%;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.flip-link:hover span
{
-webkit-transform: translate3d( 0px, 0px, 0px ) rotateY( 360deg );
-moz-transform: translate3d( 0px, 0px, 0px ) rotateY( 360deg );
-ms-transform: translate3d( 0px, 0px, 0px ) rotateY( 360deg );
transform: translate3d( 0px, 0px, 0px ) rotateY( 360deg );
color: #55FF55 ;
}
JS:
var linkClickCount = 0 ;
var spanClickCount = 0 ;
$(document).ready(function () {
$('.flip-link').click(function () {
linkClickCount++ ;
$("#LinkCounter").text(linkClickCount);
return (false);
});
$('.flip-link span').click(function () {
spanClickCount++ ;
$("#SpanCounter").text(spanClickCount);
});
});
【问题讨论】:
-
我忘了提到如果跨度没有转换,鼠标点击可以正常工作。如果我设置了静态角度,您可以点击链接的填充区域(而不是文本),它仍然会检测到点击。但是,如果文本在旋转,大约 70-110 度,它始终不会捕捉到点击。
-
商品在轮播时是否需要注册点击?这很关键吗?
-
是的,因为它是一个链接,我需要用户能够在不等待旋转完成的情况下单击该链接。如果他们在旋转过程中单击并且单击不起作用,那么自然的假设是该链接根本不可单击。但好问题,请在此处查看实时(但不是非常公开)项目:www.trickspoke.com 对于这个实时站点,转换非常快,最大限度地减少了问题 - 即使它仍然存在。
标签: html css onclick css-transitions css-transforms