I have been looking for a way to scroll down when clicking on a button that is located on top of a page using CSS3 only.
So I've found this tutorial: http://tympanus.net/codrops/2012/06/12/css-only-responsive-layout-with-smooth-transitions/
Demo: http://tympanus.net/Tutorials/SmoothTransitionsResponsiveLayout/
But it's a bit too advanced for my needs since I just want the browser to scroll down on a click on one button located on top of the page, so I was wondering: is it possible to do those CSS scrolls without the input buttons, just with an anchor tag?
HTML looks like this: <a href="#" class="button">Learn more</a>
I have already some CSS which I need to trigger on button click:
/* Button animation tryout. */
.animate {
animation: moveDown 0.6s ease-in-out 0.2s backwards;
}
@keyframes moveDown{
0% {
transform: translateY(-40px);
opacity: 0;
}
100% {
transform: translateY(0px);
opacity: 1;
}
}
You can do it with anchor tags using css3
:target
pseudo-selector, this selector is going to be triggered when the element with the same id as the hash of the current URL get an match. ExampleKnowing this, we can combine this technique with the use of proximity selectors like "+" and "~" to select any other element through the target element who id get match with the hash of the current url. An example of this would be something like what you are asking.
Well, if you don't mind supporting not all major browsers (only Firefox 36+, Chrome 61+ and Opera 48+), use anchor links and this single property for the scrolling container:
See the MDN reference.
Use it like this:
Here's a Fiddle.
And here's also a Fiddle with both horizontal and vertical scrolling.
You can use my script from CodePen by just wrapping all the content within a .levit-container DIV.
https://codepen.io/acauamontiel/pen/zxxebb?editors=0010
And for webkit enabled browsers I've had good results with:
This makes scrolling behave much more like the standard browser behavior - at least it works well on the iPhone we were testing on!
Hope that helps,
Ed