我正在创建一个简单的css文本动画,并且在最后被延迟了,天知道为什么,我非常累,只需要使这个工作.

基本上,我有一个SVG,里面有一个<text>标签,里面有"Fussi's",我只是想在加载页面上稍微动一下这个词.我玩了一些stroke-dashoffset和stroke-dasharray,动画本身工作正常,但当达到<text>%时,需要延迟才能回到0%

同样,问题本身是第一个循环何时结束(正向动画),但开始向后动画需要一段时间.

下面是我的代码:

body {
    box-sizing: border-box;
    margin: 0;
    background-color: white;

}

#loading {
    display: flex;
    height: 100vh;
    align-items: center;
    justify-content: center;
    font-family: 'Leckerli One', cursive;
    font-size: x-small;
}

svg text {
    fill: rgb(188, 188, 188);
    stroke: black;
    stroke-width: 0.5;
    stroke-dasharray: 125;
    stroke-dashoffset: 0;
    letter-spacing: 3px;
    animation: 2s infinite alternate ease-in-out animate-name;
}

@keyframes animate-name {
    100% {
        stroke-dashoffset: 125;
    }
}
<!DOCTYPE html>
<html>

<head>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Julius+Sans+One&family=Leckerli+One&display=swap" rel="stylesheet">
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Animated Background</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div id="loading">
        <svg viewBox = "0 0 400 160">
            <text x="50%" y="50%" dy=".32em" text-anchor="middle" class="text-body">
                Fussi's
            </text>
        </svg>
    </div>
</body>

</html>

推荐答案

"延迟"实际上发生在动画的第start处,而不是结尾.实际情况是,初始的stroke-dashoffset0太小了--笔划实际上是在开始时环绕的.因此,在这段时间里,它实际上是动画的,但没有视觉上的变化,因为它本质上是在消除这种冗余.这样做的效果是,当动画交替播放时,它将花费两倍的时间在那个"延迟"上.

Solution

您只需要通过反复try 找到正确的起始stroke-dashoffset,我将初始值更改为91,这似乎是有效的(为什么?老实说,我不确定.我只知道问题是什么,但不知道数学问题).

body {
    box-sizing: border-box;
    margin: 0;
    background-color: white;

}

#loading {
    display: flex;
    height: 100vh;
    align-items: center;
    justify-content: center;
    font-family: 'Leckerli One', cursive;
    font-size: x-small;
}

svg text {
    fill: rgb(188, 188, 188);
    stroke: black;
    stroke-width: 0.5;
    stroke-dasharray: 125;
    stroke-dashoffset: 91;
    letter-spacing: 3px;
    animation: 2s infinite alternate ease-in-out animate-name;
}



@keyframes animate-name {
    100% {
        stroke-dashoffset: 125;
    }
}
<!DOCTYPE html>
<html>

<head>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Julius+Sans+One&family=Leckerli+One&display=swap" rel="stylesheet">
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Animated Background</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div id="loading">
        <svg viewBox = "0 0 400 160">
            <text x="50%" y="50%" dy=".32em" text-anchor="middle" class="text-body">
                Fussi's
            </text>
        </svg>
    </div>
</body>

</html>

Css相关问答推荐

如何使用css创建带有曲线的自定义按钮

将照片向下对齐至div并保持响应性

当滚动到页脚时,是否可以隐藏固定元素?

隐藏div后缺少div的InnerHTML

寻找组件中最大的元素来设置其他组件的高度

在最小和最大视口之间时具有固定值的 CSS 钳位

如何使用 tailwind css 修复滚动条始终位于底部?

如何使按钮:之后像按钮:之前一样可见

CSS 布局:使一列依赖于另一列

如何将数据从样式化组件发送到函数?

弹簧靴.一个文件捕获 CSS 其他没有

CSS - 等高列?

Highcharts 图表选项 backgroundColor:'transparent' 在 IE 8 上显示黑色

悬停时如何在图像上显示文字?

CSS:在图像周围创建白光

在 Vuejs 中拥有全局 CSS 的最佳方式

如何在浏览器的右下角放置一个div?

Bootstrap 4:导航内的多级下拉菜单

当子元素水平溢出时,为什么忽略父元素的右填充?

使用 :focus 设置外部 div 的样式?