Изменение анимации css с абсолютного на относительное
Я нашел эту волновую анимацию " https://codepen.io/tedmcdo/pen/PqxKXg" и хотел бы использовать ее над своим заголовком на своей странице, но проблема в том, что анимация написана для абсолютных значений, но я бы нужна относительная позиция, так как анимация должна оставаться в верхней части страницы.
Я пытался изменить тип позиции на относительный, но как бы я это ни делал, я ломаю анимацию, если кто-то может мне помочь, я буду счастлив ^^
Спасибо всем за ваше время.
вот CSS:
html, body { height: 100%; }
body {
background:radial-gradient(ellipse at center, rgba(255,254,234,1) 0%, rgba(255,254,234,1) 35%, rgba(254,208,149,1) 100%);
overflow: hidden;
}
.ocean {
height: 5%;
width:100%;
position:absolute;
bottom:0;
left:0;
background: #015871;
}
.wave {
background: url(http://tedmcdo.com/labs/wave.svg) repeat-x;
position: absolute;
top: -198px;
width: 6400px;
height: 198px;
animation: wave 7s cubic-bezier( 0.36, 0.45, 0.63, 0.53) infinite;
transform: translate3d(0, 0, 0);
}
.wave:nth-of-type(2) {
top: -175px;
animation: wave 7s cubic-bezier( 0.36, 0.45, 0.63, 0.53) -.125s infinite, swell 7s ease -1.25s infinite;
opacity: 1;
}
@keyframes wave {
0% {
margin-left: 0;
}
100% {
margin-left: -1600px;
}
}
@keyframes swell {
0%, 100% {
transform: translate3d(0,-25px,0);
}
50% {
transform: translate3d(0,5px,0);
}
}
3 ответа
Не совсем уверен, что вы подразумеваете под этим:
...need a relative position since the animation should stay on top of the page.
... но я отвлекся.
Добавить содержащий div с относительным позиционированием
<div class="oceanContainer">
<div class="ocean">
<div class="wave"></div>
<div class="wave"></div>
</div>
</div>
с CSS
.oceanContainer {
position: relative;
height: 100% /* you can play around with this for your header */
}
Возможно, вам придется настроить некоторые другие CSS, хотя
.ocean {
height: 5%; /* as above, adjust to %, px, (r)em's to your liking */
bottom: 0;
}
.wave {
bottom: 0; /* change top to bottom */
}
.wave:nth-of-type(2) {
bottom: 0; /* change top to bottom */
}
Поместите его в относительный div(или другой контейнер), и.ocean будет абсолютным в относительном контейнере. Это может решить вашу проблему.
<div style="position: relative">
<div class="ocean" style="position: absolute"></div>
</div>
Спасибо вам, ребята,
с вашей помощью я получил это далеко: https://codepen.io/anon/pen/GEXvYX и это прекрасно работает!
Но я снова немного застрял ^^ Как бы я масштабировал его для смартфонов, не нарушая пропорции волны?
css здесь:
.the-body {
height: 300px;
width:200px;
}
.wave-conatainer {
height: 194px;
width: 100%;
bottom: 0;
position:absolute;
padding-top: 15px;
padding-bottom: 80px;
overflow: hidden;
}
.ocean {
height: 91px;
width: 100%;
position:absolute;
bottom: 0;
background-color: #015871;
}
.wave {
height: 100%;
width: 3000px;
position:absolute;
background: url(http://tedmcdo.com/labs/wave.svg) repeat-x;
animation: wave 32s cubic-bezier(0.53, 0.63,0.45, 0.36) infinite;
transform: translate3d(0, 0, 0);
opacity: 0.8;
}
.wave:nth-of-type(2) {
animation: wave 32s cubic-bezier( 0.36, 0.45, 0.63, 0.53) -.125s infinite, swell 16s ease -1.25s infinite;
opacity: 0.8;
}
@keyframes wave {
0% {
margin-left: 0;
}
100% {
margin-left: -1600px;
}
}
@keyframes swell {
0%, 100% {
transform: translate3d(0,-15px,0);
}
50% {
transform: translate3d(0,10px,0);
}
}