As a student, I'm actually making my own portfolio.
For the header, I tried to create a sky effect, with an image scrolling horizontally. I used CSS and keyframes, the problem I have is that when the image come to the end, it "resets" and doesn't continue to scroll smoothly.
Is there any way to make it continue "indefinitely" ? (I changed the duration to 5s just to not make you wait the 40s :p)
@keyframes animatedBackground {
from { background-position: 0 0; }
to { background-position: 100% 0; }
}
#header-top {
height: 190px;
background-image: url('http://image.noelshack.com/fichiers/2016/46/1479595480-clouds.png');
background-repeat: repeat-x;
animation: animatedBackground 5s linear infinite;
line-height: 400px;
}
<div id="header-top">
</div>
To enable horizontal scrolling, we can use the CSS property overflow-x. If we assign the value scroll to the overflow-x property of the container element, the browser will hide horizontally overflowing content and make it accessible via horizontal scrolling.
The @keyframes CSS at-rule controls the intermediate steps in a CSS animation sequence by defining styles for keyframes (or waypoints) along the animation sequence. This gives more control over the intermediate steps of the animation sequence than transitions.
Basic Horizontal Scroll Box To make a scroll box with a horizontal scroll, you need to use the overflow-x property. Specifically, you need to use this code: overflow-x:scroll; . This tells your browser to create scroll bars on the x (horizontal) axis, whenever the contents of the container is too wide.
I just cropped your image so the end lines up with the start. Then, I modified the animatedBackground keyframes to end at the opposite end of the image.
Cropped image:
How it works
@keyframes animatedBackground {
from {
left: 0px;
}
90% {
left: -562px;
}
100%{left: 0px;}
}
#header-top {
height: 190px;
width: 562px;
overflow-x: auto;
overflow-y: hidden;
}
* {
margin: 0;
padding: 0;
font-family:sans-serif;
}
.inner-cont {
width: 1126px;
position: relative;
animation: animatedBackground 4s linear infinite;
}
img{
border-right:1px solid black;
box-sizing:border-box;
}
<div id="header-top">
<div class='inner-cont'>
<img src="https://archive.org/download/clouds-tiled/clouds-tiled.png" /><img src="https://archive.org/download/clouds-tiled/clouds-tiled.png" />
</div>
</div>
<h3>^ How it actually works(almost) ^</h3>
<h4>The spinback doesn't actually get animated, but it happens <br/>(The line separates the looped images from each other)</h4>
Final result
@keyframes animatedBackground {
from { background-position: 0px 0; }
to { background-position: -562px 0; }
}
#header-top {
height: 190px;
width:100%;
background-image: url('https://archive.org/download/clouds-tiled/clouds-tiled.png');
background-repeat: repeat-x;
animation: animatedBackground 2s linear infinite;
line-height: 400px;
}
<div id="header-top">
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With