Die Idee ist, die Wörter in der Show zu zeigen .description div entsprechend der Scanlichtposition. Wenn möglich, möchte ich nur CSS verwenden, um diesen Effekt zu erzielen, und JavaScript nur verwenden, um den Scan zu verschieben (der später zu einer CSS-Animation wird). Ich habe versucht, einige Pseudoelemente zu verwenden, aber es hat nicht gut funktioniert. Hier ist ein Beispiel dafür, wie diese Animation funktionieren sollte.
doğukan
Sie können transparenten Text mit Hintergrund mit Farbverlauf verwenden. ich benutzte background-attachment: fixed und eine CSS-Variable zur Steuerung der Hintergrundposition.
Sie können die Hintergrundgröße (in diesem Beispiel 500 Pixel) erhöhen, um die Übergangsglättung zu verbessern.
Lorem ipsum dolor sit amet, <span class="hidden">consectetur</span> adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <span class="hidden">Excepteur sint</span> occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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 ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit
in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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 ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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 ullamco laboris nisi ut aliquip ex ea <span class="hidden">commodo</span> consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 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
ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim
id est laborum.
Temani Afif
Hier ist eine Idee, die Transformation verwendet, um eine bessere Leistung zu erzielen
<div class="banner">
Just <span>trying</span> something <span>cool</span>
</div>
Rickard Elimä
Cooler Leuchtstab!
Ich gehe davon aus, dass dies für ein Logo ist und dass der Text weiterhin angezeigt werden soll, wenn der Leuchtstab den Text passiert hat.
Ich würde ein Pseudo-Element auf dem Beschreibungselement verwenden, es darauf platzieren und einen Verlaufshintergrund verwenden, der von transparent zu der dunkelblauen Hintergrundfarbe geht. Durch die Verwendung eines Farbverlaufs können Sie eine schöne Einblendung des Textes erzielen.
Ich würde dann den Startpunkt der dunklen Hintergrundfarbe mit einer CSS-Variablen festlegen, die ich über Ihre onmousemove-Methode aktualisiere.
Der Code berücksichtigt keine unterschiedlichen Bildschirmgrößen, daher müssen Sie wahrscheinlich Pixel in Prozent umwandeln, wenn Ihre Animation reaktionsschnell sein soll.
Ich habe auch Ihre Klassen auf id geändert. Ich denke, es ist angemessener, durch die Verwendung von IDs zu zeigen, dass das Element irgendwie von Javascript verwendet wird. Es ist auch einfacher, die Elemente an Variablen zu binden.
Ich habe gerade ClipPath ausprobiert. Technisch tut es, was Sie brauchen, aber die Leistung des animierten clipPath ist ziemlich schlecht, wenn es mit dem Glow-Effekt kombiniert wird (aber viel besser ohne!). Möglicherweise würde es dies verbessern, das Leuchten aus so etwas wie einem Bild anstelle eines Kastenschattens aufzubauen. (ebenso wie die Reduzierung der Größe des äußersten Kastenschattens)
Diese Lösung verwendet rechts neben dem Scan ein Cover mit der gleichen Hintergrundfarbe wie das Banner. Das Cover bewegt sich mit dem Scan, wenn sich der Scan also nach rechts bewegt, wird der Text auf der linken Seite angezeigt. Es funktioniert, indem Sie in dieser Demo darauf klicken, aber Sie können es in JavaScript starten, wie es für Sie am besten ist.
Vollständiges Ein-/Ausblenden beim Mausklick scheint nicht der gewünschten Ausgabe von OP zum Verschieben der Leiste/Ausblenden des Textes basierend auf der Cursorposition zu entsprechen.
– TylerH
12. November 2020 um 19:52 Uhr
Einverstanden. Das ist genau das, was ich mit “Scannen” und “Verwenden Sie JavaScript nur zum Verschieben des Scans” gemeint habe.
– sbgib
13. November 2020 um 8:00 Uhr
Scheint ein wenig knifflig zu sein. Die erste Lösung, die mir in den Sinn kommt, ist vielleicht die Verwendung eines linearen Farbverlaufs mit einem dynamischen „Haltepunkt“ an der Position des Lichtbalkens. Der Farbverlauf geht von dunkel -> transparent (Position heller Balken) -> dunkel. Der Code sieht vielleicht so aus:
.description-overlay {
/*
Replace 50% with the position of the light bar. Get brighter and more
transparent as you approach the position of the light bar.
*/
background: linear-gradient(to right, #000, 50% hsla(0, 0%, 100%, 0.2), #000);
}
Ich bin mir nicht sicher, ob dies funktionieren wird, und es müsste wahrscheinlich irgendwo ein Box-Schatten eingefügt werden, aber vielleicht gibt es Ihnen einige Ideen.
Vollständiges Ein-/Ausblenden beim Mausklick scheint nicht der gewünschten Ausgabe von OP zum Verschieben der Leiste/Ausblenden des Textes basierend auf der Cursorposition zu entsprechen.
– TylerH
12. November 2020 um 19:52 Uhr
Einverstanden. Das ist genau das, was ich mit “Scannen” und “Verwenden Sie JavaScript nur zum Verschieben des Scans” gemeint habe.
– sbgib
13. November 2020 um 8:00 Uhr
13297700cookie-checkWie man diesen Beleuchtungseffekt mit CSS machtyes