Auto scrolling with CSS

In my website [based on wordpress] , I have a project slider (technically image with some text) . But that slider is not auto scrolling , there is a button for sliding left and right .

I want to remove that button and make it sliding auto . I don't want use any javascript . I want to accomplish with CSS . Is it possible if yes then how ?

If it is not possible what is the shortest possible solution to do this , Here is my working site

6

3 Answers

1.) You can't initiate DOM actions with CSS or pure HTML. You always need a manipulating language (like JavaScript)

2.) You can remove the buttons by overwriting the current CSS and adjust the visibility or display tag to render them away or (placeholding) invisible.

In the end you really need JavaScript for this to trigger dynamic hiding and to make the automatic slide happen with setIntervals.

Edit:

This might be something for you to work with animating the slider:

#container { height: 200px; width: 800px; border: 1px solid #333; overflow: hidden; margin: 25px auto;
}
#box { background: orange; height: 180px; width: 400px; margin: 10px -400px; -webkit-animation-name: move; -webkit-animation-duration: 4s; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: right; -webkit-animation-timing-function: linear;
}
#box:hover { -webkit-animation-play-state: paused;
}
@-webkit-keyframes move { 0% { margin-left: -400px; } 100% { margin-left: 800px; }
}
<!DOCTYPE html>
<html lang="en">
<head> <meta charset="utf-8"> <title>HTML</title> <link rel="stylesheet" href="main2.css" type="text/css" />
</head>
<body> <div> <div>as</div> </div>
</body>
</html>

Result

This is the WebKit-only version. These are the equivalents for other browsers:

The @ keyframes:

@-moz-keyframes move {
@-o-keyframes move {
@keyframes move {

Inside #box (only one property shown as example):

-moz-animation-name: move;
-o-animation-name: move;
animation-name: move;
4

Here is an example (Fiddle) of using animations. You could apply this to your .post-list:

.post-list { animation: slide infinite 3s alternate;
}
@keyframes slide { 0% { margin-left: 0px; } 50% { margin-left: -100px; } 100% { margin-left: -200px; }
}

To disable the animation on hover, use:

.post-list:hover { animation-play-state: paused;
}

Don't forget the vendor prefixes (-webkit-... and so on) like in Allendars answer.

But of course you'll have to play around. This should just be a hint of how it could work.

5

Here is an example for auto scroll in both limited and unlimited element width:

/*use this js if your element width is unlimited an you want to scroll in a
constant speed. else, you dont need this js code*/
var elemWidth = document.getElementById('scroll-element').offsetWidth;
var time = elemWidth/80; /* 80 = scrolling speed (44px/s)*/
document.getElementById('scroll-element').style.cssText = "animation: scroll "+time+"s linear infinite;"
.scroll-box{ white-space: nowrap; font-size: 1.1em; overflow: hidden; padding: 20px 0; background-color: green;
}
.scroll-container{ width: fit-content; direction: rtl; /*if you want to scroll left to right set dir to ltr */
}
#scroll-element{ background-color: yellow; padding: 10px;
}
@-webkit-keyframes scroll{ 0% { margin-right: 0%; /*if you want to scroll left to right set margin-left*/ } 100%{ margin-right: 100%;/*if you want to scroll left to right set margin-left*/ }
}
<!DOCTYPE html> <html lang="en"> <head>	<meta charset="utf-8">	<title>HTML</title>	<link rel="stylesheet" href="main2.css" type="text/css" /> </head> <body> <div> <div> <span> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation </span> </div> </div> </body> </html>

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like