【发布时间】:2019-09-12 20:55:01
【问题描述】:
我想要动画 3 .svg 图像:
<div class="sequence">
<img src="assets/img/1.svg"/>
<img src="assets/img/2.svg"/>
<img src="assets/img/3.svg"/>
</div>
和css:
.sequence {
position: relative;
}
.sequence img {
position: absolute;
top: 0;
opacity: 0;
animation: cycle 0.3s steps(1) infinite;
}
@keyframes cycle {
0% { opacity: 1; }
33% { opacity: 0; }
}
.sequence img:nth-child(2) {
animation-delay: 0.1s;
}
.sequence img:nth-child(3) {
animation-delay: 0.2s;
}
但是这种方式在某些时候动画开始滑动和闪烁,在<a class="sequence" id="anm"> 中包含<img src="assets/img/1.svg" alt="" alt=""/> 不允许很好地将图像与元素中心对齐。
所以,从背景的另一种方式:
img{
width: 60px;
height: 60px;
border: 0px;
border-style: none; /*border-style: hidden;*/
outline: none;
animation: rotateImages 0.3s infinite;
}
@keyframes rotateImages {
0% { background: url("assets/img/1.svg"); }
32% { background: url("assets/img/1.svg"); }
33% { background: url("assets/img/2.svg"); }
65% { background: url("assets/img/2.svg"); }
66% { background: url("assets/img/3.svg"); }
100% { background: url("assets/img/3.svg"); }
}
<img></img> 没有这个缺陷,但我不知道如何删除创建元素周围的细黑线,粉红色 squire 周围的边框,如下所示,它与 .svg,.gif 一起出现, .png。我试过添加border-width: 0px;,以防万一border-color: white;,因为我的背景是白色的,但它看起来像是别的东西。我不确定如何删除它:
例子:
https://jsfiddle.net/3gxpbauo/
.png-s,是.svg的同一张图片:
正如我所指出的,我想将它与<label><h1><p id="nameblock">Text</p></h1></label> 对齐在一个文本中心行中。使用<div id="container"></div>,显示在Prajyot Tote 答案中,或者如上图所示使用<a class="sequence" id="anm">,(也成功显示没有轮廓的标签),在这两种情况下都将元素对齐在不同的行上,或者在底部使用.inline{display:inline-block;}的文本。这是<img>和<div id="container"></div>的区别:
解决方案:
因此,我在Prajyot Tote 的帮助下为我的特定任务找到的解决方案基于答案,使用#container 而不使用#img 和border: 0px; 用于.inline:
#container {
width: 72px;
height: 73px;
border: 0px;
animation: rotateImages 0.3s infinite;
}
.inline{display:inline-block;vertical-align: middle; border: 0px;}
@keyframes rotateImages {
0% { background: url("https://i.stack.imgur.com/d0tnz.png"); }
32% { background: url("https://i.stack.imgur.com/d0tnz.png"); }
33% { background: url("https://i.stack.imgur.com/elROb.png"); }
65% { background: url("https://i.stack.imgur.com/elROb.png"); }
66% { background: url("https://i.stack.imgur.com/O0fGg.png"); }
100% { background: url("https://i.stack.imgur.com/O0fGg.png"); }
}
<div class="inline">
<label><h1><p id="nameblock">Some text</p></h1></label>
</div>
<div id="container" class="inline"></div>
【问题讨论】:
-
@Robert Longson 你好,它只是 3 个位置略有不同的粉红色正方形矢量图像,用 0.3s 进行摆动运动,只是快速循环图像动画(它不是 svg 动画,在我的使用 case .svg 是因为此类元素的矢量质量)。我的背景是白色的,我的 .css 不应包含来自其他地方的任何黑线
-
@Robert Longson 似乎不是
.svg问题,因为我与.gif 和.png 有相同的行,我用.png 编辑了问题,这与.svg 图像相同并且在 html 中的周围也有这条不需要的线,请检查
-
你有活生生的例子吗?小提琴或codepen?它可能是特定于浏览器的。
-
没有看到你的代码,很难说,但看看这个。使用 src 和指定border:none 有一些细微差别,这可能会有所帮助:stackoverflow.com/questions/2153425/…
-
@Justin C 你好,我已经包含了所有代码,这是显示相同大纲结果的最小示例jsfiddle.net/3gxpbauo
标签: html css animation background