我尝试了从这个网站和其他网站找到的几乎所有解决方案,但都没有成功。我正在做的是使用CSS3动画旋转一个按钮。我这样做是通过链接按钮(使用"a"元素),然后使用伪元素启用动画:target(在这种情况下几乎等于onclick事件)。
我的问题是,当我第一次点击按钮时,一个哈希标签(在我的例子中是#btnq1)被添加到URL中。
现在,实际的问题是,当我重新加载整个页面时,或者如果我想再次单击该按钮并重新运行动画,我无法删除该哈希标记。我尝试了一些像这样或这样的堆栈溢出问题的解决方案,但没有得到任何好的结果。
请参阅以下我的代码:
可以忽略名为q1的动画的初始阶段。HTML代码:
<header>
<div id="title">
Just a title
</div>
</header>
<main>
Not important text
<div id="q1">
<div class="q1once">
<a href="#btnq1"><button type="button" name="" value="" id="btnq1">Click to rotate</button></a>
</div>
</div>
</main>
CSS代码:
#q1{
height:100%;
}
.q1once{
width:20%;
height:15%;
position:absolute;
left:-50%;
animation-name:q1;
animation-delay:3s;
animation-iteration-count:1;
animation-duration:1.5s;
animation-fill-mode:forwards;
}
#btnq1:target{
animation-name:q1leave;
animation-iteration-count:1;
animation-duration:4s;
}
@keyframes q1{
50%{
transform:translate(440%) scaleX(3);
}
100%{
transform:translate(450%) scale(1.5,2);
}
}
@keyframes q1leave{
0%{transform:rotate(0deg);
opacity:1;
}
100%{
opacity:0;
transform:rotate(360deg);
}
}
你也可以查看我更新的jsfiddle。
在页面加载时添加window.location.hash=''
是一个很好的部分解决方案,因为它在我重新加载页面时会删除标签。然而,在我第一次点击按钮后,它并没有删除标签。我希望这种情况发生,以便能够多次旋转按钮。
试试这个
$('#btnq1').click(function(event){
event.preventDefault();
// your action
});
哈希标签将不再添加
添加以下内容解决了我的问题:
$(window).on('hashchange', function(e){
history.replaceState ("", document.title, e.originalEvent.oldURL);
});
从另一个问题中找到。
要清除页面加载时的哈希,可以添加:
<script>
window.onload = function() { window.location.hash = ''; };
</script>
现在,如果你还想在点击按钮时清除它,我们可以在按钮上添加一个onclick事件:
<a href="#btnq1" onclick="window.location.hash = ''">...