- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我需要像这样创建按钮交换动画 https://d.pr/v/P8aLvl
这是通过使用一些 js 和 css 属性 opacity
、scale
、box-shadow
来完成的。
我尝试创建它,但我的动画看起来并不那么流畅。见https://d.pr/v/QLsLdo
看看 Button 1
和 Button 2
是如何闪烁的。我不明白我在这里错过了什么。
使用的代码如下:
谢谢!
jQuery(function() {
var container = $(this);
// console.log(container);
var checkboxes = $('#button-switch');
var checkedBoxes = $('#button-switch:checked');
checkboxes.on('click', function(e) {
if ( $('#button-switch:checked').length > 0 ) {
$('.activity-buttons').addClass('selected-buttons first-animation').removeClass('second-animation');
} else if ( $('#button-switch:checked').length === 0 ) {
$('.activity-buttons').removeClass('selected-buttons first-animation').addClass('second-animation');
}
});
});
.activity-buttons .btn-list {
padding: 40px 20px;
margin: 0;
list-style: none;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.activity-buttons .btn-list li {
position: relative;
width: 200px;
height: 40px;
}
.activity-buttons .btn-list .btn {
position: absolute;
}
.activity-buttons .btn-list .btn.activity-selected {
opacity: 0;
pointer-events: none;
}
.activity-buttons.selected-buttons .btn-list .btn.activity-all {
opacity: 0;
pointer-events: none;
}
.activity-buttons.selected-buttons .btn-list .btn.activity-selected {
opacity: 1;
pointer-events: auto;
}
.activity-buttons.selected-buttons.first-animation .btn-list li .btn.activity-all {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1);
transition: opacity .2s cubic-bezier(.645, .045, .355, 1);
-webkit-animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1);
animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1);
}
.activity-buttons.selected-buttons.first-animation .btn-list li .btn.activity-selected {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .3s;
transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .3s;
-webkit-animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .3s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .3s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .3s;
animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .3s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .3s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .3s;
}
.activity-buttons.selected-buttons.first-animation .btn-list li+li .btn.activity-all {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .1s;
transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .1s;
-webkit-animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1) .1s;
animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1) .1s;
}
.activity-buttons.selected-buttons.first-animation .btn-list li+li .btn.activity-selected {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .4s;
transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .4s;
-webkit-animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .4s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .4s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .4s;
animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .4s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .4s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .4s;
}
.activity-buttons.second-animation .btn-list li .btn.activity-all {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .3s;
transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .3s;
-webkit-animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .3s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .3s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, hideButtonShadow .19s cubic-bezier(.215, .61, .355, 1) .75s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .3s, buttonScaleLow .31s cubic-bezier(.55, .055, .675, .19) .65s;
animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .3s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .3s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, hideButtonShadow .19s cubic-bezier(.215, .61, .355, 1) .75s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .3s, buttonScaleLow .31s cubic-bezier(.55, .055, .675, .19) .65s;
}
.activity-buttons.second-animation .btn-list li .btn.activity-selected {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1);
transition: opacity .2s cubic-bezier(.645, .045, .355, 1);
-webkit-animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1);
animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1);
}
.activity-buttons.second-animation .btn-list li+li .btn.activity-all {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .4s;
transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .4s;
-webkit-animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .4s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .4s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, hideButtonShadow .19s cubic-bezier(.215, .61, .355, 1) .85s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .4s, buttonScaleLow .31s cubic-bezier(.55, .055, .675, .19) .75s;
animation: showButtonShadow .3s cubic-bezier(.19, 1, .22, 1) .4s, changeBg .29s cubic-bezier(.645, .045, .355, 1) .4s, hideButtonBorder .2s cubic-bezier(.215, .61, .355, 1) .3s, hideButtonShadow .19s cubic-bezier(.215, .61, .355, 1) .85s, buttonScaleHigh .31s cubic-bezier(.645, .045, .355, 1) .4s, buttonScaleLow .31s cubic-bezier(.55, .055, .675, .19) .75s;
}
.activity-buttons.second-animation .btn-list li+li .btn.activity-selected {
-webkit-transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .1s;
transition: opacity .2s cubic-bezier(.645, .045, .355, 1) .1s;
-webkit-animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1) .1s;
animation: hideButtonScale .2s cubic-bezier(.645, .045, .355, 1) .1s;
}
@-webkit-keyframes hideButtonScale {
from {
-webkit-transform: scale(1);
transform: scale(1);
}
to {
-webkit-transform: scale(.5);
transform: scale(.5);
}
}
@keyframes hideButtonScale {
from {
-webkit-transform: scale(1);
transform: scale(1);
}
to {
-webkit-transform: scale(.5);
transform: scale(.5);
}
}
@-webkit-keyframes showButtonScale {
from {
-webkit-transform: scale(.5);
transform: scale(.5);
}
to {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes showButtonScale {
from {
-webkit-transform: scale(.5);
transform: scale(.5);
}
to {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@-webkit-keyframes buttonScaleHigh {
from {
-webkit-transform: scale(1);
transform: scale(1);
}
to {
-webkit-transform: scale(1.05);
transform: scale(1.05);
}
}
@keyframes buttonScaleHigh {
from {
-webkit-transform: scale(1);
transform: scale(1);
}
to {
-webkit-transform: scale(1.05);
transform: scale(1.05);
}
}
@-webkit-keyframes buttonScaleLow {
from {
-webkit-transform: scale(1.05);
transform: scale(1.05);
}
to {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes buttonScaleLow {
from {
-webkit-transform: scale(1.05);
transform: scale(1.05);
}
to {
-webkit-transform: scale(1);
transform: scale(1);
}
}
@keyframes showButtonScale {
from {
background: transparent;
}
to {
background: #fff;
}
}
@-webkit-keyframes showButtonShadow {
from {
box-shadow: none;
}
to {
box-shadow: 0 8px 16px rgba(208, 201, 214, .5);
}
}
@keyframes showButtonShadow {
from {
box-shadow: none;
}
to {
box-shadow: 0 8px 16px rgba(208, 201, 214, .5);
}
}
@-webkit-keyframes hideButtonShadow {
from {
box-shadow: 0 8px 16px rgba(208, 201, 214, .5);
}
to {
box-shadow: none;
}
}
@keyframes hideButtonShadow {
from {
box-shadow: 0 8px 16px rgba(208, 201, 214, .5);
}
to {
box-shadow: none;
}
}
@-webkit-keyframes hideButtonBorder {
from {
border-color: #eaeaea;
}
to {
border-color: transparent;
}
}
@keyframes hideButtonBorder {
from {
border-color: #eaeaea;
}
to {
border-color: transparent;
}
}
@-webkit-keyframes showButtonBorder {
from {
border-color: transparent;
}
to {
border-color: #eaeaea;
}
}
@keyframes showButtonBorder {
from {
border-color: transparent;
}
to {
border-color: #eaeaea;
}
}
@-webkit-keyframes opacityHigh {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes opacityHigh {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="activity-buttons">
<ul class="btn-list justify-content-center">
<li>
<button type="button" class="btn btn-outline-secondary left-align-icon activity-all" data-toggle="modal" data-target="#deleteModal">Button 1</button>
<button type="button" class="btn btn-outline-secondary left-align-icon activity-selected" data-toggle="modal" data-target="#deleteModal"><i class="icon-delete_outline"></i> Delete selected</button>
</li>
<li>
<button class="btn btn-outline-secondary left-align-icon activity-all">Button 2</button>
<button class="btn btn-outline-secondary left-align-icon activity-selected"><i class="icon-vertical_align_top"></i> Export selected</button>
</li>
</ul>
</div>
<input type="checkbox" id="button-switch" class="ml-5">
最佳答案
它可能会抖动,因为它正在返回到原来的位置。试试 animation-fill-mode: forwards;
这将使元素在动画完成时保持相同状态,而不是恢复到原始状态。
关于javascript - 使用@keyframes 的复杂 css 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57100852/
这是在 Chrome 中不是由 orbit 动画的圆圈。 http://jsfiddle.net/ztkav838/ //CSS @-webkit-keyframes orbit { from
我一直在查看示例,但我在这里遗漏了一些东西。我无法启动这个简单的 css 动画,改变某些文本的颜色。当我运行下面的示例时,文本保持黑色。 我有一个名为“changeColor”的动画,应用于 h1 元
我一直在浏览示例,但我会在这里遗漏一些东西。我无法触发这个简单的 css 动画,改变一些文本的颜色。当我运行下面的示例时,文本保持黑色。 我有一个名为“changeColor”的动画,应用于 h1 元
我想在第二次点击按钮时重复@keyframne 动画,但它只生效一次。 $(document).ready(function(){ $('#btn_c
我在@keyframes 动画中缩放文本,当文本增加时,它变得模糊,我该如何防止? JS Bin Example 谢谢! 最佳答案 解决问题的最简单方法是将最大状态比例设置为 1,将较小状态比例设置为
我正在尝试创建一个关键帧,它会在查看几秒钟后更改 div 容器的内容,但它不起作用。 这是我的代码: @-webkit-keyframes k_home_projectSlider { 0%
当我创建 @keyframes 动画并将其分配给悬停时的图像时,它会随机闪烁。正如您在 GIF 中看到的那样,它只能随机地正常工作几次。 我已经尝试了以下所有方法并为每个供应商添加了前缀: 背面可见性
我有一个 css3 @keyframe 动画,我在控制时遇到了一些麻烦。 这是一个分为两部分的动画,有一个平放的高矩形,在第一部分中它假设旋转 90 度并将 z 轴向上平移向您同时也向左平移,然后完成
是否可以减少代码以生成一组可以处理各种浏览器前缀的混合宏? 尝试减少代码长度以使用更多mixin 所以代替 @-moz-keyframes orbit { 0% { opaci
我正在尝试使用 @keyframes 制作动画。但是,该示例不起作用。 .main{ width:100%; height:500px; border: 1px solid black; } @
所以我正在制作一个简单的元素,它会显示一个计时器并仅使用 HTML 和 CSS 计数到 99。 但是有人能告诉我为什么我需要延迟我的 100 秒动画以使其与 10 秒动画同步吗? .second::b
我有四个动画 div 元素,它们在 section 元素内旋转。 div 元素需要放在文本下方(假设它有背景),这样就不会出现冲突线,所以我尝试做的是添加 background-color: #aea
不确定我在这里面对的是什么,但我正在尝试应用 CSS 动画。 经过一些研究,我认为添加 webkit 前缀将有助于解决问题,但看起来我仍然面临读取无效属性值的问题。 这是我当前的代码: .progre
我试图让动画在悬停后缓和到元素的原始值。动画本身工作正常,但是当我将鼠标悬停在该元素上时,它会立即恢复到原始状态,而我希望有 0.2 秒的缓和。有什么帮助吗? 这是我的代码: img.footer {
.car1 仅在使用 @keyframes 的 from 和 to 时移动,但在使用时不移动%。谁能解释为什么会这样? .car1 { animation: car1 2s 2 forwards;
似乎无法让我的图像 slider 工作,我打算将其用作我的页面的标题,但图像不会滑动。我已经尝试过 chrome 的前缀,但它们没有任何区别。 这是C
我正在尝试做的事情:我在黑盒子里有链接。我试图在悬停时使框的背景从黑色变为蓝色。我不知道该怎么做。这是我的 CSS(我将它设置为 5s 但我真的希望它在悬停时生效) @keyframes navBox
我试图用 CSS3 使我的 div 上下移动,但它没有 @-webkit-keyframes mover { 0%, 100% { top: 0%;} 50% { top: 5%;
我正在尝试编写此文本动画效果 ( please see video ),但我离解决方案还很远!! 你能帮帮我吗?也许使用 js 更好? h1.fadeinone { animation: fadein
这个问题在这里已经有了答案: Using percentage values with background-position on a linear-gradient (2 个答案) 关闭 3
我是一名优秀的程序员,十分优秀!