我在制作此动画时遇到了一些麻烦:
我需要的是页面加载时,图标必须比其原始位置稍高一点。
所以:
在页面加载时,图标比其原始位置高5px。
触发动画以将图标重新排列到其原始位置(删除高出5px)。
这是我到目前为止的代码:
var outerBox = $('.eight-box'),
boxHeight = $(outerBox).height(),
boxWidth = $(outerBox).width();
function changeNumbers() {
var pos1 = $('.pos-1'),
pos2 = $('.pos-2'),
pos3 = $('.pos-3'),
pos4 = $('.pos-4'),
pos5 = $('.pos-5'),
pos6 = $('.pos-6'),
pos7 = $('.pos-7'),
pos8 = $('.pos-8'),
pos9 = $('.pos-9'),
pos10 = $('.pos-10'),
pos11 = $('.pos-11'),
pos12 = $('.pos-12'),
pos13 = $('.pos-13'),
pos14 = $('.pos-14'),
pos15 = $('.pos-15');
};
.eight-box {
position: relative;
display: block;
margin: 1em auto;
width: 16em;
height: 24em;
font-family: sans-serif;
font-size: 20px;
}
.fig-8 {
display: block;
position: absolute;
color: #fff;
width: 2em;
height: 2em;
line-height: 2;
text-align: center;
font-weight: bold;
font-smoothing: antialiased;
transition: all .5s linear;
overflow: hidden;
z-index: 5;
}
.fig-8:before {
display: block;
content: '';
background: rgba(0,0,0,.15);
/* box-shadow: 0 0 .25em 0 rgba(0,0,0,.2), inset 0 0 2px rgba(0,0,0,.25);*/
width: .65em;
height: .65em;
position: absolute;
top: 0;
left: 0;
z-index: 10;
}
.fig-8:after {
content: '';
width: 2em;
height: 2em;
background: #fff;
transform: rotate(45deg);
z-index: 20;
position: absolute;
top: -1.4em;
left: -1.4em;
}
.col-1 {
background: #1abc9c;
}
.col-2 {
background: #9b59b6;
}
.col-3 {
background: #27ae60;
}
.col-4 {
background: #2c3e50;
}
.col-5 {
background: #e74c3c;
}
.col-6 {
background: #f39c12;
}
.col-7 {
background: #bdc3c7;
}
.col-8 {
background: #2ecc71;
}
.col-9 {
background: #34495e;
}
.col-10 {
background: #2980b9;
}
.col-11 {
background: #f1c40f;
}
.col-12 {
background: #d35400;
}
.col-13 {
background: #7f8c8d;
}
.col-14 {
background: #3498db;
}
.col-15 {
background: #16a085;
}
.pos-1 {
top: 0;
left: 43.75%;
}
.pos-2 {
top: 6.25%;
left: 68.75%;
}
.pos-3 {
top: 22.92%;
left: 78.125%;
}
.pos-4 {
top: 39.58%;
left: 68.75%;
}
.pos-5 {
top: 45.83%;
left: 43.75%;
}
.pos-6 {
top: 52.08%;
left: 18.75%;
}
.pos-7 {
top: 68.75%;
left: 9.375%;
}
.pos-8 {
top: 85.417%;
left: 18.75%;
}
.pos-9 {
top: 91.67%;
left: 43.75%;
}
.pos-10 {
top: 85.417%;
left: 68.75%;
}
.pos-11 {
top: 68.75%;
left: 78.125%;
}
.pos-12 {
top: 52.08%;
left: 68.75%;
}
.pos-13 {
top: 39.58%;
left: 18.75%;
}
.pos-14 {
top: 22.92%;
left: 9.375%;
}
.pos-15 {
top: 6.25%;
left: 18.75%;
}
.smile {
position: absolute;
width: 2em;
height: 2em;
line-height: 1.8;
transform: rotate(90deg);
text-align: center;
border-radius: 50%;
/* box-shadow: inset 0 0 0 2px #333;*/
background: moccasin;
}
.smile-1 {
top: 22.92%;
left: 43.75%;
}
.smile-2 {
top: 68.75%;
left: 43.75%;
}
.eight-box {
position: relative;
display: block;
margin: 1em auto;
width: 16em;
height: 24em;
font-family: sans-serif;
font-size: 20px;
}
.fig-8 {
display: block;
position: absolute;
color: #fff;
width: 2em;
height: 2em;
line-height: 2;
text-align: center;
font-weight: bold;
font-smoothing: antialiased;
transition: all .5s linear;
overflow: hidden;
z-index: 5;
}
.fig-8:before {
display: block;
content: '';
background: rgba(0,0,0,.15);
/* box-shadow: 0 0 .25em 0 rgba(0,0,0,.2), inset 0 0 2px rgba(0,0,0,.25);*/
width: .65em;
height: .65em;
position: absolute;
top: 0;
left: 0;
z-index: 10;
}
.fig-8:after {
content: '';
width: 2em;
height: 2em;
background: #fff;
transform: rotate(45deg);
z-index: 20;
position: absolute;
top: -1.4em;
left: -1.4em;
}
.col-1 {
background: #1abc9c;
}
.col-2 {
background: #9b59b6;
}
.col-3 {
background: #27ae60;
}
.col-4 {
background: #2c3e50;
}
.col-5 {
background: #e74c3c;
}
.col-6 {
background: #f39c12;
}
.col-7 {
background: #bdc3c7;
}
.col-8 {
background: #2ecc71;
}
.col-9 {
background: #34495e;
}
.col-10 {
background: #2980b9;
}
.col-11 {
background: #f1c40f;
}
.col-12 {
background: #d35400;
}
.col-13 {
background: #7f8c8d;
}
.col-14 {
background: #3498db;
}
.col-15 {
background: #16a085;
}
.pos-1 {
top: 0;
left: 43.75%;
}
.pos-2 {
top: 6.25%;
left: 68.75%;
}
.pos-3 {
top: 22.92%;
left: 78.125%;
}
.pos-4 {
top: 39.58%;
left: 68.75%;
}
.pos-5 {
top: 45.83%;
left: 43.75%;
}
.pos-6 {
top: 52.08%;
left: 18.75%;
}
.pos-7 {
top: 68.75%;
left: 9.375%;
}
.pos-8 {
top: 85.417%;
left: 18.75%;
}
.pos-9 {
top: 91.67%;
left: 43.75%;
}
.pos-10 {
top: 85.417%;
left: 68.75%;
}
.pos-11 {
top: 68.75%;
left: 78.125%;
}
.pos-12 {
top: 52.08%;
left: 68.75%;
}
.pos-13 {
top: 39.58%;
left: 18.75%;
}
.pos-14 {
top: 22.92%;
left: 9.375%;
}
.pos-15 {
top: 6.25%;
left: 18.75%;
}
.smile {
position: absolute;
width: 2em;
height: 2em;
line-height: 1.8;
transform: rotate(90deg);
text-align: center;
border-radius: 50%;
/* box-shadow: inset 0 0 0 2px #333;*/
background: moccasin;
}
.smile-1 {
top: 22.92%;
left: 43.75%;
}
.smile-2 {
top: 68.75%;
left: 43.75%;
}
.fig-8 {
animation: pulse-special 1s 1s infinite alternate backwards;
border-radius: 50%;
}
@-webkit-keyframes pulse-special {
0% {
-webkit-box-shadow: 0 0 0 0 rgba(0, 115, 207, .9);
}
70% {
-webkit-box-shadow: 0 0 0 10px rgba(0, 115, 207, 0);
}
100% {
-webkit-box-shadow: 0 0 0 0 rgba(0, 115, 207, 0);
}
}
@keyframes pulse-special {
0% {
-moz-box-shadow: 0 0 0 0 rgba(0, 115, 207, .9);
box-shadow: 0 0 0 0 rgba(0, 115, 207, .9);
}
70% {
-moz-box-shadow: 0 0 0 10px rgba(0, 115, 207, 0);
box-shadow: 0 0 0 10px rgba(0, 115, 207, 0);
}
100% {
-moz-box-shadow: 0 0 0 0 rgba(0, 115, 207, 0);
box-shadow: 0 0 0 0 rgba(0, 115, 207, 0);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="eight-box">
<div class="fig-8 col-1 pos-1">1</div>
<div class="fig-8 col-2 pos-2">2</div>
<div class="fig-8 col-3 pos-3">3</div>
<div class="fig-8 col-4 pos-4">4</div>
<div class="fig-8 col-5 pos-5">5</div>
<div class="fig-8 col-6 pos-6">6</div>
<div class="fig-8 col-7 pos-7">7</div>
<div class="fig-8 col-8 pos-8">8</div>
<div class="fig-8 col-9 pos-9">9</div>
<div class="fig-8 col-10 pos-10">10</div>
<div class="fig-8 col-11 pos-11">11</div>
<div class="fig-8 col-12 pos-12">12</div>
<div class="fig-8 col-13 pos-13">13</div>
<div class="fig-8 col-14 pos-14">14</div>
<div class="fig-8 col-15 pos-15">15</div>
<div class="smile smile-1">: )</div>
<div class="smile smile-2">: )</div>
</div>
你有什么建议?
最佳答案
我不确定是否理解,但是您只需要一个动画即可将它们移到所有元素上。如:
div {
animation: moveDown 1s;
}
@keyframes moveDown {
from { margin-top: -5px }
to { margin-top: 0 }
}
<div>Some text</div>
关于javascript - 如何在页面加载时制作动画,以将一些元素重新排列到其原始位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44936567/