在 class 中保存完成的 css 个动画
Save completed css animation in class
您好,我有一个 css 悬停动画,我希望能够将动画的完成状态保存在 css class 并在点击
时将其添加到 link
.link {
cursor: pointer;
position: relative;
white-space: nowrap;
}
.link::before,
.link::after {
position: absolute;
width: 100%;
height: 1px;
background: currentColor;
top: 100%;
left: 0;
pointer-events: none;
}
.link::before {
content: '';
}
.link--elara {
font-family: aktiv-grotesk-extended, sans-serif;
font-size: 1.375rem;
}
.link--elara::before {
transform-origin: 50% 100%;
transition: clip-path 0.3s, transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
clip-path: polygon(0% 0%, 0% 100%, 0 100%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara:hover::before {
transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara span {
display: inline-block;
transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
}
.link--elara:hover span {
transform: translate3d(0, -2px, 0);
}
我尝试了其他解决方案,例如 animation-fill-mode: forwards;
和其他解决方案 here,但我没有任何运气..
非常感谢任何帮助。谢谢!
下面的代码可能会按照您想要的方式工作,但它不是“将完成的动画保存在 class”。
相反,它会在单击时向按钮添加 class clicked
。此 class 具有完成的翻译,该翻译也会在悬停时发生并在光标离开元素时接管。
$(document).ready(function(){
$(".link--elara").click(function(e){
$(".link--elara").addClass("clicked");
});
});
.link {
cursor: pointer;
position: relative;
white-space: nowrap;
}
.link::before,
.link::after {
position: absolute;
width: 100%;
height: 1px;
background: currentColor;
top: 100%;
left: 0;
pointer-events: none;
}
.link::before {
content: '';
}
.link--elara {
font-family: aktiv-grotesk-extended, sans-serif;
font-size: 1.375rem;
}
.link--elara::before {
transform-origin: 50% 100%;
transition: clip-path 0.3s, transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
clip-path: polygon(0% 0%, 0% 100%, 0 100%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara:hover::before,
.clicked::before {
transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara span {
display: inline-block;
transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
}
.link--elara:hover span,
.clicked span {
transform: translate3d(0, -2px, 0);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="link">
<div class="link--elara">
<span>Click me!</span>
</div>
</div>
您好,我有一个 css 悬停动画,我希望能够将动画的完成状态保存在 css class 并在点击
时将其添加到 link
.link {
cursor: pointer;
position: relative;
white-space: nowrap;
}
.link::before,
.link::after {
position: absolute;
width: 100%;
height: 1px;
background: currentColor;
top: 100%;
left: 0;
pointer-events: none;
}
.link::before {
content: '';
}
.link--elara {
font-family: aktiv-grotesk-extended, sans-serif;
font-size: 1.375rem;
}
.link--elara::before {
transform-origin: 50% 100%;
transition: clip-path 0.3s, transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
clip-path: polygon(0% 0%, 0% 100%, 0 100%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara:hover::before {
transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara span {
display: inline-block;
transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
}
.link--elara:hover span {
transform: translate3d(0, -2px, 0);
}
我尝试了其他解决方案,例如 animation-fill-mode: forwards;
和其他解决方案 here,但我没有任何运气..
非常感谢任何帮助。谢谢!
下面的代码可能会按照您想要的方式工作,但它不是“将完成的动画保存在 class”。
相反,它会在单击时向按钮添加 class clicked
。此 class 具有完成的翻译,该翻译也会在悬停时发生并在光标离开元素时接管。
$(document).ready(function(){
$(".link--elara").click(function(e){
$(".link--elara").addClass("clicked");
});
});
.link {
cursor: pointer;
position: relative;
white-space: nowrap;
}
.link::before,
.link::after {
position: absolute;
width: 100%;
height: 1px;
background: currentColor;
top: 100%;
left: 0;
pointer-events: none;
}
.link::before {
content: '';
}
.link--elara {
font-family: aktiv-grotesk-extended, sans-serif;
font-size: 1.375rem;
}
.link--elara::before {
transform-origin: 50% 100%;
transition: clip-path 0.3s, transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
clip-path: polygon(0% 0%, 0% 100%, 0 100%, 0 0, 100% 0, 100% 100%, 0 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara:hover::before,
.clicked::before {
transform: translate3d(0, 2px, 0) scale3d(1.08, 3, 1);
clip-path: polygon(0% 0%, 0% 100%, 50% 100%, 50% 0, 50% 0, 50% 100%, 50% 100%, 0 100%, 100% 100%, 100% 0%);
}
.link--elara span {
display: inline-block;
transition: transform 0.3s cubic-bezier(0.2, 1, 0.8, 1);
}
.link--elara:hover span,
.clicked span {
transform: translate3d(0, -2px, 0);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="link">
<div class="link--elara">
<span>Click me!</span>
</div>
</div>