Ich habe nach einer Möglichkeit gesucht, nach unten zu scrollen, wenn ich auf eine Schaltfläche klicke, die sich oben auf einer Seite befindet, und zwar nur mit CSS3.
Also habe ich dieses Tutorial gefunden: http://tympanus.net/codrops/2012/06/12/css-only-responsive-layout-with-smooth-transitions/
Demo: http://tympanus.net/Tutorials/SmoothTransitionsResponsiveLayout/
Aber es ist ein bisschen zu fortgeschritten für meine Bedürfnisse, da ich nur möchte, dass der Browser mit einem Klick auf eine Schaltfläche oben auf der Seite nach unten scrollt, also habe ich mich gefragt: Ist es möglich, diese CSS-Bildläufe nur ohne die Eingabeschaltflächen durchzuführen? mit einem Ankertag?
HTML sieht so aus: <a href="#" class="button">Learn more</a>
Ich habe bereits einige CSS, die ich beim Klicken auf die Schaltfläche auslösen muss:
/* 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;
}
}
quelle
<div parallax="moveDown">...</div>
Und es bewegt sich nach unten, wenn Sie nach unten und nach oben scrollen, während Sie nach oben scrollen ...Antworten:
Sie können dies mit Ankertags mithilfe des
:target
Pseudo-Selektors css3 tun. Dieser Selektor wird ausgelöst, wenn das Element mit derselben ID wie der Hash der aktuellen URL eine Übereinstimmung erhält. BeispielWenn wir dies wissen, können wir diese Technik mit der Verwendung von Proximity-Selektoren wie "+" und "~" kombinieren, um jedes andere Element über das Zielelement auszuwählen, das mit dem Hash der aktuellen URL übereinstimmt. Ein Beispiel dafür wäre so etwas wie das, was Sie fragen .
quelle
backface-visibility
in der späteren demo? Wirheader { position: fixed; left: 0; top: 0; z-index: 10; }
des CSS Ihrer Geige wird sichergestellt, dass die Links immer anklickbar sind, da durch Klicken auf Nummer 2 die Nummer 1 im Moment nicht mehr angeklickt werden kann.Verwenden Sie Ankerlinks und die
scroll-behavior
Eigenschaft ( MDN-Referenz ) für den Bildlaufcontainer:Browser - Unterstützung : Firefox 36+, 61+ Chrome (daher auch Edge - 79+) und Opera 48+.
Intenet Explorer, Nicht-Chrom Rand und (bisher) Safari nicht unterstützt
scroll-behavior
und einfach „Sprung“ auf das Link - Ziel.Anwendungsbeispiel:
<head> <style type="text/css"> html { scroll-behavior: smooth; } </style> </head> <body id="body"> <a href="#foo">Go to foo!</a> <!-- Some content --> <div id="foo">That's foo.</div> <a href="#body">Back to top</a> </body>
Hier ist eine Geige .
Und hier ist auch eine Geige mit horizontalem und vertikalem Scrollen.
quelle
Sie können mein Skript von CodePen verwenden, indem Sie einfach den gesamten Inhalt in einen .levit-Container-DIV einschließen.
~function () { function Smooth () { this.$container = document.querySelector('.levit-container'); this.$placeholder = document.createElement('div'); } Smooth.prototype.init = function () { var instance = this; setContainer.call(instance); setPlaceholder.call(instance); bindEvents.call(instance); } function bindEvents () { window.addEventListener('scroll', handleScroll.bind(this), false); } function setContainer () { var style = this.$container.style; style.position = 'fixed'; style.width = '100%'; style.top = '0'; style.left = '0'; style.transition = '0.5s ease-out'; } function setPlaceholder () { var instance = this, $container = instance.$container, $placeholder = instance.$placeholder; $placeholder.setAttribute('class', 'levit-placeholder'); $placeholder.style.height = $container.offsetHeight + 'px'; document.body.insertBefore($placeholder, $container); } function handleScroll () { this.$container.style.transform = 'translateZ(0) translateY(' + (window.scrollY * (- 1)) + 'px)'; } var smooth = new Smooth(); smooth.init(); }();
https://codepen.io/acauamontiel/pen/zxxebb?editors=0010
quelle
Und für Webkit-fähige Browser habe ich gute Ergebnisse erzielt mit:
.myElement { -webkit-overflow-scrolling: touch; scroll-behavior: smooth; // Added in from answer from Felix overflow-x: scroll; }
Dadurch verhält sich das Scrollen viel mehr wie das Standardverhalten des Browsers - zumindest funktioniert es gut auf dem iPhone, auf dem wir getestet haben!
Hoffentlich hilft das,
Ed
quelle
overflow-x: auto
ist es in den meisten Fällen besser, weil es nur die Bildlaufleisten anzeigt, wenn es wirklich etwas zu scrollen gibt (scroll
würde immer die Balken anzeigen).