javascript - 带有 CSS 动画的 SVG 预加载器,在每个页面加载时随机化

标签 javascript html css svg

所以我制作了一个 svg Logo 预加载器,还为其制作了一些 css 动画。但我的主要问题是如何让预加载器在刷新/使用 JavaScript 加载新页面时加载不同的动画。例如,在加载 Logo 的一个页面上应使用弹跳动画,在页面刷新时或在打开预加载器的另一个选项卡上应使用我制作的旋转动画等。

var strings = [
 	'animation1.',
    'animation2.',
    'animation3.'
];

var rand = strings[Math.floor(Math.random() * strings.length)];
document.getElementById('loading-animation').innerHTML = rand;
.loading {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    text-align: center;
    background: #ddd;
    padding-top: 200px;
}
.svg {
    display: block;
    width: 80px;
    height: 80px;
    background: #aaa;
    margin: 10px auto;
}

.animation1 {
  just an example
}

.animation2 {
  just an example
}

.animation2 {
  just an example
}
<div id="container" class='loading' >
     <div id='loading-animation' class='loading-animation'>Processing</div>
     <svg>just an example svg in inserted in the html, no external src link to it</svg>
</div>

我非常确定 .innerHTML 不应该在那里,因为 javascript 文件将在 head 部分中进行外部链接。我知道我没有链接所有使用的代码,因为这里粘贴的代码太多,所以我做了一个小例子,希望我能让自己理解。谢谢。

最佳答案

您可以使用 JavaScript 为要设置动画的元素随机分配 CSS 类。这是一个例子。

var animationClasses = [
  'animation1',
  'animation2',
  'animation3'
];

var choosenAnimation = animationClasses[~~(Math.random() * animationClasses.length)];

document.getElementById('elementToAnimate').classList.add(choosenAnimation);
@keyframes grow {
  0% {
    transform: scale(0);
  }
  
  100% {
    transform: scale(1);
  }
}

@keyframes fade {
  0% {
    opacity: 0;
  }
  
  100% {
    opacity: 1;
  }
}

@keyframes fly-down {
  0% {
    transform: translateY(-100%);
  }
  
  100% {
    transform: translateY(0%);
  }
}

.animation1 {
  width: fit-content;
  animation: grow 1s;
}

.animation2 {
  animation: fade 1s;
}

.animation3 {
  animation: fly-down 1s;
}
<div id="elementToAnimate">This will get a random animation</div>

数组 animationClasses 中的随机类被分配给 elementToAnimate。每个类都包含不同动画的 CSS,每次都允许随机动画。

关于javascript - 带有 CSS 动画的 SVG 预加载器,在每个页面加载时随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61034619/

相关文章:

Javascript - 多个类。如何区分哪一个被点击了?

html - 当我折叠时页面 div 消失

javascript - Distinct 和 Inner 与 sequelize 结合

javascript - 为什么ajax一个接一个发送请求

Javascript 重新定位数组项

html - 如何使这个导航菜单居中

css - 如何使文本框与背景无法区分?

css - div 在浏览器调整大小或分辨率更改时与其他部分重叠

html - 用特定格式的数据库条目替换一行 HTML

javascript - 使用其他页面中的 'href' 到达(即取消隐藏)特定 div