通过动画线的问题

Pixier

我想通过动画创建一条简单的线,到目前为止,我在这里:

.strikethrough {
    display: inline-block;
    position: relative;
    line-height: 1.5em;
}

.strikethrough:after {
    content: '';
    position: absolute;
    display: block;
    width: 100%;
    height: 1px;
    box-shadow: 0 1px rgba(252, 3, 3,0.7);
    margin-top: -0.7em;
    background: rgba(252, 3, 3,0.8);
    transform-origin: center left;
    animation: strikethrough 1s 0.5s cubic-bezier(.55, 0, .1, 1) 1;

}

@keyframes strikethrough {
    from {
        transform: scaleX(0);
    }
    to {
        transform: scaleX(1);
    }
}
<span class="strikethrough">Favor packaging over toy</span>

如您所见,除以下两点外,其他所有功能均正常运行:

  1. 现在我们可以先看到线条,然后隐藏并开始动画,我只想看动画线条。

  2. 我想使用javascript来启动动画...但是使用此伪元素(之后)似乎很复杂!

这里的东西

您可以使用animation-fill-mode以下方法修复动画

animation-fill-mode: backwards;

要触发动画,只需添加删除线类。我认为这行不通的地方是当您有多行文字时,因为您::after将无法覆盖该内容。

document.querySelector( '.strikethrough' ).addEventListener( 'click', event => { event.target.classList.toggle( 'strikethrough' ); });
.strikethrough {
    display: inline-block;
    position: relative;
    line-height: 1.5em;
}

.strikethrough:after {
    content: '';
    position: absolute;
    display: block;
    width: 100%;
    height: 1px;
    box-shadow: 0 1px rgba(252, 3, 3,0.7);
    margin-top: -0.7em;
    background: rgba(252, 3, 3,0.8);
    transform-origin: center left;
    animation: strikethrough 1s 0.5s cubic-bezier(.55, 0, .1, 1) 1;
    animation-fill-mode: backwards;
}

@keyframes strikethrough {
    from {
        transform: scaleX(0);
    }
    to {
        transform: scaleX(1);
    }
}
<span class="strikethrough">Favor packaging over toy</span>

就我个人而言,我将采用这种更简单的方法,通过使用背景图像缩放来减少屏幕上实际对象的数量以及代码的数量。如果设置巧妙,您甚至可以对它进行多行处理(通过将背景设置为行高并在其中包含一个中间像素,而使用SVG,您可以确保其大小仅为1像素,而不考虑拉伸等)。

document.querySelector( 'p' ).addEventListener( 'click', event => {
  
  event.target.classList.toggle( 'strikethrough' );
  
})
@keyframes stretch {
  to { background-size: 100% var(--line-height); }
}

:root {

  --line-height: 1.2em;
  
}

p {

  line-height: var(--line-height);
  
}

.strikethrough {
  
  line-height: 1.2em;
  background: url('data:image/svg+xml;charset=utf8,<svg  xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none"><line x1="0" y1="50%" x2="100%" y2="50%" stroke="black" stroke-width="1px" /></svg>') repeat-y 0 0 / 0 var(--line-height);
  animation: stretch 4s;
  animation-fill-mode: forwards;
  
}
<p>Hello World!<br />Another line, does it work?</p>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动画线框线

来自分类Dev

Konva 中的动画线位置

来自分类Dev

单张标记之间的画线问题

来自分类Dev

如何使动画线性通过?不会在开始和结束时放慢速度?

来自分类Dev

动画线性渐变以创建加载条

来自分类Dev

Matplotlib FuncAnimation不动画线图

来自分类Dev

SVG动画线条不稳定

来自分类Dev

Matplotlib FuncAnimation不动画线图

来自分类Dev

matplotlib 动画线图保持为空

来自分类Dev

CSS 动画线在悬停时增长

来自分类Dev

添加图像和动画线串

来自分类Dev

d3.js动画线绘制的方向与预期相反

来自分类Dev

可以用SpriteKit绘制动画线吗?

来自分类Dev

我可以从右向左移动动画线吗?

来自分类Dev

粘性标头动画线性背景色

来自分类Dev

R使用gganimate和geom_text动画线图

来自分类Dev

动画线性CSS背景无法在Firefox中使用

来自分类Dev

我可以从右向左移动动画线吗?

来自分类Dev

实现动画线命令同时为两条线设置动画

来自分类Dev

如何通过AJAX调用在高图图表上画线?

来自分类Dev

从屏幕中心通过鼠标光标画线到屏幕边缘

来自分类Dev

UIRefreshController结束动画问题

来自分类Dev

UISearchBar动画问题

来自分类Dev

UISearchBar消除动画问题

来自分类Dev

动画速度问题

来自分类Dev

SceneKit动画问题

来自分类Dev

循环jQuery动画问题?

来自分类Dev

JavaScript动画位置问题

来自分类Dev

CSS矩阵动画问题