您好,我正在开发一个小型网站,一旦按下键盘上的某个键,就会依次发生以下三个事件 1)相应修改其css 2) 在新标签页中打开链接 3) 对应回滚到之前的css状态
这是CSS。
div.website a:link, div.website a:visited{
background-color:#ffffff;
display:block;
position:relative;
text-align:center;
vertical-align:middle;
text-decoration:none;
line-height:45px;
height:45px;
font-size:14px;
border-radius:2px;
color:#474a4d;
transition-property:background-color, color, font-size;
transition-duration:0.2s;
transition-timing-function:ease;
}
div.website a:hover{
background-color:#2c3e50;
color:#ffffff;
font-size:24px;
}
这是代码
$(document).bind("keydown", function(event){
event.preventDefault();
var k = event.which || event.keyCode;
for(var i = 32; i < 91; i++){
if (i == k){
var obj = $("a.hotkey" + k);
obj.animate({
fontSize:"24px"
},{
duration:500,
complete:function(){
setTimeout(function(){
window.open(obj.attr("href"));
},500);
}
});
obj.animate({
fontSize:"14px"
});
}
}
return false;
});
这是html代码
<div class="col-xs-4 col-lg-4 website">
<a href="http://www.facebook.com" id="11" class="website hotkey66 hotkey32" target="_blank">
<span>facebook</span>
</a>
</div>
但是,当代码执行时(当我实际按下键时),似乎1)和3)是同时执行的,而不是顺序执行的,.css没有变化。然后我在Chrome中进行了 Debug模式,它证实了我的猜测。
另外,其实我想要的是悬停效果,后来改成只有font-size的变化。如果有人能告诉我如何模拟悬停效果和回滚,那就太感谢了。非常感谢!
最佳答案
这是一个镜头。不要使用 `jQuery.animate',只需使用您的 CSS 过渡。
在按键时,将“悬停”类添加到元素,然后在触发新页面时将其删除。还将“悬停”规则添加到 css。
$(document).bind("keydown", function(event){
event.preventDefault();
var k = event.which || event.keyCode;
for(var i = 32; i < 91; i++){
if (i == k){
var obj = $("a.hotkey" + k);
obj.addClass('hover')
setTimeout(function(){
window.open(obj.attr("href"));
obj.removeClass('hover')
},500);
}
}
return false;
});
div.website a:link, div.website a:visited{
background-color:#ffffff;
display:block;
position:relative;
text-align:center;
vertical-align:middle;
text-decoration:none;
line-height:45px;
height:45px;
font-size:14px;
border-radius:2px;
color:#474a4d;
transition-property:background-color, color, font-size;
transition-duration:0.2s;
transition-timing-function:ease;
}
div.website a.hover,
div.website a:hover{
background-color:#2c3e50;
color:#ffffff;
font-size:24px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-xs-4 col-lg-4 website">
<a href="http://www.facebook.com" id="11" class="website hotkey66 hotkey32" target="_blank">
<span>facebook</span>
</a>
</div>
您会注意到 facebook 不会从 Stack 启动,但那是因为沙盒环境不允许弹出窗口。我在 Codepen 中尝试了同样的方法它似乎工作得很好。试一试,如果这就是您要找的,请告诉我。
关于javascript - keydown 触发 <a> 的 css 变化,在新标签中打开一个链接,并回滚到 <a> 之前的 css 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699136/